| Overall Statistics |
|
Total Orders 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Start Equity 100000 End Equity 100000 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 -0.049 Tracking Error 0.093 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
from AlgorithmImports import *
import numpy as np
class IndicatorDisrepancy(QCAlgorithm):
def initialize(self):
self.set_cash(100000)
self.set_start_date(2024, 10, 1)
self.set_end_date(2024, 10, 31)
self.resolution = Resolution.DAILY
self.spy = self.add_equity("SPY", self.resolution).symbol
self.rsi_manual_warmup = RelativeStrengthIndex(14, MovingAverageType.SIMPLE)
self.rsi_auto_warmup = self.rsi(self.spy, 14, MovingAverageType.SIMPLE, self.resolution)
self.ready = False
def on_data_consolidated(self, sender, bar):
self.rsi_manual_warmup.update(bar)
if not self.ready:
return
for i in [0, 1]:
manual_value = self.rsi_manual_warmup[i].value
auto_value = self.rsi_auto_warmup[i].value
if abs(manual_value - auto_value) > 0.01:
self.error(f"idx={i} Manual: {manual_value:.4f} Auto: {auto_value:.4f} do not match after ready for bar at {bar.time}-{bar.end_time}")
def on_data(self, data: Slice):
if self.ready:
return
assert self.spy in data
# warm up indicator
history = self.history[TradeBar](
self.spy, periods=50, resolution=self.resolution
)
self.consolidator = TradeBarConsolidator(timedelta(days=1))
self.consolidator.data_consolidated += self.on_data_consolidated
self.subscription_manager.add_consolidator(self.spy, self.consolidator)
for bar in history:
self.consolidator.update(bar)
self.warm_up_indicator(self.spy, self.rsi_auto_warmup, self.resolution)
self.ready = True