123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- module fundit::task_monthlyPerformance
- use fundit::operationDataPuller;
- use fundit::performanceDataPuller;
- use fundit::indicatorCalculator;
- use fundit::dataSaver;
- use fundit::bfiMatcher;
- use fundit::rankingCalculator;
- def CalEntityRankingTask(entity_type, end_date, isFromMySQL=true) {
- if(!(entity_type in ['MF', 'HF'])) return NULL;
-
- entity_info = get_entity_info(entity_type, NULL);
- v_ranking_tables = cal_indicator_ranking('strategy', entity_type, entity_info, end_date, isFromMySQL);
- save_ranking_tables(entity_type, v_ranking_tables);
- }
- def CalEntityBfiRankingTask(entity_type, end_date, isFromMySQL=true) {
- if(!(entity_type in ['MF', 'HF'])) return NULL;
-
- entity_info = get_entity_info(entity_type, NULL);
- v_ranking_tables = cal_indicator_ranking('bfi', entity_type, entity_info, end_date, isFromMySQL);
-
- save_ranking_tables(entity_type, v_ranking_tables);
- }
- def cal_and_save_relative_ranking(entity_type, benchmark_ranking, entity_ranking, ranking_by, isFromMySQL=true) {
- t_entity_ranking = entity_ranking;
-
- cal_relative_ranking(benchmark_ranking, t_entity_ranking, isFromMySQL);
- t_entity_ranking.rename!('category_id', iif(ranking_by=='bfi', 'factor_id', ranking_by));
- save_relative_ranking_table(entity_type, t_entity_ranking, ranking_by);
-
- }
- def CalRelativeRankingTask(entity_type, entity_ids, end_date, isFromMySQL=true) {
- entity_info = get_entity_info(entity_type, entity_ids);
- if(entity_type == 'PF')
- entity_info = SELECT * FROM entity_info WHERE portfolio_type IN (1, 2)
- v_ranking_by = ['strategy', 'substrategy', 'bfi'];
-
- for(ranking_by in v_ranking_by) {
- if(ranking_by == 'strategy') {
-
- v_category = EXEC DISTINCT strategy FROM entity_info WHERE strategy IS NOT NULL;
- tb_fund_ranking = get_fund_indicator_ranking(NULL, end_date, v_category, isFromMySQL);
- UPDATE tb_fund_ranking SET category_id = strategy$STRING;
-
- } else if(ranking_by == 'substrategy') {
- v_category = EXEC DISTINCT substrategy FROM entity_info WHERE substrategy IS NOT NULL;
- tb_fund_ranking = get_fund_indicator_substrategy_ranking(NULL, end_date, v_category, isFromMySQL);
- UPDATE tb_fund_ranking SET category_id = substrategy$STRING;
-
- } else if(ranking_by == 'bfi') {
- if(entity_ids != NULL || entity_ids != '')
- v_category = EXEC DISTINCT factor_id FROM get_entity_bfi_factors(entity_type, entity_ids, end_date, end_date);
- else
- v_category = NULL;
- tb_fund_ranking = get_fund_bfi_bm_indicator_ranking(NULL, end_date, v_category, isFromMySQL);
- UPDATE tb_fund_ranking SET category_id = factor_id;
- }
- if(tb_fund_ranking.isVoid() || tb_fund_ranking.size() == 0) return;
- entity_ranking = transform_data_for_ranking(entity_type, entity_info, end_date, ranking_by, isFromMySQL);
- cal_and_save_relative_ranking(entity_type, tb_fund_ranking, entity_ranking, ranking_by, isFromMySQL);
- }
-
- }
|