/learn.py
Python | 40 lines | 31 code | 5 blank | 4 comment | 0 complexity | 4aacb6b4aa4a7c503f19a808b042e4a3 MD5 | raw file
- import Blotter
- import load_stock_data
- import numpy
- import pandas
- import PortfolioAllocator as pa
- import mlpy
- import sys
- '''
- Training using SVM
- '''
- raw = load_stock_data.load_1sec_data(['MS'], '20120308')
- tickers=raw.keys()
- timeIndex=raw[tickers[0]].index
- bid=load_stock_data.generate_indicator(raw,'average_bid_price')
- offer=load_stock_data.generate_indicator(raw,'average_offer_price')
- bid_size=load_stock_data.generate_indicator(raw, 'average_bid_size')
- offer_size=load_stock_data.generate_indicator(raw,'average_offer_size')
- long_order_flow=load_stock_data.generate_indicator(raw,'long_order_flow')
- short_order_flow=load_stock_data.generate_indicator(raw,'short_order_flow')
- training_data = pandas.DataFrame(index=timeIndex)
- training_data['bid_size']=bid_size['MS']
- training_data['offer_size']=offer_size['MS']
- training_data['long_order_flow']=long_order_flow['MS']
- training_data['short_order_flow']=short_order_flow['MS']
- #one minute forward average return
- mid = 0.5*(bid+offer)
- lag = 60
- fwd_return = numpy.log(mid.shift(-lag)/mid).fillna(0)*1000
- fwd_return = fwd_return.values.flatten()
- label = numpy.zeros(len(timeIndex))
- label[fwd_return>0.5]=1
- label[fwd_return<-0.5]=-1
- svm = mlpy.libsvm.LibSvm(svm_type='epsilon_svr', kernel_type='rbf', gamma=0.001)
- print('learning...')
- svm.learn(training_data.values, label)