Advertisement
ImDerekD

algo.py

Apr 27th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. #!/usr/bin/bash
  2. import numpy as np
  3. import pandas as pd
  4. from tensorflow import keras
  5.  
  6.  
  7. dataset = pd.read_csv('/Users/King/SPY_NN1.csv')
  8. dataset = dataset.dropna()
  9. dataset = dataset[['ref_Num', 'Close_Price', 'Tick', 'Liq_Tick', 'new_Strength', 'Diff', 'Liq_change_div_Avg', 'MIV_Index', 'Type', 'LiqDividedByREGLiq', 'LFP', 'LFPC']]
  10.  
  11. dataset['ref_Num'] = dataset['ref_Num']
  12. dataset['Close_Price'] = dataset['Close_Price']
  13. dataset['Tick'] = dataset['Tick']
  14. dataset['Liq_Tick'] = dataset['Liq_Tick']
  15. dataset['new_Strength'] = dataset['new_Strength']
  16. dataset['Diff'] = dataset['Diff']
  17. dataset['Liq_change_div_Avg'] = dataset['Liq_change_div_Avg']
  18. dataset['MIV_Index'] = dataset['MIV_Index']
  19. dataset['Type'] = dataset['Type']
  20. dataset['LiqDividedByREGLiq'] = dataset['LiqDividedByREGLiq']
  21. dataset['LFP'] = dataset['LFP']
  22. dataset['LFPC'] = dataset['LFPC']
  23.  
  24. dataset['Price_Rise'] = np.where(dataset['Close_Price'].shift(-120) > dataset['Close_Price'], 1, 0)
  25. dataset = dataset.dropna()
  26. X = dataset.iloc[:, 4:-1]
  27. y = dataset.iloc[:, -1]
  28.  
  29. split = int(len(dataset)*0.8)
  30. X_train, X_test, y_train, y_test = X[:split], X[split:], y[:split], y[split:]
  31.  
  32. from sklearn.preprocessing import StandardScaler
  33. sc = StandardScaler()
  34. X_train = sc.fit_transform(X_train)
  35. X_test = sc.transform(X_test)
  36. from tensorflow.keras.models import Sequential
  37.  
  38. from tensorflow.keras.layers import Dense
  39. from tensorflow.keras.layers import Dropout
  40. classifier = Sequential()
  41.  
  42. classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu', input_dim = X.shape[1]))
  43. classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu'))
  44. classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))
  45. classifier.compile(optimizer = 'adam', loss = 'mean_squared_error', metrics = ['accuracy'])
  46. classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)
  47. y_pred = classifier.predict(X_test)
  48. y_pred = (y_pred > 0.5)
  49. dataset['y_pred'] = np.NaN
  50. dataset.iloc[(len(dataset) - len(y_pred)):,-1:] = y_pred
  51. trade_dataset = dataset.dropna()
  52.  
  53. trade_dataset['2 Hour Return'] = 0.
  54. trade_dataset['2 Hour Return'] = np.log(trade_dataset['Close_Price']/trade_dataset['Close_Price'].shift(1))
  55. trade_dataset['2 Hour Return'] = trade_dataset['Tomorrows Returns'].shift(-120)
  56. trade_dataset['Strategy Returns'] = 0.
  57. trade_dataset['Strategy Returns'] = np.where(trade_dataset['y_pred'] == True, trade_dataset['2 Hour Return'], - trade_dataset['2 Hour Return'])
  58. trade_dataset['Cumulative Market Returns'] = np.cumsum(trade_dataset['2 Hour Return'])
  59. trade_dataset['Cumulative Strategy Returns'] = np.cumsum(trade_dataset['Strategy Returns'])
  60. import matplotlib.pyplot as plt
  61. plt.figure(figsize=(10,5))
  62. plt.plot(trade_dataset['Cumulative Market Returns'], color='r', label='Market Returns')
  63. plt.plot(trade_dataset['Cumulative Strategy Returns'], color='g', label='Strategy Returns')
  64. plt.legend()
  65. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement