QuantSquawk accuracy ledger: grading methodology v1 ==================================================== This document fixes the rules used to grade every score in the public accuracy ledger (https://quantsquawk.com/accuracy). Its SHA-256 digest is timestamped in Bitcoin through OpenTimestamps, so the rules cannot be changed after results are known. Any change will be published as a new version (v2, v3, ...) with its own timestamp; earlier versions stay online. 1. Which headlines enter the ledger - Only headlines scored by the AI model (no fallback heuristic scores). - Only headlines from a named real source. - Only event tier "Tier 1: Systemic" or "Tier 2: Major". - Each headline text is recorded once. Rows are never deleted. 2. What is recorded at scoring time (and hashed) - headline, source, tier, score (-100 to +100), instrument, scored_at. - Leaf hash = sha256(JSON.stringify([headline, source, tier, score, instrument, scored_at])), lowercase hex. - Leaves are rolled hourly into a Merkle root (sha256(left + right) over hex strings; an odd node pairs with itself) and the root is timestamped with OpenTimestamps. 3. Which instrument a score is graded against - If the headline names a mapped company, that company's ticker. - Otherwise a proxy by category: Technology -> QQQ, Energy -> XLE, everything else -> SPY. - One instrument per headline. Headlines that affect several assets are graded on this single instrument only; this is a known limitation. 4. Prices - Last traded price from Yahoo Finance at the time of each check. - Entry price: taken at the first check after scoring. If no entry price is captured within 15 minutes of scoring, the row is EXCLUDED. - 30-minute price: taken at the first check at least 30 minutes after scoring. If none is captured within 90 minutes of scoring, the row is EXCLUDED. - End-of-day price: taken at the first check at least 15 minutes after the close of the US cash session (treated as 21:00 UTC) on or after the scoring time. - Checks run every 5 minutes. Missed prices are never backfilled. 5. What counts as a hit - move = (later price - entry price) / entry price. - Hit if the sign of the score matches the sign of the move. - Unmeasurable (not counted either way): a score of exactly 0, or an absolute move under 0.01%. - Graded separately at 30 minutes and at end of day. 6. Published statistics - Rolling 30-day window, using the 30-minute result. - Bands: all scored rows; |score| >= 60; |score| >= 80 and Tier 1. - A hit rate is not displayed for a band until it has at least 30 resolved rows. - Excluded rows are not counted in any statistic. 7. What this does not measure - Directional agreement only. Not returns, not tradable after spreads, slippage or timing. Not a track record of trading performance. - Scores are AI-generated estimates. Not investment advice. Effective for all rows graded from the time this document was first timestamped.