Overall Statistics |
Total Orders 1 Average Win 0% Average Loss 0% Compounding Annual Return -1.999% Drawdown 2.100% Expectancy 0 Net Profit -1.901% Sharpe Ratio -8.92 Sortino Ratio -11.322 Probabilistic Sharpe Ratio 0.042% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.057 Beta -0.072 Annual Standard Deviation 0.008 Annual Variance 0 Information Ratio -2.073 Tracking Error 0.103 Treynor Ratio 0.939 Total Fees $1.00 Estimated Strategy Capacity $7800000000.00 Lowest Capacity Asset QQQ RIWIV7K5Z9LX Portfolio Turnover 0.01% |
# region imports from AlgorithmImports import * # endregion class CustomShortableProviderAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2023, 4, 1) self.SetCash(100000) self.security = self.AddEquity("QQQ", Resolution.Daily) self.security.SetShortableProvider(MyShortableProvider()) def OnData(self, data: Slice): if self.Portfolio.Invested: return shortable_quantity = self.security.ShortableProvider.ShortableQuantity(self.security.Symbol, self.Time) if not shortable_quantity: return fee_rate = self.security.ShortableProvider.FeeRate(self.security.Symbol, self.Time) rebate_rate = self.security.ShortableProvider.RebateRate(self.security.Symbol, self.Time) self.SetHoldings(self.security.Symbol, -0.05, tag=f'Borrow fee rate {fee_rate}. Borrow rebate rate {rebate_rate}') class MyShortableProvider(NullShortableProvider): def FeeRate(self, symbol: Symbol, localTime: DateTime) -> float: return 0.0025 def RebateRate(self, symbol: Symbol, localTime: DateTime) -> float: return 0.0507 def ShortableQuantity(self, symbol: Symbol, localTime: datetime) -> float: return 10000