Skip to content

Feature request: auto-refresh IBKR WS smd subscriptions on 15-min server-side expiry #145

@yoyoban

Description

@yoyoban

Describe Enhancement

Background

IBKR recently changed the behavior of the smd (market data) WebSocket topic (this new behavior showed up in my code on 2026-04-10). Confirmed by IBKR customer support:

The smd topic has recently changed in behavior. Now the topic will terminate automatically after 15 minutes and you will need to send a new request to continue to retrieve data for the instrument.

Support additionally noted that the server does not auto-unsubscribe on expiration, so the client is recommended to umd+ first, then smd+ again to cleanly refresh

Symptom for ibind users

With ibind 0.1.22 (OAuth, IbkrWsClient with IBIND_MAINTAIN_OAUTH=True)

  • websockets ping frames continue to ack.
  • IbkrWsClient.ready() returns True.
  • Tickler keeps pinging /tickle successfully — brokerage session stays alive.
  • But inbound tick frames for the affected conid simply stop arriving — no close frame, no error, no message.

In other words, everything at the connection and session layer looks healthy; only the per-topic market-data stream silently dies. This is the expected behavior per IBKR customer support.

Context

Each user has to implement their own background refresh loop. This is boilerplate that every ibind user subscribing to smd will now need. Given ibind already owns subscription state and already runs background threads (Tickler), it is a natural fit for the library to handle this transparently.

Your Environment

  • IBind version: 0.1.22
  • Python version (e.g. 3.10): 3.12
  • Authentication method (Gateway, IBeam or OAuth): OAuth 1.0a
  • Operating System and version: Ubuntu 24.04.3

BTW IBind is great! Thanks for bringing this together!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions