| Overall Statistics |
|
Total Orders 42 Average Win 3.23% Average Loss -21.16% Compounding Annual Return -99.998% Drawdown 99.600% Expectancy -0.800 Start Equity 1000 End Equity 4.52 Net Profit -99.548% Sharpe Ratio -0.542 Sortino Ratio -0.245 Probabilistic Sharpe Ratio 0.003% Loss Rate 83% Win Rate 17% Profit-Loss Ratio 0.15 Alpha -1.52 Beta 2.274 Annual Standard Deviation 1.826 Annual Variance 3.333 Information Ratio -0.675 Tracking Error 1.813 Treynor Ratio -0.435 Total Fees $42.09 Estimated Strategy Capacity $5200000.00 Lowest Capacity Asset GME SC72NCBXXAHX Portfolio Turnover 19.23% |
from AlgorithmImports import *
class ShortAvailabilityDataAlgorithm(QCAlgorithm):
def initialize(self) -> None:
self.set_start_date(2021, 1, 1)
self.set_end_date(2021, 7, 1)
self.set_cash(1000)
self.set_security_initializer(MySecurityInitializer(self.brokerage_model, FuncSecuritySeeder(self.get_last_known_prices)))
self.equity = self.add_equity("GME")
self.schedule.on(
self.date_rules.every_day(self.equity.symbol),
self.time_rules.after_market_open(self.equity.symbol, 10),
self.rebalance)
def rebalance(self) -> None:
symbol = self.equity.symbol
shortable_quantity = self.equity.shortable_provider.shortable_quantity(symbol, self.time)
if not shortable_quantity:
shortable_quantity = 0
self.plot('Total Shortable Quantity', symbol, shortable_quantity)
self.plot('Borrowing Cost', "Fee Rate", self.equity.shortable_provider.fee_rate(symbol, self.time))
self.plot('Borrowing Cost', "Rebate Rate", self.equity.shortable_provider.rebate_rate(symbol, self.time))
# Then, test whether we can short the desired quantity
quantity = self.calculate_order_quantity(symbol, -1)
if self.shortable(symbol, quantity):
self.market_order(symbol, quantity)
def on_margin_call_warning(self) -> None:
self.liquidate()
class MySecurityInitializer(BrokerageModelSecurityInitializer):
def __init__(self, brokerage_model: IBrokerageModel, security_seeder: ISecuritySeeder) -> None:
super().__init__(brokerage_model, security_seeder)
def initialize(self, security: Security) -> None:
super().initialize(security)
security.set_shortable_provider(InteractiveBrokersShortableProvider())