예제 #1
0
def forecast(sym, market, df, dt, insts, conf, calc_sharpe=True):
    df2 = df.copy()
    df2 = df2.ix[df2.index <= dt]
    df2.sprice = df2.sprice / conf['price_divider']["%s_%s" % (sym,market)]
    
    carryoffset = insts[(sym,market)]['carryoffset']
    res = pd.DataFrame()
    funcs = get_funcs(df, carryoffset)
    for x in funcs: res[x] = funcs[x]()
    
    res2 = res * pd.Series(conf['forecast_scalars'])
    res2[res2 < -20.] = -20
    res2[res2 > 20.] = 20    
    res3 = res2 * pd.Series(conf['forecast_weights'])
    res3['forecast'] = res3.sum(axis=1)
    res3['sprice'] = df2.sprice
    
    #res[['carry','ewmac64_256','ewmac32_128','ewmac16_64']].to_csv("out1.csv")
    #res2[['carry','ewmac64_256','ewmac32_128','ewmac16_64']].to_csv("out2.csv")
    #res3[['carry','ewmac64_256','ewmac32_128','ewmac16_64','forecast','sprice']].to_csv("out3.csv")
    #res3.to_csv("out3.csv")

    sharpe = None; tval = None; pval = None
    if calc_sharpe: sharpe,tval,pval = util.sharpe(res3.sprice, res3.forecast)
    return res3.forecast, sharpe, tval, pval
예제 #2
0
def test_returns_sharpe_skew():
    import util, zipfile, pandas as pd

    with zipfile.ZipFile("../alg/legacycsv.zip", "r") as z:
        df = pd.read_csv(z.open("EDOLLAR_price.csv"), index_col=0, parse_dates=True)

    fast_ewma = pd.ewma(df.PRICE, span=32)
    slow_ewma = pd.ewma(df.PRICE, span=128)
    raw_ewmac = fast_ewma - slow_ewma
    vol = util.robust_vol_calc(df.PRICE.diff())
    forecast = raw_ewmac / vol
    sr, tval, pval = util.sharpe(df.PRICE, forecast)
    assert sr - 0.50 < 0.01
    s = util.skew(df.PRICE, forecast)
    assert s - (-0.57) < 0.01
예제 #3
0
파일: test.py 프로젝트: walkacross/quant_at
def test_returns_sharpe_skew():
    import util, zipfile, pandas as pd
    with zipfile.ZipFile('../alg/legacycsv.zip', 'r') as z:
        df = pd.read_csv(z.open('EDOLLAR_price.csv'),
                         index_col=0,
                         parse_dates=True)

    fast_ewma = pd.ewma(df.PRICE, span=32)
    slow_ewma = pd.ewma(df.PRICE, span=128)
    raw_ewmac = fast_ewma - slow_ewma
    vol = util.robust_vol_calc(df.PRICE.diff())
    forecast = raw_ewmac / vol
    sr, tval, pval = util.sharpe(df.PRICE, forecast)
    assert sr - 0.50 < 0.01
    s = util.skew(df.PRICE, forecast)
    assert s - (-0.57) < 0.01