Methodology

The whole point of adhdeck is that you don’t have to take our word for it. Here is exactly how the numbers are made — and what they deliberately exclude.

How a call becomes a number

Entry price

The official closing price on the call’s publish date (entry_date). If that date isn’t a trading day, we use the next trading day’s close.

Marking open positions

Open calls are marked to market at the latest available close (the “as-of” date of the most recent pipeline run). Closed calls are marked at the close on their exit_date.

Short returns

A short’s return is the negative of the price change: if the asset falls 10%, the short call is +10%.

Model portfolio

Equal-notional per call (each call’s weight defaults to 1). Each call contributes one equal-weighted position from its entry date. The equity curve is the combined, daily-rebalanced mark-to-market value of all open positions, rebased to 100 at the first call. Cash drag and financing/borrow costs are ignored in this version.

Benchmark

Each call is compared to its asset-class benchmark: equities, ETFs and ADRs vs the S&P 500 (SPY); crypto vs BTC. The portfolio-level benchmark is the S&P 500, with crypto calls individually benchmarked to BTC.

Unresolved calls

If price data is missing for a call, its status is unresolved: it is excluded from aggregate statistics and surfaced visibly in the table. We never silently drop or interpolate data to flatter the curve.

Data sources

  • Equities / ETFs / ADRs — daily closes from Yahoo Finance.
  • Crypto — daily closes from the CoinGecko API.
  • Calls — hand-authored YAML in /data/calls, committed to git (tamper-evident timestamps).

What we do and don’t count

We count
  • Public, time-stamped calls with a link to where we said it.
  • Both open and closed positions (open marked to the latest close).
  • Longs and shorts, equities and crypto.
We don’t count
  • Private or undated opinions, or anything we can’t link to.
  • Cash drag, leverage, financing, slippage, or fees (yet).
  • Backdated, edited, or deleted calls — history is never rewritten.

Exposure Graph — relationship map, not a forecast

The Exposure Graph is a hand-curated, sourced web of who-depends-on-whom. Many things people want exposure to can’t be bought directly (Anthropic, OpenAI, private labs); the graph traces every buyable path to them — equity holders, suppliers, partners, and the themes they ride.

What the score means

An impulse on one node propagates across directed edges, decaying with distance, flipping sign on inverse (competitor/substitute) links, and scaling by each edge’s weight × confidence. A node’s exposure is the sum over every path, normalised so the strongest reached node sits at ±1. It is a qualitative measure of relationship strength and distance — never a predicted return.

Two directions

Downstream proxies trace outward from an entity to the buyable things it drives (how to get exposure to it). Upstream drivers trace inward to what moves a ticker — its dependencies, suppliers, and themes.

Every edge is sourced and dated

No unsourced relationships: each carries a source_url and an as_of date, with a confidence weight shown on selection. Private-company links come only from public disclosures. An LLM may propose candidate edges, but a human curates every one — the curated graph is the moat.

Buyable and liquid only

Public tickers are validated against a committed registry; illiquid or untradeable “proxies” are flagged, because fake exposure is worse than none.

The compiled graph behind the explorer is available at /api/graph.json.

The derived data behind every chart and stat is available at /api/portfolio.json.

Not investment advice. Past performance is not indicative of future results.