Overall Statistics
Total Trades
1
Average Win
0%
Average Loss
0%
Compounding Annual Return
35.929%
Drawdown
9.700%
Expectancy
0
Net Profit
16.805%
Sharpe Ratio
2.455
Probabilistic Sharpe Ratio
76.085%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0.996
Annual Standard Deviation
0.169
Annual Variance
0.029
Information Ratio
-2.935
Tracking Error
0.001
Treynor Ratio
0.417
Total Fees
$1.49
from Portfolio.EqualWeightingPortfolioConstructionModel import EqualWeightingPortfolioConstructionModel

class CalculatingMagentaGalago(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2020, 8, 11)  # Set Start Date
        self.SetCash(100000)  # Set Strategy Cash
        
        self.AddAlpha(ConstantAlphaModel(InsightType.Price, InsightDirection.Up, timedelta(minutes = 20), 0.025, None))
        
        symbols = [ Symbol.Create("SPY", SecurityType.Equity, Market.USA) ]
        self.SetUniverseSelection( ManualUniverseSelectionModel(symbols) )
        
        self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())
        
        self.SetExecution(LimitOrderExecutionModel())
        

class LimitOrderExecutionModel(ExecutionModel):

    # Fill the supplied portfolio targets efficiently
    def Execute(self, algorithm, targets):
        for target in targets:
            open_quantity = sum([x.Quantity for x in algorithm.Transactions.GetOpenOrders(target.Symbol)])
            existing = algorithm.Securities[target.Symbol].Holdings.Quantity + open_quantity
            price = algorithm.Securities[target.Symbol].Price
            quantity = target.Quantity - existing
            if quantity != 0:
                algorithm.LimitOrder(target.Symbol, quantity, price)

    # Optional: Securities changes event for handling new securities.
    def OnSecuritiesChanged(self, algorithm, changes):
        pass