| Overall Statistics |
|
Total Orders 2 Average Win 0% Average Loss 0% Compounding Annual Return 0.328% Drawdown 0.000% Expectancy 0 Start Equity 100000 End Equity 100039.32 Net Profit 0.039% Sharpe Ratio -42.2 Sortino Ratio -54.579 Probabilistic Sharpe Ratio 63.429% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.054 Beta 0.011 Annual Standard Deviation 0.001 Annual Variance 0 Information Ratio -1.873 Tracking Error 0.101 Treynor Ratio -4.779 Total Fees $2.00 Estimated Strategy Capacity $7500000.00 Lowest Capacity Asset SPY R735QTJ8XC9X Portfolio Turnover 0.03% |
from AlgorithmImports import *
class KalmanFilterStatisticalArbitrageDemo(QCAlgorithm):
def initialize(self) -> None:
self.set_start_date(2025, 1, 1)
self.spy = self.add_equity("SPY", extended_market_hours=True).symbol
self.order_properties = InteractiveBrokersOrderProperties()
self.order_properties.time_in_force = TimeInForce.DAY
self.order_properties.outside_regular_trading_hours = True
def on_data(self, slice):
if not self.portfolio.invested \
and self.spy in slice \
and not self.is_market_open(self.spy) \
and self.securities[self.spy].exchange.hours.is_open(self.time, extended_market_hours=True):
self.limit_order(self.spy, 1, slice[self.spy].close, order_properties=self.order_properties)