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 math import numpy as np import pandas as pd import statistics from datetime import datetime, timedelta class BasicTemplateAlgorithm(QCAlgorithm): def Initialize(self): self.SetCash(100000) self.SetStartDate(2015, 8, 1) self.SetEndDate(2015, 9, 30) # Add securities and get the data self.symbols = ["SPY","IWM"] for s in self.symbols: self.AddEquity(s, Resolution.Minute) # Schedule trades at 10am self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.AfterMarketOpen("SPY", 5), Action(self.Rebalance)) # Days to warm up the indicators self.SetWarmup(timedelta(20)) def OnData(self, slice): pass def Rebalance(self): history = self.History(self.symbols, 21, Resolution.Daily) # First the original method using numpy annl_stdev = [] # create a new list each time to store the std for multiple symbol for i in self.symbols: price =history.loc[i]['close'] roc = [(price[x]-price[x-1])/price[x-1] for x in range(1,len(price))] annl_stdev.append(np.std(roc,dtype=np.float64) * (252 ** 0.5)) self.Log("annl_stdev for ['SPY','IWM']" + str(annl_stdev)) # Now using just dataframe methods close_prices = history.close.unstack(level=0) annl_stdev_series = (close_prices. pct_change(axis=0). std(axis=0, ddof=0) * (252.0 ** 0.5)) self.Log("annl_stdev_series for ['SPY','IWM']" + str(annl_stdev_series))