Advertisement
ImDerekD

Algo_w_PriceFall.py

Apr 27th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 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(-240) > dataset['Close_Price'], 1, 0)
  25. dataset['Price_Fall'] = np.where(dataset['Close_Price'].shift(-240) < dataset['Close_Price'], 1, 0)
  26.  
  27. dataset = dataset.dropna()
  28. X = dataset.iloc[:, 4:-1]
  29. y = dataset.iloc[:, -1]
  30.  
  31. split = int(len(dataset)*0.5)
  32. X_train, X_test, y_train, y_test = X[:split], X[split:], y[:split], y[split:]
  33.  
  34. from sklearn.preprocessing import StandardScaler
  35. sc = StandardScaler()
  36. X_train = sc.fit_transform(X_train)
  37. X_test = sc.transform(X_test)
  38. from tensorflow.keras.models import Sequential
  39.  
  40. from tensorflow.keras.layers import Dense
  41. from tensorflow.keras.layers import Dropout
  42. classifier = Sequential()
  43.  
  44. classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu', input_dim = X.shape[1]))
  45. classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu'))
  46. classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))
  47. classifier.compile(optimizer = 'adam', loss = 'mean_squared_error', metrics = ['accuracy'])
  48. classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)
  49. y_pred = classifier.predict(X_test)
  50. y_pred = (y_pred > 0.5)
  51. dataset['y_pred'] = np.NaN
  52. dataset.iloc[(len(dataset) - len(y_pred)):,-1:] = y_pred
  53. trade_dataset = dataset.dropna()
  54.  
  55. trade_dataset['4 Hour Return'] = 0.
  56. trade_dataset['4 Hour Return'] = np.log(trade_dataset['Close_Price']/trade_dataset['Close_Price'].shift(1))
  57. trade_dataset['4 Hour Return'] = trade_dataset['4 Hour Return'].shift(-240)
  58. trade_dataset['Strategy Returns'] = 0.
  59. trade_dataset['Strategy Returns'] = np.where(trade_dataset['y_pred'] == True, trade_dataset['4 Hour Return'], - trade_dataset['4 Hour Return'])
  60. trade_dataset['Cumulative Market Returns'] = np.cumsum(trade_dataset['4 Hour Return'])
  61. trade_dataset['Cumulative Strategy Returns'] = np.cumsum(trade_dataset['Strategy Returns'])
  62. import matplotlib.pyplot as plt
  63. plt.figure(figsize=(10,5))
  64. plt.plot(trade_dataset['Cumulative Market Returns'], color='r', label='Market Returns')
  65. plt.plot(trade_dataset['Cumulative Strategy Returns'], color='g', label='Strategy Returns')
  66. plt.legend()
  67. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement