| Overall Statistics |
|
Total Trades 202 Average Win 5.91% Average Loss -2.06% Compounding Annual Return 22.850% Drawdown 17.500% Expectancy 0.763 Net Profit 308.013% Sharpe Ratio 0.944 Probabilistic Sharpe Ratio 48.023% Loss Rate 54% Win Rate 46% Profit-Loss Ratio 2.87 Alpha 0.117 Beta 0.427 Annual Standard Deviation 0.157 Annual Variance 0.025 Information Ratio 0.447 Tracking Error 0.168 Treynor Ratio 0.347 Total Fees $226.33 Estimated Strategy Capacity $200000000.00 Lowest Capacity Asset AAPL R735QTJ8XC9X Portfolio Turnover 8.05% |
from AlgorithmImports import *
class CalmBrownTermite(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2017, 1, 2)
self.SetCash(10000)
self.spy = self.AddEquity("AAPL", Resolution.Daily).Symbol
self.Fast = self.SMA(self.spy,9,Resolution.Daily)
self.Slow = self.SMA(self.spy,200,Resolution.Daily)
self.previous = self.Time.min
self.Tolerance = 0.00015
def OnData(self, data):
if not self.Slow.IsReady :return
if self.previous is None or self.previous.day==self.Time.day:return
holdings = self.Portfolio[self.spy].Quantity
if holdings<=0:
if self.Fast[0]>=self.Fast[1] : # .Current.Value self.Slow.Current.Value*(1+self.Tolerance):
self.SetHoldings(self.spy,1)
self.Debug("BUY >> " + str(self.Securities[self.spy].Price))
elif holdings>=0:
if self.Fast[0]<self.Fast[1]:
self.SetHoldings(self.spy,0)
if self.Portfolio[self.spy].UnrealizedProfit<= -420:
self.Debug("Sell at "+str(self.Securities[self.spy].Price))
self.Liquidate()
self.previous = self.Time