Skip to content

bug: exchange-qualified multi-symbol lists are only partially captured #108

Description

@keli-wen

Summary

extract_exchange_ticker_hints only captures the first symbol after an exchange prefix. Public PR Newswire releases use several human-edited list forms, so extending this behavior requires an explicit list grammar rather than a larger one-off regex. This is intentionally low priority because the observed incremental recall is very small.

Public examples

The following five shapes appeared in one public 24-hour PR Newswire window:

(OTCID: QVCAQ, QVCGQ, QVCPQ)
(NYSE: EVEX, EVEXW; B3: EVEB31)
(NYSE: TME and HKEX: 1698)
(NASDAQ: VMAR; TSXV: VMAR)
(NYSE: ASR; BMV: ASUR)

Current behavior and impact

The three dual-listing forms with an explicit prefix on each side already yield the supported US symbol (TME, VMAR, and ASR). The two true shared-prefix lists have limited additional value: (NYSE: EVEX, EVEXW; B3: EVEB31) loses only the warrant EVEXW, while the QVC group is entirely under OTCID, which is not in the current exchange whitelist. In this window, the net supported-symbol gain would therefore be approximately one warrant.

Design questions

  1. Which separators belong to the grammar: comma, semicolon, and, or a bounded subset?
  2. Where does a shared exchange group end when another EXCHANGE: prefix appears?
  3. Should numeric symbols and additional exchanges be handled here, or in a separate whitelist policy change?
  4. What should NewsTickerHint.raw mean for additional list members: the full group, the individual token, or a reconstructed exchange-symbol pair?

Suggested scope

Define the list grammar and raw semantics before implementation, then use the five strings above as deterministic regression fixtures. Keep this independent from #107, which only normalizes Markdown link and emphasis decoration on the ticker scan copy.

Environment

  • QuantMind version: 0.2.0 (master, commit ac89d20f8adc5cc8064cb6402ba4886d46bd41b5)
  • Observation source: public PR Newswire feed/article pages, 24-hour window

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: preprocessDeterministic acquisition, parsing, cleaning, and source handlingtype: bugExisting behavior violates its contract or documented expectation

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions