| 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))