PageRenderTime 45ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/readAllSymbols_daily.py

https://bitbucket.org/vroomzel/server
Python | 60 lines | 42 code | 9 blank | 9 comment | 2 complexity | 98df18273358532ab1db4247015f10be MD5 | raw file
  1. import os
  2. import sys
  3. import datetime as dt
  4. import pandas
  5. import numpy as np
  6. def load_data_frame_from_hdf5(fullname):
  7. store = pandas.HDFStore(fullname, mode='r')
  8. output = store["data_frame"]
  9. store.close()
  10. return output
  11. os.putenv("TZ","America/New_York")
  12. #just one column of symbols
  13. symbol_list_file = sys.argv[1]
  14. #start=dt.datetime(2009,1,2,9,30)
  15. #end=dt.datetime(2012,4,14,15,59)
  16. symbol_list = open(symbol_list_file, 'rb')
  17. #create a list of tickers (we'll need them anyway later)
  18. tickers=[]
  19. for symbol in symbol_list:
  20. tickers.append(symbol.rstrip('\n'))
  21. symbol_list.close()
  22. #read the first symbol and create starting data frames from it
  23. #hdf5FileName = "/backtest_data/daily-1min/tbFrame1min/" + tickers[0] + ".tb.frame.1min.hdf5"
  24. hdf5FileName = "/backtest_data/daily-1min/tbFrameDaily/" + tickers[0] + ".tb.frame.daily.hdf5"
  25. print hdf5FileName
  26. data=load_data_frame_from_hdf5(hdf5FileName)
  27. cp=pandas.DataFrame(data.cp)
  28. op=pandas.DataFrame(data.op)
  29. adj_cp=pandas.DataFrame(data.adj_cp)
  30. #load all other tickers
  31. count=1
  32. for symbol in tickers[1:]:
  33. hdf5FileName = "/backtest_data/daily-1min/tbFrameDaily/" + symbol + ".tb.frame.daily.hdf5"
  34. print hdf5FileName
  35. data=load_data_frame_from_hdf5(hdf5FileName)
  36. cp=pandas.merge(cp, pandas.DataFrame(data.cp), left_index=True, right_index=True, how='outer')
  37. op=pandas.merge(op, pandas.DataFrame(data.op), left_index=True, right_index=True, how='outer')
  38. adj_cp=pandas.merge(adj_cp, pandas.DataFrame(data.adj_cp), left_index=True, right_index=True, how='outer')
  39. #need to have unique column names, otherwise pandas complains
  40. col_ind=np.arange(0,count+1)
  41. cp.columns=col_ind
  42. op.columns=col_ind
  43. adj_cp.columns=col_ind
  44. count=count+1
  45. #rename the columns by tickers
  46. cp.columns=tickers
  47. op.columns=tickers
  48. adj_cp.columns=tickers
  49. cp.save("close_px_all_daily.bin")
  50. op.save("open_px_all_daily.bin")
  51. adj_cp.save("adj_close_px_all_daily.bin")