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');