| Overall Statistics |
|
Total Trades 33 Average Win 0% Average Loss 0% Compounding Annual Return 498.333% Drawdown 2.800% Expectancy 0 Net Profit 3.999% Sharpe Ratio 3.894 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 1.24 Beta -0.191 Annual Standard Deviation 0.33 Annual Variance 0.109 Information Ratio 3.672 Tracking Error 0.415 Treynor Ratio -6.722 Total Fees $33.00 |
from Alphas.MacdAlphaModel import MacdAlphaModel
from Execution.ImmediateExecutionModel import ImmediateExecutionModel
from Portfolio.EqualWeightingPortfolioConstructionModel import EqualWeightingPortfolioConstructionModel
from Risk.MaximumDrawdownPercentPerSecurity import MaximumDrawdownPercentPerSecurity
from Selection.UncorrelatedUniverseSelectionModel import UncorrelatedUniverseSelectionModel
class OptimizedTachyonShield(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2019, 8, 14) # Set Start Date
self.SetCash(100000) # Set Strategy Cash
# self.AddEquity("SPY", Resolution.Minute)
self.AddAlpha(MacdAlphaModel(12, 26, 9, MovingAverageType.Simple, Resolution.Daily))
self.SetExecution(ImmediateExecutionModel())
#self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())
self.SetPortfolioConstruction(MyPortfolioConstructionModel())
self.SetRiskManagement(MaximumDrawdownPercentPerSecurity(0.1))
self.SetUniverseSelection(UncorrelatedUniverseSelectionModel())
def OnData(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
Arguments:
data: Slice object keyed by symbol containing the stock data
'''
# if not self.Portfolio.Invested:
# self.SetHoldings("SPY", 1)
# Portfolio construction scaffolding class; basic method args.
class MyPortfolioConstructionModel(PortfolioConstructionModel):
# Create list of PortfolioTarget objects from Insights
def CreateTargets(self, algorithm, insights):
targets = []
for x in insights:
# Return an array of targets
targets.append(PortfolioTarget(x.Symbol, 100))
return targets