Beispiel #1
0
def get_scatter_data_for_code_forecast(system,
                                       instrument_code,
                                       rule_name,
                                       startdate=None,
                                       enddate=None,
                                       return_period=5):

    norm_data = system.rawdata.norm_returns(instrument_code)
    forecast = system.rules.get_raw_forecast(instrument_code, rule_name)

    if startdate is None:
        startdate = forecast.index[0]
    if enddate is None:
        enddate = forecast.index[-1]

    (forecast, norm_data) = align_to_joint(
        forecast[startdate:enddate],
        norm_data[startdate:enddate],
        ffill=(True, False))

    # work out return for the N days after the forecast
    period_returns = pd.rolling_sum(norm_data, return_period, min_periods=1)

    ex_post_returns = period_returns.shift(-return_period)
    lagged_forecast = forecast.shift(1)

    return (list(ex_post_returns.iloc[:, 0].values),
            list(lagged_forecast.iloc[:, 0].values))
Beispiel #2
0
def get_scatter_data_for_code_vol(system,
                                  instrument_code,
                                  rule_name,
                                  return_period=5,
                                  days=64):

    denom_price = system.rawdata.daily_denominator_price(instrument_code)
    x = system.rawdata.daily_returns(instrument_code)
    vol = robust_vol_calc(x, days)
    perc_vol = 100.0 * divide_df_single_column(vol, denom_price.shift(1))

    volavg = pd.rolling_median(perc_vol, 1250, min_periods=10)
    vol_qq = (perc_vol - volavg) / volavg

    ## work out return for the N days after the forecast

    norm_data = system.accounts.pandl_for_instrument_forecast(
        instrument_code, rule_name)

    (vol_qq, norm_data) = align_to_joint(vol_qq,
                                         norm_data,
                                         ffill=(True, False))

    period_returns = pd.rolling_sum(norm_data, return_period, min_periods=1)

    ex_post_returns = period_returns.shift(-return_period)
    lagged_vol = vol_qq.shift(1)

    return (list(ex_post_returns.iloc[:, 0].values),
            list(lagged_vol.iloc[:, 0].values))
def get_scatter_data_for_code_vol(
        system, instrument_code, rule_name, return_period=5, days=64):

    denom_price = system.rawdata.daily_denominator_price(instrument_code)
    x = system.rawdata.daily_returns(instrument_code)
    vol = robust_vol_calc(x, days)
    perc_vol = 100.0 * divide_df_single_column(vol, denom_price.shift(1))

    volavg = pd.rolling_median(perc_vol, 1250, min_periods=10)
    vol_qq = (perc_vol - volavg) / volavg

    # work out return for the N days after the forecast

    norm_data = system.accounts.pandl_for_instrument_forecast(
        instrument_code, rule_name)

    (vol_qq, norm_data) = align_to_joint(
        vol_qq, norm_data, ffill=(True, False))

    period_returns = pd.rolling_sum(norm_data, return_period, min_periods=1)

    ex_post_returns = period_returns.shift(-return_period)
    lagged_vol = vol_qq.shift(1)

    return (list(ex_post_returns.iloc[:, 0].values), list(
        lagged_vol.iloc[:, 0].values))
def get_scatter_data_for_code_forecast(system, instrument_code, rule_name, startdate=None, enddate=None, return_period=5):

    norm_data=system.rawdata.norm_returns(instrument_code)
    forecast=system.rules.get_raw_forecast(instrument_code, rule_name)

    if startdate is None:
        startdate=forecast.index[0]
    if enddate is None:
        enddate=forecast.index[-1]

    (forecast, norm_data) = align_to_joint(forecast[startdate:enddate], norm_data[startdate:enddate], ffill=(True, False))
    
    ## work out return for the N days after the forecast
    period_returns = pd.rolling_sum(norm_data, return_period, min_periods=1)
    
    ex_post_returns = period_returns.shift(-return_period)
    lagged_forecast = forecast.shift(1) 
    
    return (list(ex_post_returns.iloc[:,0].values),list(lagged_forecast.iloc[:,0].values)) 
ans = load(open("/home/rob/data.pck", "rb"))

[roll_acc, idm, acc_curve, mkt_counters] = ans

# plot IDM against market count, scattered

mkt_count_for_scatter = []
idm_for_scatter = []
roll_acc_for_scatter = []
risk_for_scatter = []

for (roll_acc_item, idm_item, mkt_count_item) in zip(
        roll_acc, idm, mkt_counters):

    (roll_acc_item, mkt_count_item) = align_to_joint(
        roll_acc_item, mkt_count_item, ffill=(True, True))
    (idm_item, mkt_count_item) = align_to_joint(
        idm_item, mkt_count_item, ffill=(True, True))
    norm_risk = .2 / (roll_acc_item.resample("A", how="mean").iloc[
                      :, 0] / idm_item.resample("A", how="mean").iloc[:, 0])

    roll_acc_item_rs = list(
        roll_acc_item.resample(
            "A", how="mean").iloc[
            :, 0].values)
    idm_item_rs = list(idm_item.resample("A", how="mean").iloc[:, 0].values)
    mktcount_item_rs = list(mkt_count_item.resample("A", how="mean").values)

    mkt_count_for_scatter = mkt_count_for_scatter + mktcount_item_rs
    roll_acc_for_scatter = roll_acc_for_scatter + roll_acc_item_rs
    idm_for_scatter = idm_for_scatter + idm_item_rs
Beispiel #6
0
ans = load(open("/home/rob/data.pck", "rb"))

[roll_acc, idm, acc_curve, mkt_counters] = ans

### plot IDM against market count, scattered

mkt_count_for_scatter = []
idm_for_scatter = []
roll_acc_for_scatter = []
risk_for_scatter = []

for (roll_acc_item, idm_item, mkt_count_item) in zip(roll_acc, idm,
                                                     mkt_counters):

    (roll_acc_item, mkt_count_item) = align_to_joint(roll_acc_item,
                                                     mkt_count_item,
                                                     ffill=(True, True))
    (idm_item, mkt_count_item) = align_to_joint(idm_item,
                                                mkt_count_item,
                                                ffill=(True, True))
    norm_risk = .2 / (roll_acc_item.resample("A", how="mean").iloc[:, 0] /
                      idm_item.resample("A", how="mean").iloc[:, 0])

    roll_acc_item_rs = list(
        roll_acc_item.resample("A", how="mean").iloc[:, 0].values)
    idm_item_rs = list(idm_item.resample("A", how="mean").iloc[:, 0].values)
    mktcount_item_rs = list(mkt_count_item.resample("A", how="mean").values)

    mkt_count_for_scatter = mkt_count_for_scatter + mktcount_item_rs
    roll_acc_for_scatter = roll_acc_for_scatter + roll_acc_item_rs
    idm_for_scatter = idm_for_scatter + idm_item_rs