| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -69.995% Drawdown 9.700% Expectancy 0 Net Profit -9.719% Sharpe Ratio -5.319 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -1.133 Beta 1.94 Annual Standard Deviation 0.206 Annual Variance 0.043 Information Ratio -5.409 Tracking Error 0.206 Treynor Ratio -0.565 Total Fees $1.72 |
import numpy as np
from datetime import datetime
class MovingAverage(QCAlgorithm):
def __init__(self):
self.previous = None
self.ma = None
self.position = None
self.lastMonth = -1
def Initialize(self):
self.SetStartDate(2018,10,1) #Set Start Date
self.SetEndDate(2018,10,29) #Set End Date
self.SetCash(100000) #Set Strategy Cash
self.AddSecurity(SecurityType.Equity, "SPY", Resolution.Daily)
self.AddSecurity(SecurityType.Equity, "IEF", Resolution.Daily)
self.SetWarmUp(440)
self.ma = self.SMA("SPY", 220, Resolution.Daily)
def OnData(self, data):
if self.IsWarmingUp:
return
if not data.ContainsKey("SPY"):
return
if self.lastMonth == self.Time.month:
return
if data["SPY"].Close > self.ma.Current.Value:
if self.position == None:
self.SetHoldings("SPY", 1)
else:
if self.position == "IEF":
self.Liquidate("IEF")
self.SetHoldings("SPY", 1)
self.position = "SPY"
else:
if self.position == None:
self.SetHoldings("IEF", 1)
else:
if self.position == "SPY":
self.Liquidate("SPY")
self.SetHoldings("IEF", 1)
self.position = "IEF"
self.lastMonth = self.Time.month