#!/usr/bin/env python # coding: utf-8 # In[1]: import pandas as pd import numpy as np import tradingWithPython as twp import tradingWithPython.lib.yahooFinance as yf # yahoo finance module twp.extra.setNotebookStyle() import ffn # In[2]: data = twp.yahooFinance.getHistoricData('SPY') # In[3]: data.head() # In[4]: close=data['close'] close.plot() # In[5]: data['SMAslow']=data['close'].rolling(window=252).mean() data['SMAfast']=close.rolling(window=42).mean() # In[6]: data.tail() # In[7]: data[['close','SMAfast','SMAslow']].plot() # In[13]: data['signal'] = data['SMAfast'] - data['SMAslow'] # In[14]: data.tail() # In[24]: X = 0 data['Stance'] = np.where(data['signal'] > X, 1, 0) data['Stance'] = np.where(data['signal'] < X, -1, data['Stance']) data['Stance'].value_counts() # In[25]: data.tail() # # In[26]: data['Stance'].plot() # In[27]: data['Market Returns'] = np.log(data['close'] / data['close'].shift(1)) data['Strateg']=data['Market Returns']*data['Stance'].shift(1) # In[28]: data # In[29]: data[['Market Returns','Strateg']].cumsum().plot() # In[30]: data['equity']=data['Strateg'].cumsum()+100 # In[31]: data # In[32]: writer = pd.ExcelWriter('output.xlsx') data.to_excel(writer,'Sheet1') writer.save() # In[33]: perf = data['equity'].calc_stats() # In[34]: ffn.core.PerformanceStats # In[35]: perf.plot() # In[36]: perf.display() # In[ ]: # In[ ]: # In[ ]: