| Overall Statistics |
|
Total Trades 403 Average Win 4.09% Average Loss -2.83% Compounding Annual Return 472.642% Drawdown 57.700% Expectancy 0.071 Net Profit 23.413% Sharpe Ratio 9.102 Probabilistic Sharpe Ratio 59.665% Loss Rate 56% Win Rate 44% Profit-Loss Ratio 1.44 Alpha 15.473 Beta -3.882 Annual Standard Deviation 1.776 Annual Variance 3.155 Information Ratio 8.815 Tracking Error 1.854 Treynor Ratio -4.164 Total Fees $17249.40 |
from Alphas.EmaCrossAlphaModel import EmaCrossAlphaModel
from Execution.ImmediateExecutionModel import ImmediateExecutionModel
from Portfolio.EqualWeightingPortfolioConstructionModel import EqualWeightingPortfolioConstructionModel
from FuturesUniverseSelectionModel import FuturesUniverseSelectionModel
class VentralModulatedReplicator(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2015, 12, 20) # Set Start Date
self.SetEndDate(2016, 2, 1)
self.SetCash(100000) # Set Strategy Cash
# self.AddEquity("SPY", Resolution.Minute)
self.AddAlpha(EmaCrossAlphaModel(50, 200, Resolution.Minute))
self.SetExecution(ImmediateExecutionModel())
self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())
self.SetRiskManagement(TrailingStopRiskManagementModel(0.03))
self.SetUniverseSelection(FuturesUniverseSelectionModel(self.SelectFuturesSymbols))
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)
def SelectFuturesSymbols(self, utcTime):
ticker = Futures.Indices.SP500EMini
return [ Symbol.Create(ticker, SecurityType.Future, Market.CME) ]from Selection.FutureUniverseSelectionModel import FutureUniverseSelectionModel
from datetime import date, timedelta
class FuturesUniverseSelectionModel(FutureUniverseSelectionModel):
def __init__(self, select_future_chain_symbols):
super().__init__(timedelta(1), select_future_chain_symbols)
def Filter(self, filter):
return (filter.Expiration(timedelta(0), timedelta(90))
.OnlyApplyFilterAtMarketOpen())