Overall Statistics |
Total Orders 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Sortino Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -4.873 Tracking Error 0.116 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# region imports from AlgorithmImports import * # endregion class CustomDividendYieldModelAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2024, 2, 5) self.SetEndDate(2024, 2, 22) self.SetCash(100000) option = self.AddOption("MSFT") option.SetFilter(0, 1, 0, 31) self.symbol = option.Symbol self.deltas = {} self.dividendYieldModel = {self.symbol.Underlying : MyDividendYieldModel()} def OnData(self, data: Slice): chain = data.OptionChains.get(self.symbol) if not chain: return expiry = min([x.Expiry for x in chain]) symbols = [x.Symbol for x in chain if x.Expiry == expiry and x.Right == OptionRight.Call and x.Symbol not in self.deltas] for symbol in symbols: self.deltas[symbol] = self.deltas.get(symbol, self.CreateDeltaIndicator(symbol)) def CreateDeltaIndicator(self, symbol: Symbol) -> Delta: dividendYieldModel = self.dividendYieldModel.get(symbol.Underlying) delta = Delta(symbol.Value, symbol, self.RiskFreeInterestRateModel, dividendYieldModel) self.RegisterIndicator(symbol, delta) self.RegisterIndicator(symbol.Underlying, delta) return delta def OnEndOfDay(self, symbol): delta = self.deltas.get(symbol) if delta: self.Plot('Delta', symbol.Value, delta.Current.Value) class MyDividendYieldModel: def GetDividendYield(self, date: datetime) -> float: return 0.02