예제 #1
0
def ai_f_mxWrlst(ftg0,funlst,x_train, y_train):
    for funSgn in funlst:
        ftg=ftg0+funSgn+'.pkl'
        print('\n',ftg)
        tim0=arrow.now()
        ai_f_mxWr(ftg,funSgn,x_train, y_train)
        zt.timNSec('',tim0,True)    
예제 #2
0
def main_get(timStr='', nday=2):
    #
    #1---init.sys
    print('\nmain_get,nday:', nday)
    tfsys.xnday_down = nday
    zsys.web_get001txtFg = True

    #
    #2---init.tfb
    rs0 = '/tfbDat/'
    fgid = rs0 + 'gid2017.dat'
    xtfb = tft.fb_init(rs0, fgid)
    if nday == -1:
        tfsys.xnday_down = xtfb.gid_nday + 10
        print('nday,', tfsys.xnday_down)

    #
    #3---update.data
    print('\n#3,update.data')
    if nday != 0:
        tft.fb_gid_get_nday(xtfb, timStr, fgExt=True)
    #
    #4
    tn = zt.timNSec(timStr, xtfb.tim0, '')
    print('\n#4,update.data,tim:{0:.2f} s'.format(tn))
예제 #3
0
def ai_mx_tst_bsize(f_mx,
                    f_tg,
                    df_train,
                    df_test,
                    nepochs=500,
                    ksize=32,
                    ky0=5):
    ds, df = {}, pd.DataFrame()
    for xc in range(1, 11):
        print('\n#', xc)
        dnum = xc * ksize
        mx = ks.models.load_model(f_mx)
        t0 = arrow.now()
        dacc = ai_mul_var_tst(mx, df_train, df_test, nepochs, dnum, ky0=ky0)
        tn = zt.timNSec('', t0)
        ds['bsize'], ds['size_acc'], ds['ntim'] = dnum, dacc, tn
        df = df.append(ds, ignore_index=True)

    #
    df = df.dropna()
    df['bsize'] = df['bsize'].astype(int)
    print('\ndf')
    print(df)
    print('\nf,', f_tg)
    df.to_csv(f_tg, index=False)
    #
    df.plot(kind='bar', x='bsize', y='size_acc', rot=0)
    df.plot(kind='bar', x='bsize', y='ntim', rot=0)
    return df
예제 #4
0
def mx_funlst8mx(mxlst, x_test,  y_test,yk0=5,fgInt=False):
    for msgn in mxlst:
        #print('@msgn:',msgn)
        tim0=arrow.now()
        mx=xmodel[msgn]
        dacc,df9=mx_fun8mx(mx, x_test, y_test,yk0,fgInt)
        tn=zt.timNSec('',tim0)
        xss='ok:{0:.2f}%,mx,{1},tn,{2:.2f} s'.format(dacc,msgn,tn)
        print(xss)   
예제 #5
0
def main_ai_bt(timStr='', nday=2):
    #
    #1---init.sys
    print('\nmain_bt,nday:', nday)
    tfsys.xnday_down = nday
    zsys.web_get001txtFg = True

    #2---init.tfb
    rs0 = '/tfbDat/'
    fgid = rs0 + 'gid2018.dat'
    xtfb = tft.fb_init(rs0, fgid)
    if nday == -1:
        tfsys.xnday_down = xtfb.gid_nday + 10
        print('nday,', tfsys.xnday_down)

    #
    #3---backtest
    print('\n#3,backtest')
    if nday != 0:
        xtfb.funPre = tfsty.sta00_pre  #bt_1dayMain
        xtfb.funSta = tfsty.sta_ai_log01
        xtfb.preVars = []
        xtfb.staVars = [99, 99, 99]

        #
        #
        #3.a------ai.init
        zai.xmodel = {}
        xtfb.ai_mxfFN0 = rs0 + 'mlib/p7y2016_'
        xtfb.ai_mx_sgn_lst = ['log']

        xtfb.ai_ysgn = 'kwin'
        xtfb.ai_xlst = [
            'cid', 'pwin0', 'pdraw0', 'plost0', 'pwin9', 'pdraw9', 'plost9'
        ]
        #
        zai.ai_f_mxRdlst(xtfb.ai_mxfFN0, xtfb.ai_mx_sgn_lst)

        #3.b-------预测
        xtfb.kcid = '1'  #cn,3=bet365
        tfbt.bt_main(xtfb, timStr)

        #
        #4---main_ret
        print('\n#4,result.anz')
        tfbt.bt_main_ret(xtfb, True)
        print('kcid,', xtfb.kcid, ',nday,', nday)
        print('preVar,', xtfb.preVars)
        print('staVar,', xtfb.staVars)

    #
    #5
    tn = zt.timNSec('', xtfb.tim0, '')
    print('\n#5,backtest,tim:{0:.2f} s'.format(tn))
    #
    #6---end.main
    print('\n#6,end.main')
예제 #6
0
def main_bt(timStr='',nday=2):
    #
    #1---init.sys
    print('\nmain_bt,nday:',nday)
    tfsys.xnday_down=nday
#    zsys.web_get001txtFg= True
    
    #2---init.tfb
    rs0='/tfbDat/'

    fgid=rs0+'gid2019_js.dat'
    xtfb=tft.fb_init(rs0,fgid)
    if nday==-1:
        tfsys.xnday_down=xtfb.gid_nday+2
        print('nday,',tfsys.xnday_down)
    
     #
    #3---backtest
    print('\n#3,backtest')
    if nday!=0:
        xtfb.funPre=tfsty.sta_lstm_pre ##预测算法
        xtfb.funSta=tfsty.sta00_sta
        xtfb.preVars=[]
        xtfb.staVars=[1.5]
        xtfb.kcid='1' #cn,3=bet365
        #
        tfbt.bt_main(xtfb,timStr)

        print('\n#4, 完成预测')
        #4---main_ret 按预测计算预计回报
        #暂时不分析预计回报,以后再开发
        '''
        print('\n#4,result.anz')
        tfbt.bt_main_ret(xtfb, True)
        print('kcid,',xtfb.kcid,',nday,',nday)
        print('preVar,',xtfb.preVars)
        print('staVar,',xtfb.staVars)
        '''
    #
    #5
    tn=zt.timNSec('',xtfb.tim0,'')
    print('\n#5,backtest,tim:{0:.2f} s'.format(tn))
    #
    #6---end.main
    print('\n#6,end.main')  
예제 #7
0
def mx_mul(mlst, x_test, y_test, yk0=5, fgInt=False, fgDebug=False):
    #1
    print('\ny_pred,预测')
    df9, xc, mxn9 = x_test.copy(), 0, len(mlst)
    df9['y_test'] = y_test
    #2
    for msgn in mlst:
        xc += 1
        tim0 = arrow.now()
        mx = xmodel[msgn]
        y_pred = mx.predict(x_test.values)
        #3
        if xc == 1: df9['y_sum'] = y_pred
        else: df9['y_sum'] = df9['y_sum'] + y_pred
        #4
        tn = zt.timNSec('', tim0)
        df9['y_pred'] = y_pred
        #4.b
        if fgInt:
            df9['y_predsr'] = df9['y_pred']
            df9['y_pred'] = round(df9['y_predsr']).astype(int)

        #5
        dacc = ai_acc_xed(df9, yk0, fgDebug)
        xss = 'y_pred{0:02},kok:{1:.2f}%'.format(xc, dacc)
        print(xc, xss, msgn, tn, 's')
        ysgn = 'y_pred' + str(xc)
        df9[ysgn] = y_pred
    #6
    df9['y_pred'] = df9['y_sum'] / mxn9

    if fgInt:
        df9['y_predsr'] = df9['y_pred']
        df9['y_pred'] = round(df9['y_predsr']).astype(int)

    #7
    dacc = ai_acc_xed(df9, yk0, fgDebug)
    #8
    if fgDebug:
        df9.to_csv('tmp/df9_pred.csv')

    #9
    print('@mx:mx_sum,kok:{0:.2f}%'.format(dacc))
    return dacc, df9
예제 #8
0
#
mx.summary()
plot_model(mx, to_file='tmp/lstm010mx.png')

#4 模型训练
print('\n#4 模型训练 fit')
tbCallBack = keras.callbacks.TensorBoard(log_dir=rlog,
                                         write_graph=True,
                                         write_images=True)
tn0 = arrow.now()
mx.fit(x_train,
       y_train,
       epochs=2000,
       batch_size=512 * 24,
       callbacks=[tbCallBack])
tn = zt.timNSec('', tn0, True)
mx.save('tmp/lstm010mx.dat')

#5 利用模型进行预测 predict
print('\n#5 模型预测 predict')
tn0 = arrow.now()
y_pred = mx.predict(x_test)
tn = zt.timNSec('', tn0, True)
df_test['y_pred'] = zdat.ds4x(y_pred, df_test.index, True)
df_test.to_csv('tmp/df_lstm010mx.csv', index=False)

#6
print('\n#6 acc准确度分析')
print('\nky0=10')
df = df_test
dacc, dfx, a10 = ztq.ai_acc_xed2ext(df.y, df.y_pred, ky0=10, fgDebug=True)
예제 #9
0
import zpd_talib as zta
import ztop_ai as zai

#-----------------------

#1
fsr0 = 'dat/ccpp_'
print('#1', fsr0)
xlst, ysgn = ['AT', 'V', 'AP', 'RH'], 'PE'
x_train, x_test, y_train, y_test = zai.ai_dat_rd(fsr0)
funSgn, ftg = 'svm', 'tmp/ccpp_svm.pkl'
#2
print('\n#2,mx_svm.wr')
tim0 = arrow.now()
zai.ai_f_mxWr(ftg, funSgn, x_train, y_train)
tn = zt.timNSec('', tim0, True)

#3
tim0 = arrow.now()
print('\n#3,mx_svm.rd')
mx = joblib.load(ftg)
tn = zt.timNSec('', tim0, True)

#4
print('\n#4,mx_svm')
tim0 = arrow.now()
zai.mx_fun8mx(mx, x_test, y_test)
tn = zt.timNSec('', tim0, True)

#-----------------------
print('\nok!')
예제 #10
0
 def fun_tim(*args, **kwargs):
     t0 = arrow.now()
     result = function(*args, **kwargs)
     tn = zt.timNSec(arrow.now(), t0)
     print('tn,{0:.3f}s,fun:{1}'.format(tn, function.__name__))
     return result
예제 #11
0
def mx_funlst(funlst,x_train, x_test, y_train, y_test,yk0=5,fgInt=False):
    for funsgn in funlst:
        print('\n',funsgn)
        tim0=arrow.now()
        mx_fun010(funsgn,x_train, x_test, y_train, y_test,yk0,fgInt)
        zt.timNSec('',tim0,True)