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())