| Overall Statistics |
|
Total Trades 6 Average Win 14.75% Average Loss -0.38% Compounding Annual Return 17.899% Drawdown 18.600% Expectancy 18.772 Net Profit 38.981% Sharpe Ratio 0.996 Probabilistic Sharpe Ratio 49.784% Loss Rate 50% Win Rate 50% Profit-Loss Ratio 38.54 Alpha 0.107 Beta 1.01 Annual Standard Deviation 0.182 Annual Variance 0.033 Information Ratio 0.978 Tracking Error 0.11 Treynor Ratio 0.179 Total Fees $14.51 |
class OptimizedResistanceCoil(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2015, 1, 1)
self.SetEndDate(2017, 1, 1)
# we do not want to rebalance on insight changes
self.Settings.RebalancePortfolioOnInsightChanges = False;
# we want to rebalance only on security changes
self.Settings.RebalancePortfolioOnSecurityChanges = True;
self.SetUniverseSelection(CustomUniverseSelectionModel("CustomUniverseSelectionModel", self.CustomSelection))
self.SetAlpha(ConstantAlphaModel(InsightType.Price, InsightDirection.Up, TimeSpan.FromMinutes(20), 0.025, None));
# By sending in a rebalancing function which returns None we ensure that rebalancing will not happen due to period being up
self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel(lambda time: None))
self.SetExecution(ImmediateExecutionModel())
def CustomSelection(self, time):
if time.year == 2015:
return [ "FB", "SPY" ]
return [ "AAPL", "IBM" ]
def OnOrderEvent(self, orderEvent):
self.Log(str(orderEvent))