Overall Statistics |
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
import numpy as np import pandas as pd class MyAlgo(QCAlgorithm): def __init__(self): # Period of sma self.sma_period = 60 # Base period for SMA self.comp_period = 1 # Number of the previous periods to compare # Here, we compare current sma vs 1-period previous sma def Initialize(self): self.SetCash(1000000) # Start and end dates for the backtest. self.SetStartDate(2017,1,1) self.SetEndDate(2017,3,31) self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol self.security_list = ["XLK", "XLF", "IVV", "XLE", "XLV"] for i in range(len(self.security_list)): self.AddEquity(self.security_list[i],Resolution.Minute) # Schedule the rebalance function self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY", 30), Action(self.rebalance)) def OnData(self, data): pass def rebalance(self): # --------------------------------------------------------------- # Stocks History ---------------------------------- # --------------------------------------------------------------- # Get history of stocks ('close') for the past N-days history = self.History(self.security_list, self.sma_period+self.comp_period, Resolution.Daily) price_history = history['close'].unstack(level=0) # Get the current close of each stock current = self.History(self.security_list, 1, Resolution.Minute) curr_history = current['close'].unstack(level=0) # Combine all in one price_history = price_history.append(curr_history.iloc[0]) # Re-Create working dataframe to play with -------------------- # DF df1 = pd.DataFrame(price_history.values, columns = price_history.columns) df1 = df1.dropna() #self.Log('Working_DF : ' +'\n' + str(df1) + '\n') ############################################################## # SMA ------------------------------------------ ############################################################## # Get current sma curr_sma = df1[-self.sma_period:].mean(0) # Get the previous sma prev_sma = df1[-(self.sma_period+self.comp_period):-self.comp_period].mean(0) self.Log('\n'+'Curr_sma:'+'\n'+str(curr_sma)+'\n'+'Prev_sma:'+'\n'+str(prev_sma)+'\n')