Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/bash
- import numpy as np
- import pandas as pd
- from tensorflow import keras
- dataset = pd.read_csv('/Users/King/SPY_NN1.csv')
- dataset = dataset.dropna()
- dataset = dataset[['ref_Num', 'Close_Price', 'Tick', 'Liq_Tick', 'new_Strength', 'Diff', 'Liq_change_div_Avg', 'MIV_Index', 'Type', 'LiqDividedByREGLiq', 'LFP', 'LFPC']]
- dataset['ref_Num'] = dataset['ref_Num']
- dataset['Close_Price'] = dataset['Close_Price']
- dataset['Tick'] = dataset['Tick']
- dataset['Liq_Tick'] = dataset['Liq_Tick']
- dataset['new_Strength'] = dataset['new_Strength']
- dataset['Diff'] = dataset['Diff']
- dataset['Liq_change_div_Avg'] = dataset['Liq_change_div_Avg']
- dataset['MIV_Index'] = dataset['MIV_Index']
- dataset['Type'] = dataset['Type']
- dataset['LiqDividedByREGLiq'] = dataset['LiqDividedByREGLiq']
- dataset['LFP'] = dataset['LFP']
- dataset['LFPC'] = dataset['LFPC']
- dataset['Price_Rise'] = np.where(dataset['Close_Price'].shift(-240) > dataset['Close_Price'], 1, 0)
- dataset['Price_Fall'] = np.where(dataset['Close_Price'].shift(-240) < dataset['Close_Price'], 1, 0)
- dataset = dataset.dropna()
- X = dataset.iloc[:, 4:-1]
- y = dataset.iloc[:, -1]
- split = int(len(dataset)*0.5)
- X_train, X_test, y_train, y_test = X[:split], X[split:], y[:split], y[split:]
- from sklearn.preprocessing import StandardScaler
- sc = StandardScaler()
- X_train = sc.fit_transform(X_train)
- X_test = sc.transform(X_test)
- from tensorflow.keras.models import Sequential
- from tensorflow.keras.layers import Dense
- from tensorflow.keras.layers import Dropout
- classifier = Sequential()
- classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu', input_dim = X.shape[1]))
- classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu'))
- classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))
- classifier.compile(optimizer = 'adam', loss = 'mean_squared_error', metrics = ['accuracy'])
- classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)
- y_pred = classifier.predict(X_test)
- y_pred = (y_pred > 0.5)
- dataset['y_pred'] = np.NaN
- dataset.iloc[(len(dataset) - len(y_pred)):,-1:] = y_pred
- trade_dataset = dataset.dropna()
- trade_dataset['4 Hour Return'] = 0.
- trade_dataset['4 Hour Return'] = np.log(trade_dataset['Close_Price']/trade_dataset['Close_Price'].shift(1))
- trade_dataset['4 Hour Return'] = trade_dataset['4 Hour Return'].shift(-240)
- trade_dataset['Strategy Returns'] = 0.
- trade_dataset['Strategy Returns'] = np.where(trade_dataset['y_pred'] == True, trade_dataset['4 Hour Return'], - trade_dataset['4 Hour Return'])
- trade_dataset['Cumulative Market Returns'] = np.cumsum(trade_dataset['4 Hour Return'])
- trade_dataset['Cumulative Strategy Returns'] = np.cumsum(trade_dataset['Strategy Returns'])
- import matplotlib.pyplot as plt
- plt.figure(figsize=(10,5))
- plt.plot(trade_dataset['Cumulative Market Returns'], color='r', label='Market Returns')
- plt.plot(trade_dataset['Cumulative Strategy Returns'], color='g', label='Strategy Returns')
- plt.legend()
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement