| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -72.574% Drawdown 10.500% Expectancy 0 Net Profit -6.070% Sharpe Ratio -1.158 Probabilistic Sharpe Ratio 24.956% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.17 Beta 0.623 Annual Standard Deviation 0.482 Annual Variance 0.233 Information Ratio 0.213 Tracking Error 0.306 Treynor Ratio -0.896 Total Fees $14.75 Estimated Strategy Capacity $160000.00 Lowest Capacity Asset QQQ XDR43ZB6073A|QQQ RIWIV7K5Z9LX |
from AlgorithmImports import *
class DemoAlgoPortfolioTargetPercentBug(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 3, 15)
self.SetEndDate(2020, 4, 1)
self.SetCash(1_000_000)
self.UniverseSettings.DataNormalizationMode = DataNormalizationMode.Raw
self.Settings.FreePortfolioValuePercentage = 0
self.targetPercent = 0.1
self.AddEquity("QQQ", Resolution.Minute)
self.symbol = Symbol.CreateOption("QQQ", Market.USA, OptionStyle.American, OptionRight.Call, 174, datetime(2020, 4, 17))
self.AddOptionContract(self.symbol, Resolution.Minute)
def OnData(self, data: Slice):
if not self.Portfolio.Invested:
if self.symbol in data.QuoteBars:
target = PortfolioTarget.Percent(self, self.symbol, self.targetPercent)
self.MarketOrder(self.symbol, target.Quantity)
def OnOrderEvent(self, orderEvent):
if orderEvent.Status == OrderStatus.Filled:
portfolioWeight = self.Portfolio[orderEvent.Symbol].HoldingsCost / self.Portfolio.TotalPortfolioValue
self.Debug(f"\nActual portfolio weight of {orderEvent.Symbol.Value} after order fill: {portfolioWeight:.2%}. Target Percent was {self.targetPercent:.2%}.\n")