Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #
  2. # Stock Market Prediction
  3. # with Linear Regression
  4. #
  5. # The Python Quants GmbH
  6. #
  7. import numpy as np
  8. import pandas as pd
  9. from pandas_datareader import data as web
  10. import seaborn as sns
  11. sns.set()
  12.  
  13.  
  14. class RegPred(object):
  15. def __init__(self, symbol):
  16. self.symbol = symbol
  17. self.get_data()
  18.  
  19. def get_data(self):
  20. self.data = pd.DataFrame(web.DataReader(
  21. self.symbol, data_source='yahoo')['Adj Close'])
  22. self.data.columns = ['prices']
  23. self.data['returns'] = np.log(self.data / self.data.shift(1))
  24. self.data.dropna(inplace=True)
  25.  
  26. def generate_matrix(self, lags):
  27. self.matrix = np.zeros((lags + 1, len(self.data) - lags))
  28. for i in range(lags + 1):
  29. if i == lags:
  30. self.matrix[i] = self.data.returns.values[i:]
  31. else:
  32. self.matrix[i] = self.data.returns.values[i: i - lags]
  33.  
  34. def predict_returns(self, lags):
  35. self.lags = lags
  36. self.generate_matrix(lags)
  37. reg = np.linalg.lstsq(
  38. self.matrix[:lags].T, np.sign(self.matrix[lags]))[0]
  39. self.pred = np.dot(self.matrix[:lags].T, reg)
  40.  
  41. def get_performance(self):
  42. self.perf = self.data.ix[self.lags:].copy()
  43. self.perf['positions'] = np.sign(self.pred)
  44. self.perf['strategy'] = self.perf.positions * self.perf.returns
  45. self.perf[['returns', 'strategy']].cumsum().apply(np.exp).plot()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement