This page documents where ForexFin's numbers come from, how often they refresh, and the data structures behind each tool. It is the operational companion to the methodology page, which covers the formulas. ForexFin does not yet expose a public API; this is reference documentation for anyone — human or machine — citing or auditing the data.
Every calculator is a self-contained static HTML page whose math runs in the browser; no server round-trip is needed to compute a result. Market-data pages (currency strength, correlation, DXY, gold, oil, yields, calendar, COT, and the weekly reports) are pre-rendered server-side: a set of small Node.js workers poll the data sources on a fixed cadence, cache the results in a local SQLite database, and write fully-formed HTML — including a quotable answer block and a citation line — back to disk atomically. The crawler-visible page is therefore always complete and dated, with no dependence on client-side JavaScript.
| Source | Used for | Notes |
|---|---|---|
ECB reference rates (via frankfurter.dev) | Cross-currency conversion in the calculators; fallback for strength & correlation | Official daily reference rates, published once per business day around 16:00 CET. |
| Financial Modeling Prep (FMP) | Spot quotes, daily closes (OHLC), treasury curve, economic calendar, COT | Starter tier; daily EOD granularity (no sub-daily bars). Primary source for market-data pages. |
| CFTC (Commitments of Traders) | Weekly large-speculator positioning | Public-domain regulatory data, released Fridays for the preceding Tuesday. |
| Surface | Cadence |
|---|---|
| Calculator answer blocks (default-scenario figures) | Spot every ~60s; end-of-day inputs every ~4h |
| Currency strength & correlation | Recomputed on each end-of-day tick (~4h) from the latest two daily closes / rolling window |
| DXY, gold, oil (spot) | ~60s |
| Treasury yields, economic calendar | ~4h / daily |
| COT positioning | Weekly (after the CFTC release) |
| Weekly Strength & Volatility Reports | Rebuilt several times a day; only the current (still-forming) week changes — settled weeks are immutable once closed |
The local cache holds a small number of normalized tables, all keyed for idempotent upserts:
(symbol, date) with the closing price. The base series
for strength, correlation, volatility and the moving averages.Internally, FX rates are normalized to a single canonical shape — units of each currency per one USD — so that the FMP path and the ECB fallback feed the math identically and the source can switch without changing results.
The spread-cost figure accounts for three factors, in order:
0.01 for JPY pairs, 0.0001 otherwise).The spread is treated as a full cost paid on entry; commissions, if any, are separate and not assumed.
Every market-data page carries an explicit as-of stamp. Live spot surfaces stamp the UTC minute of the last poll; end-of-day surfaces stamp the date of the close used. The weekly reports pin their as-of to the data's closing date so that a settled week renders identically forever — its numbers never change after the week closes. If a data source is temporarily unavailable, the page serves the last good cached value rather than a blank, and the as-of reflects that cached timestamp.
A concise site summary for language models lives at /llms.txt.
Formulas are documented on the methodology page; the published data archive is under
/reports/.