|
@@ -494,16 +494,17 @@ def get_nav_for_return_calculation(entity_type, freq, json_query, pre_nav_incld=
|
|
|
* 取基金经理/公司从某日期后的所有净值及前值
|
|
|
*
|
|
|
* @param entity_type <STRING>: PL, CO
|
|
|
- * @param pre_nav_incld <INT>: 0- no pre_nav; 1- pre_nav only; 2- pre_nav + afters
|
|
|
* @param json_query <JSON>: [{entity_id:xxx, curve_type:1, strategy:0, end_date: yyyy-mm}]
|
|
|
+ * @param pre_nav_incld <INT>: 0- no pre_nav; 1- pre_nav only; 2- pre_nav + afters
|
|
|
+ * @param freq <STRING>: m- monthly, w-weekly
|
|
|
*
|
|
|
- * Example: get_mc_nav_for_return_calculation('PL', '[{"entity_id":"PL000000NS", "curve_type":"4", "strategy":"0", "end_date":"2024-07"}]', 2);
|
|
|
- * get_mc_nav_for_return_calculation('CO', '[{"entity_id":"CO00000017", "curve_type":"4", "strategy":"0", "end_date":"2024-07"}]', 1);
|
|
|
+ * Example: get_mc_nav_for_return_calculation('PL', '[{"entity_id":"PL000000NS", "curve_type":"4", "strategy":"0", "effective_date":"2024-07"}]', 2);
|
|
|
+ * get_mc_nav_for_return_calculation('CO', '[{"entity_id":"CO00000017", "curve_type":"4", "strategy":"0", "effective_date":"202406"}]', 1, 'w');
|
|
|
*
|
|
|
*/
|
|
|
-def get_mc_nav_for_return_calculation(entity_type, json_query, pre_nav_incld=2) {
|
|
|
+def get_mc_nav_for_return_calculation(entity_type, json_query, pre_nav_incld=2, freq='m') {
|
|
|
|
|
|
- s_query = "CALL pfdb.sp_get_mc_nav_for_return_cal('" + entity_type + "', " + pre_nav_incld + ", '" + json_query + "')";
|
|
|
+ s_query = "CALL pfdb.sp_get_mc_nav_for_return_cal('" + entity_type + "', '" + freq + "', " + pre_nav_incld + ", '" + json_query + "')";
|
|
|
|
|
|
conn = connect_mysql();
|
|
|
|
|
@@ -1077,16 +1078,16 @@ def get_category_avg_weekly_return(category_type, begin_day, trim_pct=5, min_cnt
|
|
|
* 取基金经理或公司月收益
|
|
|
*
|
|
|
*
|
|
|
- * Example: get_mc_monthly_return('manager', '[{"entity_id": "PL000000NS","end_date": "2024-07"},{"entity_id": "PL00000ICF","end_date": "2023-12"}]', 0, 1, true);
|
|
|
- * get_mc_monthly_return('company', '[{"entity_id": "CO00000017","end_date": "2024-07"},{"entity_id": "CO0001003W","end_date": "2023-06"}]', 0, 1, true);
|
|
|
+ * Example: get_mc_average_return('PL', 'm', '[{"entity_id": "PL000000NS","effective_date": "2024-07"},{"entity_id": "PL00000ICF","effective_date": "2023-12"}]', 0, 1, true);
|
|
|
+ * get_mc_average_return('CO', 'w', '[{"entity_id": "CO00000017","effective_date": "202407"},{"entity_id": "CO0001003W","effective_date": "202306"}]', 0, 1, true);
|
|
|
*/
|
|
|
-def get_mc_monthly_return(entity_type, json_query, trim_pct=0, min_cnt=1, isFromMySQL=true) {
|
|
|
+def get_mc_average_return(entity_type, freq, json_query, trim_pct=0, min_cnt=1, isFromMySQL=true) {
|
|
|
|
|
|
t = null;
|
|
|
|
|
|
if(isFromMySQL == true) {
|
|
|
|
|
|
- s_query = "CALL pfdb.sp_get_mc_avg_monthly_return('" + entity_type + "', '" + json_query + "', " + trim_pct + ", " + min_cnt + ")";
|
|
|
+ s_query = "CALL pfdb.sp_get_mc_avg_return('" + entity_type + "', '" + freq + "', '" + json_query + "', " + trim_pct + ", " + min_cnt + ")";
|
|
|
|
|
|
conn = connect_mysql();
|
|
|
|
|
@@ -1105,28 +1106,39 @@ def get_mc_monthly_return(entity_type, json_query, trim_pct=0, min_cnt=1, isFrom
|
|
|
*
|
|
|
* NOTE: 月收益表 isvalid = 0 的记录也会被返回
|
|
|
*
|
|
|
- * Example: get_company_list_by_fund_updatetime(2024.11.14 11:10:00, true);
|
|
|
- *
|
|
|
+ * Example: get_company_list_by_fund_updatetime(2024.11.14 11:10:00, 'm', true);
|
|
|
+ * get_company_list_by_fund_updatetime(2024.12.24 11:10:00, 'w', true);
|
|
|
*/
|
|
|
-def get_company_list_by_fund_updatetime(updatetime, isFromMySQL=true) {
|
|
|
+def get_company_list_by_fund_updatetime(updatetime, freq='m', isFromMySQL=true) {
|
|
|
|
|
|
|
|
|
if(isFromMySQL == true) {
|
|
|
|
|
|
- s_query = "SELECT ci.company_id, MIN(fp.end_date) AS end_date
|
|
|
- FROM mfdb.company_information ci
|
|
|
- INNER JOIN mfdb.fund_information fi ON ci.company_id = fi.advisor_id
|
|
|
- INNER JOIN mfdb.fund_performance fp ON fi.fund_id = fp.fund_id
|
|
|
- WHERE ci.isvalid = 1
|
|
|
- AND fi.isvalid = 1
|
|
|
- AND fp.updatetime >= '" + updatetime + "'
|
|
|
- GROUP BY ci.company_id;";
|
|
|
-
|
|
|
- conn = connect_mysql()
|
|
|
+ if(freq == 'm') {
|
|
|
+ s_query = "SELECT ci.company_id, MIN(fp.end_date) AS effective_date
|
|
|
+ FROM mfdb.company_information ci
|
|
|
+ INNER JOIN mfdb.fund_information fi ON ci.company_id = fi.advisor_id
|
|
|
+ INNER JOIN mfdb.fund_performance fp ON fi.fund_id = fp.fund_id
|
|
|
+ WHERE ci.isvalid = 1
|
|
|
+ AND fi.isvalid = 1
|
|
|
+ AND fp.updatetime >= '" + updatetime + "'
|
|
|
+ GROUP BY ci.company_id;";
|
|
|
+ } else {
|
|
|
+ s_query = "SELECT ci.company_id, MIN(fp.year_week) AS effective_date
|
|
|
+ FROM mfdb.company_information ci
|
|
|
+ INNER JOIN mfdb.fund_information fi ON ci.company_id = fi.advisor_id
|
|
|
+ INNER JOIN mfdb.fund_performance_weekly fp ON fi.fund_id = fp.fund_id
|
|
|
+ WHERE ci.isvalid = 1
|
|
|
+ AND fi.isvalid = 1
|
|
|
+ AND fp.updatetime >= '" + updatetime + "'
|
|
|
+ GROUP BY ci.company_id;";
|
|
|
+ }
|
|
|
+
|
|
|
+ conn = connect_mysql();
|
|
|
|
|
|
- t = odbc::query(conn, s_query)
|
|
|
+ t = odbc::query(conn, s_query);
|
|
|
|
|
|
- conn.close()
|
|
|
+ conn.close();
|
|
|
|
|
|
} else {
|
|
|
|
|
@@ -1142,26 +1154,41 @@ def get_company_list_by_fund_updatetime(updatetime, isFromMySQL=true) {
|
|
|
*
|
|
|
* NOTE: 月收益表 isvalid = 0 的记录也会被返回
|
|
|
*
|
|
|
- * Example: get_manager_list_by_fund_updatetime(2024.11.01, true);
|
|
|
+ * Example: get_manager_list_by_fund_updatetime(2024.11.01, 'm', true);
|
|
|
+ * get_manager_list_by_fund_updatetime(2024.12.12, 'w', true);
|
|
|
*
|
|
|
*/
|
|
|
-def get_manager_list_by_fund_updatetime(updatetime, isFromMySQL=true) {
|
|
|
+def get_manager_list_by_fund_updatetime(updatetime, freq='m', isFromMySQL=true) {
|
|
|
|
|
|
if(isFromMySQL == true) {
|
|
|
|
|
|
- s_query = "SELECT mi.personnel_id AS manager_id, MIN(fp.end_date) AS end_date
|
|
|
- FROM mfdb.personnel_information mi
|
|
|
- INNER JOIN mfdb.fund_manager_mapping fmp ON mi.personnel_id = fmp.fund_manager_id
|
|
|
- INNER JOIN mfdb.fund_information fi ON fmp.fund_id = fi.fund_id
|
|
|
- INNER JOIN mfdb.fund_performance fp ON fi.fund_id = fp.fund_id
|
|
|
- WHERE mi.isvalid = 1
|
|
|
- AND fmp.isvalid = 1
|
|
|
- AND fi.isvalid = 1
|
|
|
- AND fp.updatetime >= '" + updatetime + "'
|
|
|
- AND fp.end_date <= DATE_FORMAT(IFNULL(fmp.management_end_date, CURRENT_DATE), '%y-%m')
|
|
|
- GROUP BY mi.personnel_id;";
|
|
|
+ if(freq == 'm') {
|
|
|
+ s_query = "SELECT mi.personnel_id AS manager_id, MIN(fp.end_date) AS effective_date
|
|
|
+ FROM mfdb.personnel_information mi
|
|
|
+ INNER JOIN mfdb.fund_manager_mapping fmp ON mi.personnel_id = fmp.fund_manager_id
|
|
|
+ INNER JOIN mfdb.fund_information fi ON fmp.fund_id = fi.fund_id
|
|
|
+ INNER JOIN mfdb.fund_performance fp ON fi.fund_id = fp.fund_id
|
|
|
+ WHERE mi.isvalid = 1
|
|
|
+ AND fmp.isvalid = 1
|
|
|
+ AND fi.isvalid = 1
|
|
|
+ AND fp.updatetime >= '" + updatetime + "'
|
|
|
+ AND fp.price_date <= IFNULL(fmp.management_end_date, CURRENT_DATE)
|
|
|
+ GROUP BY mi.personnel_id;";
|
|
|
+ } else {
|
|
|
+ s_query = "SELECT mi.personnel_id AS manager_id, MIN(fp.year_week) AS effective_date
|
|
|
+ FROM mfdb.personnel_information mi
|
|
|
+ INNER JOIN mfdb.fund_manager_mapping fmp ON mi.personnel_id = fmp.fund_manager_id
|
|
|
+ INNER JOIN mfdb.fund_information fi ON fmp.fund_id = fi.fund_id
|
|
|
+ INNER JOIN mfdb.fund_performance_weekly fp ON fi.fund_id = fp.fund_id
|
|
|
+ WHERE mi.isvalid = 1
|
|
|
+ AND fmp.isvalid = 1
|
|
|
+ AND fi.isvalid = 1
|
|
|
+ AND fp.updatetime >= '" + updatetime + "'
|
|
|
+ AND fp.price_date <= IFNULL(fmp.management_end_date, CURRENT_DATE)
|
|
|
+ GROUP BY mi.personnel_id;";
|
|
|
+ }
|
|
|
|
|
|
- conn = connect_mysql();
|
|
|
+ conn = connect_mysql();;
|
|
|
|
|
|
t = odbc::query(conn, s_query);
|
|
|
|