Skip to content

Chart captions: no human-readable instrument name — a TradFi ticker like NFLX says nothing on its own #691

Description

@Alena-Selezneva

Asked by @wikedPNL in the MoonTerminal chat, with a screenshot of the caption block over the candles:

NFLX-USDT
Fusdt 01
Binance Futures

His words: "предлагаю добавить поле с человеческим названием тикера под парой, не все названия тикеров помнишь и есть неочевидные" — he wants a second line under the pair:

NFLX-USDT
Netflix
Fusdt 01
Binance Futures

Where it lands

That block is the Instrument caption preset — Coin, Core, Venue in LabelZone::ZoneTop (moon-core/src/config/chart_labels/presets.rs). Captions are already a user-composed catalogue of fields (Настройки → Подписи чарта, + Подпись, ChartLabelField in chart_labels/fields.rs), so the ask is one new field in that catalogue, which the user then places wherever he wants. No new layout work: rows already auto-stack.

What is missing

Nothing in the terminal holds a human-readable name for an instrument. The catalog record carries coin, market_currency_canonic, quote, base_currency, leading1000/k1000 and the token tags — no name, no description, no full name.

The wire does carry market_currency_long and the terminal reads it, but it is not usable as a name: the field lands only in the coin_naming diagnostic log channel, and the cores fill it with the ticker itself on every venue (the only value that is not a ticker is a HyperLiquid predict market's UI slug). Making the cores fill it with a real name is a core-side decision — noting it only so nobody assumes the name is already on the wire.

Why it matters now, and not only for stocks

Binance Futures currently lists 163 TradFi contracts / 162 distinct tickers (underlyingType: EQUITY, contractType: TRADIFI_PERPETUAL) — AAPL, NFLX, TSLA, and also ETFs and leveraged ETFs: SPY, QQQ, SOXL, TQQQ, UVXY. A trader reads BTC at a glance, but CRWV, LYTE, KORU or AGPU on a chart is a guess. The same is true of unfamiliar crypto tickers.

The terminal already knows an instrument is TradFi: the core sends the TradFi tag (bit 11 of the token-tag mask), and the Теги монеты caption prints it. So the chart can already say "this is a stock" — it just cannot say which one.

Where the name can come from (probed live today, public endpoints, no keys)

  • Gate — GET /api/v4/spot/currencies: 5600 rows, every one carries name, and stock rows are marked category: ["stocks"]. Covers 158 of Binance's 162 TradFi tickers (misses BBX, FWDI, LYTE, TQQQ) and 628 of its 655 crypto tickers — the 27 misses are all multiplier spellings (1000PEPE, 1MBABYDOGE), which the catalog already resolves through market_currency_canonic. Samples: NFLX → Netflix, SPY → SPDR S&P 500 ETF Trust, BTC → Bitcoin.
  • Bybit — GET /v5/market/instruments-info?category=linear: fullName is filled for its 194 stock symbols (NFLXUSDT → Netflix) and empty for crypto.
  • Binance — nothing. exchangeInfo carries only underlyingType/underlyingSubType, and the public asset directory (bapi/asset/v2/public/asset/asset/get-all-asset) does not list equity tickers at all.

So the lookup must be by ticker, from a directory, not from the venue the chart happens to sit on — which matters, because the venue in the request is exactly the one that has no names. The terminal already fetches public venue REST without keys (valuation rate providers, trade replay), so the mechanism is not new: one snapshot per session, cached by ticker, refreshed lazily.

Suggested shape

  • New ChartLabelField (instrument_name), resolving the name for display_coin() / canonic.
  • Prints nothing when the directory has no row — the same "print nothing rather than guess" rule Quote and SessionProfit already follow. A wrong company name on a chart is worse than no name.
  • Available in the catalogue for any row; whether it also joins the Instrument preset by default is a taste call for the team.

MoonBot parity

This is new behaviour, not a parity fix. MoonBot's chart caption prints the market name only. It does collect ticker → full name (CoinsLongNames, filled from Bybit/BitGet/HyperLiquid site APIs and CoinMarketCap), but uses it solely to pick coin logos, and it does not cover stock tickers. The one name a MoonBot chart shows is the user's own per-coin comment, typed by hand.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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