Переглянути джерело

用于代替 Java job 的 indicator 计算

Joey 2 тижнів тому
батько
коміт
5f20b4754c
1 змінених файлів з 73 додано та 0 видалено
  1. 73 0
      codes/Sample_cal_indicators.dos

+ 73 - 0
codes/Sample_cal_indicators.dos

@@ -0,0 +1,73 @@
+login(`admin, `123456)
+loadPlugin("ODBC")
+
+clearCachedModules()
+use fundit::fundCalculator
+use fundit::dataPuller
+use fundit::returnCalculator
+use fundit::indicatorCalculator
+
+
+end_day = 2024.06.28
+//end_day = today()
+
+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); 
+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);
+
+
+
+/* TEST CASE 1  */
+
+// fund_ids = "'HF000004KN','HF000103EU','HF00018WXG'";
+
+/* TEST CASE 2 */
+tb_updated_funds = get_fund_list_by_nav_updatetime(null, 2024.07.19T10:00:00);
+
+// take 1000 funds for testing
+fund_ids = "'" + tb_updated_funds.fund_id[0:1000].concat("','") + "'";
+
+
+
+tb_ret = SELECT * FROM cal_hedge_fund_returns(fund_ids, true) WHERE price_date <= end_day;
+tb_ret.rename!(['fund_id', 'cumulative_nav'], ['entity_id', 'nav']);
+
+
+// since inception
+r_incep = cal_indicators(tb_ret, bmk_ret, risk_free_rate, 'm');
+
+// ytd
+tb_ret_ytd = SELECT * FROM tb_ret WHERE end_date >= end_day.yearBegin().month();
+r_ytd = cal_indicators(tb_ret_ytd, bmk_ret, risk_free_rate, 'm');
+
+// trailing 6m
+tb_ret_6m = SELECT * FROM tb_ret WHERE end_date > end_day.month()-6;
+r_6m = cal_indicators(tb_ret_6m, bmk_ret, risk_free_rate, 'm');
+
+// trailing 1y
+tb_ret_1y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-12;
+r_1y = cal_indicators(tb_ret_1y, bmk_ret, risk_free_rate, 'm');
+
+// trailing 2y
+tb_ret_2y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-24;
+r_2y = cal_indicators(tb_ret_2y, bmk_ret, risk_free_rate, 'm');
+
+// trailing 3y
+tb_ret_3y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-36;
+r_3y = cal_indicators(tb_ret_3y, bmk_ret, risk_free_rate, 'm');
+
+// trailing 4y
+tb_ret_4y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-48;
+r_4y = cal_indicators(tb_ret_4y, bmk_ret, risk_free_rate, 'm');
+
+// trailing 5y
+tb_ret_5y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-60;
+r_5y = cal_indicators(tb_ret_5y, bmk_ret, risk_free_rate, 'm');
+
+// trailing 10y
+tb_ret_10y = SELECT * FROM tb_ret WHERE end_date > end_day.month()-120;
+r_10y = cal_indicators(tb_ret_10y, bmk_ret, risk_free_rate, 'm');
+
+
+
+
+