CTCLEAN TAPE
As of
06 NOV 26
Updated
22:13 ET
New York
--:--:--
DATA ✕ FAIL

What this is

Clean Tape: A morning markets dashboard and end-of-day report for US rates, credit, equities, FX and commodities. Every number passes a 7-check data-quality engine before anyone sees it.

"The tape" is trader slang for the market data feed — the stream of prices everyone reads. Clean Tape checks that feed before it reaches the screen.

It mirrors four internal tools an investment-technology team builds: a morning dashboard, a pipeline that turns vendor file drops into a clean queryable dataset, an automated end-of-day report that replaces a manual Excel workflow, and an engine that flags when a feed is late, incomplete or doesn't add up.

What's on the tape 33 series · 4 sources

Asset classSeries on the dashboardSourceIndependent cross-check
US ratesUST 3M · UST 2Y · UST 5Y · UST 10Y · UST 30Y · 10Y breakeven · 2s10s spread · 5s30s spread · 3m10y spreadFREDeach spread = long leg − short leg
CreditUS HY OASFRED—
VolatilityVIXYahoo Finance—
EquitiesS&P 500 (SPY) · Nasdaq 100 (QQQ) · Russell 2000 (IWM) · EAFE (EFA) · EM equities (EEM)Nasdaq, Yahoo Finance—
FXEUR/USD · USD/JPY · GBP/USD · AUD/USD · USD/CAD · USD/CHF · EUR/JPY · USD broad (Fed)FRED, Yahoo FinanceEUR/USD vs EUR/USD (ECB fix) · USD/JPY vs USD/JPY (ECB fix) · GBP/USD vs GBP/USD (ECB fix) · AUD/USD vs AUD/USD (ECB fix) · USD/CAD vs USD/CAD (ECB fix) · USD/CHF vs USD/CHF (ECB fix) · EUR/JPY vs EUR/USD × USD/JPY
CommoditiesWTI crude · Gold · Copper · Nat gas · WTI spot (EIA via FRED) · Oil ETF (USO) · Gold ETF (GLD) · Copper ETF (CPER) · Nat gas ETF (UNG)FRED, Nasdaq, Yahoo FinanceWTI crude vs WTI spot (EIA via FRED)

Plus reference data the engine needs: NYSE, US bond-market (SIFMA-style), ECB TARGET and FX trading calendars, per-source publication lags, and validity bounds per instrument — all in config/. Portfolio positions are MOCK.

The check engine 7 checks · runs on every pull, before anything is shown

CheckQuestion it answersRule (live config)
FreshnessIs the latest value as recent as the market calendar and the source's publishing delay say it should be?1 business day behind = WARN, ≥2 = FAIL
CompletenessAre trading days missing, did a download fail, did a file arrive with far fewer rows than usual?gaps in last 10 sessions (≥3 = FAIL); rows ±50% vs median = WARN
SchemaDoes each raw vendor file still have the columns and types the parser expects?any missing column / non-numeric value = FAIL
ValidityIs the number physically plausible, with no nulls on trading days and no duplicate records?outside per-instrument bounds or duplicate = FAIL; null = WARN
StalenessHas a value stopped changing (a dead feed)?same value ≥4 sessions = WARN
OutliersIs today's move abnormal for this series, measured against its own last year of daily moves?|z| > 4 = WARN, > 6 = FAIL (futures capped at WARN with a roll hint)
ConsistencyDo independent sources agree, and do derived numbers add up?Yahoo vs ECB FX: WARN > 1.1%–2.3%; EUR/JPY triangle: WARN > 0.10%

Each check rates every series OK, WARN or FAIL; the run takes the worst. A FAIL strikes the number through on this site, removes it from the P&L and the top movers, puts a red box at the top of the end-of-day report, and turns the GitHub Actions run red. An empty input or a crashed check is itself a FAIL — the engine never passes silently. Cross-source tolerances are calibrated from 2021→today history (p99 / p99.9 × 1.5). Live results: Health.

How a run works

  1. Pull — twice each weekday (morning and evening New York time) GitHub Actions fetches FRED, Yahoo Finance (Nasdaq as fallback) and ECB data and saves every response untouched with a manifest entry.
  2. Clean — responses are normalised into one table of observations (date, instrument, source, value). Missing values stay missing; unfinished intraday bars are never stored.
  3. Check — the 7-check engine above runs.
  4. Publish — spreads, changes, z-scores and the mock P&L are computed, then this site and the end-of-day report (HTML + Excel) are generated with every check result attached.

Limitations

Source code, architecture notes and build log on GitHub.

Instrument universe

IDNameSourceSymbolCalendarLag (bd)
DGS3MOUST 3MfredDGS3MOus_bond1
DGS2UST 2YfredDGS2us_bond1
DGS5UST 5YfredDGS5us_bond1
DGS10UST 10YfredDGS10us_bond1
DGS30UST 30YfredDGS30us_bond1
T10YIE10Y breakevenfredT10YIEus_bond1
HY_OASUS HY OASfredBAMLH0A0HYM2us_bond1
VIXVIXyahoo^VIXnyse0
SPYS&P 500 (SPY)yahooSPYnyse0
QQQNasdaq 100 (QQQ)yahooQQQnyse0
IWMRussell 2000 (IWM)yahooIWMnyse0
EFAEAFE (EFA)yahooEFAnyse0
EEMEM equities (EEM)yahooEEMnyse0
EURUSDEUR/USDyahooEURUSD=Xfx_weekday0
USDJPYUSD/JPYyahooUSDJPY=Xfx_weekday0
GBPUSDGBP/USDyahooGBPUSD=Xfx_weekday0
AUDUSDAUD/USDyahooAUDUSD=Xfx_weekday0
USDCADUSD/CADyahooUSDCAD=Xfx_weekday0
USDCHFUSD/CHFyahooUSDCHF=Xfx_weekday0
EURJPYEUR/JPYyahooEURJPY=Xfx_weekday0
DXY_BROADUSD broad (Fed)fredDTWEXBGSus_bond5
EURUSD_ECBEUR/USD (ECB fix)ecbEURUSDecb_target0
USDJPY_ECBUSD/JPY (ECB fix)ecbUSDJPYecb_target0
GBPUSD_ECBGBP/USD (ECB fix)ecbGBPUSDecb_target0
AUDUSD_ECBAUD/USD (ECB fix)ecbAUDUSDecb_target0
USDCAD_ECBUSD/CAD (ECB fix)ecbUSDCADecb_target0
USDCHF_ECBUSD/CHF (ECB fix)ecbUSDCHFecb_target0
EURJPY_ECBEUR/JPY (ECB fix)ecbEURJPYecb_target0
CL_FWTI crudeyahooCL=Fnyse0
GC_FGoldyahooGC=Fnyse0
HG_FCopperyahooHG=Fnyse0
NG_FNat gasyahooNG=Fnyse0
WTI_SPOTWTI spot (EIA via FRED)fredDCOILWTICOus_bond5
USOOil ETF (USO)yahooUSOnyse0
GLDGold ETF (GLD)yahooGLDnyse0
CPERCopper ETF (CPER)yahooCPERnyse0
UNGNat gas ETF (UNG)yahooUNGnyse0