Beispiel #1
0
_funcs_sub = [
    "con_rise_periods", "con_fall_periods", "VaR", "p_earning_periods", "n_earning_periods", "min_return", "max_return", "mdd_repair_time",
    "mdd_time", "skewness", "kurtosis", "ERVaR"
]

cols_return = cal.format_cols(_funcs_return, _freq, prefix=["index_id", "index_name", "statistic_date"])
cols_risk = cal.format_cols(_funcs_risk, _freq, prefix=["index_id", "index_name", "statistic_date"])
cols_sub = cal.format_cols(_funcs_sub, _freq, prefix=["index_id", "index_name", "statistic_date"])

date_rng = pd.date_range(today - relativedelta(weeks=1), today)
for statistic_date in date_rng:
    result_return = []
    result_risk = []
    result_sub = []

    ids_used = pre.fetch_fids_used(statistic_date=statistic_date, freq=_freq, conn=engine_rd)

    data = pre.ProcessedData(statistic_date, [], _freq)
    bms = {index_id: cal.Benchmark(attr_dict, index_id) for index_id, attr_dict in data.index.items()}
    tbond = cal.Tbond(data.index["y1_treasury_rate"], "y1_treasury_rate")

    for bm_name, bm in bms.items():
        if bm.id == "y1_treasury_rate":
            continue

        res_return = cal.calculate(_funcs_return, _intervals, None, _freq, statistic_date, bm, None, tbond)
        res_risk = cal.calculate(_funcs_risk, _intervals, None, _freq, statistic_date, bm, None, tbond)
        res_sub = cal.calculate(_funcs_sub, _intervals, None, _freq, statistic_date, bm, None, tbond)

        result_return.extend(res_return)
        result_risk.extend(res_risk)
Beispiel #2
0
def calculate(statistic_date):
    print(statistic_date)

    ids_used = pre.fetch_fids_used(statistic_date=statistic_date,
                                   freq=_freq,
                                   conn=engine_rd)

    # TMP EXEC
    # tmp = set(['P1001447', 'P1008404', 'P1003197', 'P1000902', 'P1004813', 'P1004746', 'P1001198',
    #         'P1001203', 'P1004150', 'P1014451', 'P1008451', 'P1008160', 'P1000277', 'P1028421'])
    # ids_used = list(set(ids_used).intersection(tmp))

    data = pre.ProcessedData(statistic_date, ids_used, _freq)
    bms = {
        index_name: cal.Benchmark(attr_dict, index_name)
        for index_name, attr_dict in data.index.items()
    }
    tbond = cal.Tbond(data.index["y1_treasury_rate"], "y1_treasury_rate")
    for fid, attrs in data.funds.items():
        fund = cal.Fund(attrs)
        res_return, cols_return_sorted = cal.calculate(_funcs_return,
                                                       _intervals,
                                                       _bms_used,
                                                       _freq,
                                                       statistic_date,
                                                       fund,
                                                       bms,
                                                       tbond,
                                                       with_func_names=True)
        res_risk, cols_risk_sorted = cal.calculate(_funcs_risk,
                                                   _intervals,
                                                   _bms_used,
                                                   _freq,
                                                   statistic_date,
                                                   fund,
                                                   bms,
                                                   tbond,
                                                   with_func_names=True)
        res_sub, cols_sub_sorted = cal.calculate(_funcs_sub,
                                                 _intervals,
                                                 _bms_used,
                                                 _freq,
                                                 statistic_date,
                                                 fund,
                                                 bms,
                                                 tbond,
                                                 with_func_names=True)
        result_return = []
        result_risk = []
        result_sub = []

        result_return.extend(res_return)
        result_risk.extend(res_risk)
        result_sub.extend(res_sub)

        df_return = pd.DataFrame(result_return)
        df_risk = pd.DataFrame(result_risk)
        df_sub = pd.DataFrame(result_sub)

        cols_return = cal.format_cols_org4r(
            cols_return_sorted,
            _freq,
            prefix=["org_id", "org_name", "statistic_date", "benchmark"])
        cols_risk = cal.format_cols_org4r(
            cols_risk_sorted,
            _freq,
            prefix=["org_id", "org_name", "statistic_date", "benchmark"])
        cols_sub = cal.format_cols_org4r(
            cols_sub_sorted,
            _freq,
            prefix=["org_id", "org_name", "statistic_date", "benchmark"])

        df_return.columns = cols_return
        df_risk.columns = cols_risk
        df_sub.columns = cols_sub

        df_return["index_id"] = sf.SQL.Org4R.INDEXID
        df_risk["index_id"] = sf.SQL.Org4R.INDEXID
        df_sub["index_id"] = sf.SQL.Org4R.INDEXID

        io.to_sql("org_monthly_return",
                  conn=engine_rd,
                  dataframe=df_return,
                  chunksize=5000)
        io.to_sql("org_monthly_risk",
                  conn=engine_rd,
                  dataframe=df_risk,
                  chunksize=5000)
        io.to_sql("org_monthly_research",
                  conn=engine_rd,
                  dataframe=df_sub,
                  chunksize=5000)