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