{
  "id": 6348145,
  "title": "A ticker is not an identity",
  "url": "https://urgent.news/2026/09/08/a-ticker-is-not-an-identity",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-08T23:24:57.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/c1-anderson/a-ticker-is-not-an-identity-2b3f"
  },
  "original_language": "en",
  "account": "On August 20th, a trading system acquired a company it had never encountered before, using real funds, because two APIs disagreed about the meaning of four letters. The outcome was luck. The reporter outlines what went wrong and what they would implement differently if they began again. First, it's important to note that none of the following points resulted in financial gains. The strategy is complex and the reporter's method is not perfected. However, the data layer, which constitutes most of the work and is rarely discussed, is crucial. This report does not offer advice. The error Two systems. A screener that identifies potential investments, and a broker that executes them. The screener uses Yahoo symbols, whereas the broker has its own list. Yahoo indicated LB, which the reporter's code converted to LB_US_EQ for the broker's format, before placing the order. Yahoo's LB corresponds to LandBridge, approximately $89. The broker's LB_US_EQ is Bath & Body Works, around $19 – the name it previously used before renaming to BBWI. Despite the identical four letters, they represent different companies. The ticker had been reclassified, and the broker's instrument list still contained the old one. It survived only because the $19 price was below the $83 stop loss, triggering an automatic exit. Reversing the figures – a wrong instrument trading above its stop loss – would have resulted in holding an unchosen company indefinitely, with each subsequent analysis describing a different share. The solution lies in a simple principle: a symbol is merely a display label, not a primary key. In practice, when both sources reference the same company's name, they must agree before initiating an order. For suffixes, the screen checks if the candidate symbol exists in the index list: for suffix in _T212_SUFFIXES: cand = f\"{symbol}{suffix}\" if cand not in index: continue if not _names_agree(yahoo_name, index.get(cand)): print(f\"[ticker] {symbol} - {cand} REFUSED: {yahoo_name!r} is not {index.get(cand)!r}\") return None return cand The reporter emphasizes that name matching is approximate – for example, \"Bath & Body Works Inc\" versus \"Bath and Body Works\" – so it compares token sets rather than strings, and it fails safely. If it cannot confirm that the two entities are the same company, it refrains from trading. Brokers encode the exchange into the ticker. The reporter's initial version only accounted for two suffixes: (_US_EQ, _EQ). This was problematic as it silently excluded Canadian and most European listings, which were present in the broker's instrument list. For instance, HUT is represented as HUT_CA_EQ, signifying 552 Canadian listings that were inadvertently omitted without any error, warning, or log entry – the universe appeared smaller than it truly was. The complete list is: _T212_SUFFIXES = (_US_EQ, _EQ, _CA_EQ, _DE_EQ, _BE_EQ, _AT_EQ, _PT_EQ, _BB_EQ) The exchange itself is not indicated in the ticker. This oversight could have led to significant consequences. The broker's London listings all end with the suffix 'l_EQ'. This single suffix encompasses five different currencies: GBX (pence), USD (US dollars), GBP (pounds), EUR (euros), and CHF (Swiss francs). The reporter's instrument book revealed that the London suffix contains instruments in five currencies, including US dollars. The reporter stored the currency information daily from the broker's instrument endpoint, ensuring accurate position sizing, stop distances, and reporting. The free data endpoints offer limited information. Yahoo's chart endpoint, which is keyless and still functional, returns daily open/high/low/close/volume plus timestamps, sufficient for technical analysis like moving averages, RSI, and candlestick patterns. However, it lacks earnings dates or market capitalization, which are critical for informed decision-making. For markets where the chart endpoint is the only source, the reporter's system only serves as a watchlist and clearly states so in the associated emails, rather than pretending otherwise. Other endpoints, such as v7/quote and quoteSummary, require a crumb, which is scraped and unversioned, with an unsupported single-use key. This limitation necessitates careful implementation to avoid exhausting the daily quota and resulting in no data for subsequent calls.",
  "summary": "On the 20th of August my trading system bought a company I had never heard of, with real money, because two APIs disagreed about what four letters meant. It survived on luck. Here is what I got wrong, and the plumbing I would build first if I started again. Up front, because it changes how you should read this: none of what follows made me money. The strategy side is the hard part and mine is not…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}