Sample_cal_indicators.dos 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. login(`admin, `123456)
  2. loadPlugin("ODBC")
  3. clearCachedModules()
  4. use fundit::fundCalculator
  5. use fundit::dataPuller
  6. use fundit::returnCalculator
  7. use fundit::indicatorCalculator
  8. end_day = 2024.06.28
  9. //end_day = today()
  10. bmk_ret = SELECT fund_id, temporalParse(end_date, 'yyyy-MM') AS end_date, ret FROM get_fund_monthly_ret("'IN00000008'", 1990.01.01, end_day, true);
  11. risk_free_rate = SELECT fund_id, temporalParse(end_date, 'yyyy-MM') AS end_date, ret FROM get_risk_free_rate("'IN0000000M'", 1990.01.01, end_day);
  12. /* TEST CASE 1 */
  13. // fund_ids = "'HF000004KN','HF000103EU','HF00018WXG'";
  14. /* TEST CASE 2 */
  15. tb_updated_funds = get_fund_list_by_nav_updatetime(null, 2024.07.19T10:00:00);
  16. // take 1000 funds for testing
  17. fund_ids = "'" + tb_updated_funds.fund_id[0:1000].concat("','") + "'";
  18. tb_ret = SELECT * FROM cal_hedge_fund_returns(fund_ids, true) WHERE price_date <= end_day;
  19. tb_ret.rename!(['fund_id', 'cumulative_nav'], ['entity_id', 'nav']);
  20. // since inception
  21. r_incep = cal_indicators(tb_ret, bmk_ret, risk_free_rate, 'm');
  22. // ytd
  23. tb_ret_ytd = SELECT * FROM tb_ret WHERE end_date >= end_day.yearBegin().month();
  24. r_ytd = cal_indicators(tb_ret_ytd, bmk_ret, risk_free_rate, 'm');
  25. // trailing 6m
  26. tb_ret_6m = SELECT * FROM tb_ret WHERE end_date > end_day.month()-6;
  27. r_6m = cal_indicators(tb_ret_6m, bmk_ret, risk_free_rate, 'm');
  28. // trailing 1y
  29. tb_ret_1y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-12;
  30. r_1y = cal_indicators(tb_ret_1y, bmk_ret, risk_free_rate, 'm');
  31. // trailing 2y
  32. tb_ret_2y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-24;
  33. r_2y = cal_indicators(tb_ret_2y, bmk_ret, risk_free_rate, 'm');
  34. // trailing 3y
  35. tb_ret_3y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-36;
  36. r_3y = cal_indicators(tb_ret_3y, bmk_ret, risk_free_rate, 'm');
  37. // trailing 4y
  38. tb_ret_4y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-48;
  39. r_4y = cal_indicators(tb_ret_4y, bmk_ret, risk_free_rate, 'm');
  40. // trailing 5y
  41. tb_ret_5y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-60;
  42. r_5y = cal_indicators(tb_ret_5y, bmk_ret, risk_free_rate, 'm');
  43. // trailing 10y
  44. tb_ret_10y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-120;
  45. r_10y = cal_indicators(tb_ret_10y, bmk_ret, risk_free_rate, 'm');