PageRenderTime 58ms CodeModel.GetById 33ms RepoModel.GetById 0ms app.codeStats 0ms

/ml_test.py

https://bitbucket.org/jvictorchen/algotrading_hw3
Python | 40 lines | 33 code | 6 blank | 1 comment | 0 complexity | 42bf0a6032d30e1d8f57789c032debd2 MD5 | raw file
  1. import Blotter
  2. import load_stock_data
  3. import numpy
  4. import pandas
  5. import PortfolioAllocator as pa
  6. import mlpy
  7. raw = load_stock_data.load_1sec_data(['MS'], '20120309')
  8. tickers=raw.keys()
  9. timeIndex=raw[tickers[0]].index
  10. bid=load_stock_data.generate_indicator(raw,'average_bid_price')
  11. offer=load_stock_data.generate_indicator(raw,'average_offer_price')
  12. bid_size=load_stock_data.generate_indicator(raw, 'average_bid_size')
  13. offer_size=load_stock_data.generate_indicator(raw,'average_offer_size')
  14. long_order_flow=load_stock_data.generate_indicator(raw,'long_order_flow')
  15. short_order_flow=load_stock_data.generate_indicator(raw,'short_order_flow')
  16. training_data = pandas.DataFrame(index=timeIndex)
  17. training_data['bid_size']=bid_size['MS']
  18. training_data['offer_size']=offer_size['MS']
  19. training_data['long_order_flow']=long_order_flow['MS']
  20. training_data['short_order_flow']=short_order_flow['MS']
  21. #one minute forward average return
  22. mid = 0.5*(bid+offer)
  23. lag = 60
  24. fwd_return = numpy.log(mid.shift(-lag)/mid).fillna(0)*1000
  25. fwd_return = fwd_return.values.flatten()
  26. label = numpy.zeros(len(timeIndex))
  27. label[fwd_return>0.5]=1
  28. label[fwd_return<-0.5]=-1
  29. svm = mlpy.libsvm.LibSvm(svm_type='epsilon_svr', kernel_type='rbf', gamma=0.001)
  30. svm.learn(training_data[:11700].values, label[:11700])
  31. output = pandas.DataFrame(timeIndex[:11700])
  32. output['pred'] = svm.pred(training_data[11700:])
  33. output['real'] = label[11700:]
  34. output.to_csv('output.csv')