Daily commands
These are the everyday ones — and the first covers the rest.
The whole morning routine in one command — runs
report, then drafts, then audit, for every pair.
reports/ and drafts/, plus the audit cards on screen.The institutional report — narrative and quantitative — for every active pair.
reports/, per pair: {pair}-{date}.json ·
-ar.txt · -en.txt · -cone.svg
(the probability-cone chart, ready to drop into Word or a PDF) ·
-validation.json (the pre-publication check results)
Exactly the same report but for one specified pair — the same five files.
English Substack drafts for every pair.
drafts/{pair}.txtA quality audit of the numbers — self-calibration, not a report. It is the one command that checks rather than produces.
Periodic commands
Not every day. All of them read stored data — zero provider calls.
A weekly summary built from the archived reports.
drafts/weekly-ar.txt and weekly-en.txtTurns published reports into site pages.
WebPublisher:OutputDirectory.The public calibration page — boundary breaches against the 5% target, per pair. This is a trust and sales instrument, not a report.
audit or backfill, when refreshing the site.calibration.htmlSetup commands
Once, or rarely.
Fetches and stores the full daily history, deepening what the analysis can reach back into.
Builds the VaR and ES record out of the past with a walk-forward sweep.
seedhistory — this is what brings the calibration cards to life, ES especially.audit cards.A verified backup of the database — its integrity is checked before it counts.
backups/quant-YYYYMMDD-HHmmss-fff.dbA preview of the stored weekend candles. It deletes nothing.
Actually deletes those candles.
backup, and after reading the preview.Why a command that deletes candles exists at all
The GOLD_SILVER_HISTORY feed returned a row per calendar day —
26% of them Saturdays and Sundays, which are not trading sessions. Ingestion now drops them,
and accumulated history is cleaned with this command.
The effect was measured: gold's VaR95 over the live window moved from 96.33 to 113.44, up 17.8%. Silver moved 17.9%. The euro, sterling, the yen and the US 10-year were unchanged — they carry no weekend candles to begin with.
Running as a service
Runs the bot live: the Telegram receiver, the automatic scheduler, and continuous scoring.
Supported markets
Three active symbols. What separates them is the shape of the data, not the engine.
Euro / US dollar, FX · FX_DAILY endpoint · full OHLC ·
quality complete
Gold / US dollar · GOLD_SILVER_HISTORY · one price per day,
no intraday movement · quality FAIR
Silver / US dollar · same feed and same shape · quality FAIR — and its calibration still reads "sample too small", because it has fewer outcomes it can score
The metals' limit — and it is a data limit, not an engine limit
The free tier returns one price per day (about 5,300 candles back to 2011), with no separate open, high and low. The consequence:
- Works well: trend, momentum, risk (VaR), state, support and resistance, the liquidity map, historical context.
- Weak or empty: candle patterns, intraday liquidity sweeps, fair-value gaps — all of which need movement inside the day.
- Market quality settles at FAIR and may return "no read" more often than the euro does.
seedhistory will not lift it — this
is the shape of the data itself. Raising the quality needs a paid provider that supplies
intraday movement.
In short: dotnet run -- report XAUUSD 1D works perfectly —
just expect FAIR from the metals rather than complete.
The provider quota
The free allowance is 25 requests a day, with a burst limit of roughly one a second — handled automatically by spacing the calls.
report · drafts · seedhistory ·
backfill (one call per symbol — it fetches the full history, then sweeps it)
audit · weekly · publishsite ·
publishcalibration · backup · purgeweekend —
all read stored data only
What does a report cost? Don't plan on a remembered number
report XAUUSD 1D measured 5 calls — the pair itself, its
cross-asset companions, and the macro series.
That number is not fixed. It moves with the fetch spacer (candles pulled a moment ago are not pulled again), with which companions are configured, and with the economic calendar and fundamental analysis being disabled at present.
report, drafts, seedhistory and
todayreport each print this run's call count at the end. The counter is
per-process — every run starts at zero, there is no daily total.
It is the reference, not this page.
The four audit cards
What audit prints to the terminal.
Is the 95% expected range breached on about 5% of days, as it should be? Includes the breach-clustering test — Christoffersen.
On breach days, did the average actual loss match the declared Expected Shortfall — a
ratio near 1? It appears once enough breach days have accumulated, after
backfill or through live accrual.
When the system marks a level as tested, how often did it actually hold? A historical sweep with no lookahead.
Is the published 30-day correlation figure dependable, or does it swing?
Notes
Use 1D, not 4H
The free provider is daily only, and asking for 4H produces an
empty report.
The practical route to the institutional report is the report command
The HTTP endpoint api/reports/institutional/... is behind operator
permission, not open.