Overall Statistics |
Total Trades 188 Average Win 1.92% Average Loss -1.65% Compounding Annual Return 5.169% Drawdown 24.100% Expectancy 0.183 Net Profit 34.432% Sharpe Ratio 0.488 Probabilistic Sharpe Ratio 8.625% Loss Rate 45% Win Rate 55% Profit-Loss Ratio 1.17 Alpha 0.048 Beta -0.011 Annual Standard Deviation 0.096 Annual Variance 0.009 Information Ratio -0.331 Tracking Error 0.194 Treynor Ratio -4.33 Total Fees $2666.21 |
import numpy as np from QuantConnect.Python import PythonQuandl class OptimizedResistanceRadiator(QCAlgorithm): def Initialize(self): self.SetStartDate(2014, 12, 31) self.SetCash(1000000) self.SetBrokerageModel(BrokerageName.AlphaStreams) self.ticker = 'SPY' self.equity = self.AddEquity(self.ticker, Resolution.Daily) self.equity.SetDataNormalizationMode(DataNormalizationMode.Raw) self.equity_symbol = self.equity.Symbol self.PMI_data = self.AddData(QuandlPMICompositeIndex, "ISM/MAN_PMI", Resolution.Daily) self.nextRebalance = self.Time self.rebalance_delta = 1 self.Settings.FreePortfolioValuePercentage = 0.01 self.SetPortfolioConstruction(InsightWeightingPortfolioConstructionModel()) self.SetExecution(ImmediateExecutionModel()) def OnData(self, data): if self.Time < self.nextRebalance:# or not self.equity.Exchange.ExchangeOpen: return if data.ContainsKey('ISM/MAN_PMI'): self.Plot("Data Chart", "PMI Composite Index", self.Securities['ISM/MAN_PMI'].Price) #hist = self.History(['ISM/MAN_PMI'], timedelta(days = 10), Resolution.Daily) if self.Securities['ISM/MAN_PMI'].Price >= 50.: if not self.Securities[self.equity_symbol].Invested: self.EmitInsights(Insight.Price(self.equity_symbol, timedelta(days=15), InsightDirection.Up, 1., 1., "MyAlphaModel", 1.)) else: self.Liquidate() self.EmitInsights(Insight.Price(self.equity_symbol, timedelta(days=15), InsightDirection.Flat, 1., 1., "MyAlphaModel", 1.)) ### Update next rebalance time self.nextRebalance = self.Time + timedelta(days=self.rebalance_delta) class QuandlPMICompositeIndex(PythonQuandl): def __init__(self): self.ValueColumnName = "PMI"