α
AlphaSteve
← Brain index

Benchmark-sourcing discipline

US equity index closes (S&P, Dow, Nasdaq, Russell, VIX), commodity closes (WTI, Brent, gold), rate closes (10Y, 2Y, DXY), and pipeline-name closing prices live in one place per trading day: 13-Research/Daily-Scans/YYYY-MM-DD-closes.md.

The PM scan writes the file. The portfolio-daily and the next-morning AM scan read it. No other task pulls benchmark closes from the web independently.

This rule exists because the audit log shows seven recurring failures (entries #003, #005, #006, #007, #008, #009, #010) when multiple tasks pulled the same data independently and disagreed. One source of truth removes the surface where the disagreement lives.

The closes file

Path: 13-Research/Daily-Scans/YYYY-MM-DD-closes.md

Written by: alphasteve-daily-deep-value-scan-pm as its first action, before the Market close context section.

Read by:

  • alphasteve-portfolio-daily for SPY close, pipeline-name closes, alpha computation
  • alphasteve-daily-deep-value-scan (next morning) for prior-day closes in the Market context section

Structure:

---
date: YYYY-MM-DD
status: settled | partial | not-yet-settled
written_by: alphasteve-daily-deep-value-scan-pm
retrieved_at: HH:MM ET
sources_used: [source-A-name, source-B-name]
---

# Closes — YYYY-MM-DD

## Indices, rates, commodities

| Instrument | Close | Day Δ | Day Δ % | Source A value | Source B value | Status | Notes |
|---|---|---|---|---|---|---|---|
| S&P 500 | 7,563.63 | +43.27 | +0.58% | 7,563.63 (Yahoo) | 7,563.63 (CNBC) | settled |  |
| Nasdaq | 26,917.47 | +242.73 | +0.91% | 26,917.47 (Yahoo) | 26,917.47 (CNBC) | settled |  |
| Dow | ... | | | | | | |
| Russell 2000 | ... | | | | | | |
| VIX | ... | | | | | | |
| WTI | ... | | | | | | |
| Brent | ... | | | | | | |
| Gold | ... | | | | | | |
| 10Y yield | ... | | | | | | |
| 2Y yield | ... | | | | | | |
| DXY | ... | | | | | | |

## Pipeline names (watchlist + portfolio + recent thesis folders)

| Ticker | Close | Day Δ % | Source A | Source B | Status |
|---|---|---|---|---|---|
| SPY | 754.66 | +0.56% | 754.66 (Yahoo) | 754.66 (Google) | settled |
| PLTR | 141.51 | -1.39% | 141.51 (Yahoo) | 141.51 (Google) | settled |
| CAG | 12.68 | +0.79% | 12.68 (Yahoo) | 12.68 (Google) | settled |
| ... | | | | | |

## Discipline used
- Each row cross-verified against two independent sources (within 0.05%)
- Sign of day's change checked against today-vs-yesterday arithmetic in the same source
- Pulled at HH:MM ET, after 4:30 PM cash settlement
- Status `partial` if only one source available; status `not-yet-settled` if pulled before 4:30 PM ET

The two rules for the writer (PM scan)

1. Cross-verify against two independent sources

Every row needs two independent values that agree within 0.05%. If they disagree, the row gets status partial, both values are logged, and an explanatory note names what conflicted.

Acceptable source pairs:

  • Yahoo Finance + CNBC same-day market wrap
  • Trading Economics + Investing.com daily close
  • WSJ market data + Yahoo Finance
  • Official CME settlement + TradingEconomics

Not acceptable as a source: live aggregator widgets without date confirmation, social media reports.

2. Direction sanity check before publishing each row

For every instrument, compute today_close - yesterday_close explicitly and verify the sign matches the % change shown in the source. If they disagree, the source has stale data — find a different source.

The two rules for readers (portfolio-daily, AM scan)

3. Do not pull benchmark closes from the web independently

If the closes file exists for today, read it. Do not duplicate the work. Do not "double-check" with a fresh web pull — that re-introduces the disagreement the closes file exists to prevent.

4. Handle missing or partial data explicitly

If the closes file is missing for the date you need, or a row is marked partial or not-yet-settled, use the previous trading day's close as the reference value and explicitly note the gap in your output. Do NOT fabricate today's close from a fresh web pull.

Audit-log entries this closes

Entries #003, #005, #006, #007, #008, #009, #010 — all the same fault, all on the surface where multiple tasks pulled the same data independently. One canonical closes file removes that surface.

Linked

  • sources-policy — citation tiers (this file extends the tier policy to benchmark closes)
  • voice-and-style — sentence-level discipline
  • audit-log — the failure record this file is designed to close