Advertisement
Guest User

Untitled

a guest
Jul 31st, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. from pandas_datareader.data import Options
  2. import mysql.connector
  3. import datetime
  4. import os
  5.  
  6. #convert multi-index df into normal df and necessary data process
  7. def option_convert(symbol):
  8. stock_option = Options(symbol, "yahoo")
  9. data = stock_option.get_all_data()
  10. data.reset_index(inplace=True)
  11. adj_last = []
  12. price_data = data.ix[:, ['Bid', 'Ask']]
  13. last = data["Last"]
  14. data = data.drop(["Chg", "PctChg", "IV", "Root", "IsNonstandard", "Underlying", "Underlying_Price", "Quote_Time", "Last_Trade_Date", "JSON"], 1)
  15. for i in range(data.shape[0]):
  16. if last[i] in list(price_data.ix[i, :]):
  17. adj_last.append(last[i])
  18. else:
  19. adj_last.append(sum(price_data.ix[i, :]) / 2)
  20. data["Adj_last"] = adj_last
  21. return data
  22.  
  23. def main():
  24. os.chdir("/home/ec2-user/data/options")
  25. # init mysql connection
  26. # mysql -h sfdata.cf6ulue4mzq9.us-west-2.rds.amazonaws.com -P 3306 -u spr1ngf0rward -p
  27. cnx = mysql.connector.connect(user='spr1ngf0rward', password='DTXpecgdTQzijTMg2',
  28. host='sfdata.cf6ulue4mzq9.us-west-2.rds.amazonaws.com',
  29. database='sfdata')
  30. # queries
  31. get_symbols = ("SELECT symbol_id, symbol FROM symbol WHERE exchange_id in (1,2,24)")
  32. symbols = []
  33.  
  34. ## get symbol list
  35. cursor = cnx.cursor()
  36. cursor.execute(get_symbols)
  37. for (symbol_id, symbol) in cursor:
  38. symbols.append((symbol_id, symbol))
  39. cursor.close()
  40.  
  41. output = 'options.csv'
  42. for (symbol_id, symbol) in symbols:
  43. try:
  44. data=option_convert(symbol)
  45. data["Symbol"] = symbol
  46. data["symbol_id"] = symbol_id
  47. data["created_on"]= datetime.datetime.now().date()
  48. #print data.head(5)
  49. order = ['symbol_id', 'Strike', 'Expiry', 'Type', 'Symbol', 'Last', 'Bid', 'Ask', 'Vol', 'Open_Int', 'Adj_last', 'created_on']
  50. data = data.ix[:, order]
  51. #print data.head(5)
  52. data.to_csv(output, index = False, mode = 'a', header = False)
  53. print ("download %s success" % (symbol))
  54. except:
  55. print ("download %s fails" % (symbol))
  56.  
  57. if __name__ == '__main__':
  58. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement