The government savings bond
Buy the ten-year at 2.80% during the sale window. It pays roughly three times a bank deposit for the same safety, and the window is short.
RBP368ARBP298AABFTH
The financial world in five layers — what is happening, what it means, and what it does to money you already hold. Every figure carries its source and its observation date.
A number without a date and a source is a rumour. Every figure below carries one of four honesty classes, and they are not interchangeable. The fourth one, AWAITING, is deliberately not a value: several composite gauges need a rolling five-year distribution to mean anything, and a single observation cannot produce one. Those tiles say so instead of showing a plausible guess.
| LIVE | Pulled from the publisher's own series page and re-checked on 2026-07-25. |
| STATIC | Hand-curated from primary research; carries its own review-by date. |
| DERIVED | Arithmetic on live and static inputs, computed at build time. |
| AWAITING | Needs rolling history that one observation cannot provide. |
| STANDARD | Textbook or industry-standard construction, used the way its publisher intends. |
| ADAPTED | A standard idea, modified — different denominator, different window or a Thai-specific reference point. |
| INVENTED | Built for this dashboard. Not found in the literature. The formula is stated in full so it can be argued with. |
Live counts across the 20 indicators: 9 standard, 6 adapted, 5 invented.
In the deployed system this paragraph is written by a language model that is given the computed numbers and nothing else, with an explicit instruction never to invent a figure, never to forecast with confidence, and never to use trading-desk language. What follows is the fallback text, written here under the identical constraints, and it is what renders until that model has run.
The clearest fact on this page is not about markets at all. A basket of the world's energy and food costs 63% more in baht than it did in 2016 — put the other way round, the same baht now buys 39% less of it. That is not because those things got dramatically more expensive in dollars; it is because the currency you earn in is weaker. The Baht Import Burden Index sits at 163 against a base of 100, which is why household costs feel worse than any dollar commodity chart suggests.
The reason the baht is soft is on the page too. Thai policy pays 1.00% while US overnight money pays 3.64%. Thai rates sit 2.64 points below American ones, which is through the tripwire, and a gap that wide tends to keep pulling money toward dollars for as long as it lasts. The US two-year at 4.37% sits above overnight money, which is the market's way of saying it expects US rates to go up rather than down — so the pressure is more likely to widen than close on its own.
In America, borrowing is genuinely expensive: the ten-year government bond pays 2.43% after inflation. That is close to the level where the safest asset in the world competes on merit with everything riskier. Yet nobody looks frightened — the extra return demanded from weak corporate borrowers is 2.79 points, and the volatility index is 18.6. Calm markets and expensive money is a workable combination; what makes it fragile is that the Federal Reserve's cash cushion, the reverse repo facility, has drained to $0.68bn from more than $2,300bn. There is no buffer left to absorb the next drain.
The physical picture is mixed and mostly reassuring for someone living in Thailand. Oil at $86.99 is well below the $95 level at which it starts doing real damage here. Thailand holds 108 days of oil cover, which is a genuine cushion — India holds 9.5 days, which is none at all, and that is a fact about any India fund rather than about India. The uncomfortable number is refining: China handles 66% of the processing of eight critical minerals on average and 99% of gallium. Nothing prices that daily, which is exactly why it is worth knowing.
Each gauge blends three or four series into one score on a single scale that runs from −100 (restrictive) to +100 (supportive). The blend is a weighted average of five-year z-scores — how unusual each driver is against its own history — which is what makes an interest rate and a volatility index comparable at all. Every composite here reads "awaiting" until the pipeline has accumulated its history, and that is the honest answer: a z-score cannot be computed from one observation. What each tile shows instead is its live drivers and a directional read that can be defended from a single reading.
Is cash flowing into markets or draining out of them?
| driver | wt | latest reading | |
|---|---|---|---|
| net_usd_liquidity | 50% | + | $5.917tn LIVE 2026-07-22 |
| us.stress.sofr_iorb | 25% | - | -0.01 pp DERIVED 2026-07-24 |
| us.stress.nfci | 25% | - | -0.55 index LIVE 2026-07-17 |
The change in the flow of new credit, as a share of the economy. It leads actual activity by roughly two to three quarters, which is why it is watched instead of loan totals.
Read more about credit impulseHow unusual today's reading is compared with its own history, measured in standard deviations. 0 = perfectly normal, ±1 = mildly unusual, ±2 = happens about 5% of the time, ±3 = rare.
z = (today − mean) ÷ standard deviation, both taken over a chosen lookback window. Two things about that make it weaker than it looks. The window is a judgement call, not a fact — this dashboard uses ~1250 observations for dailies (five years) and shortens it where the publisher carries less history, and a different window gives a different answer for the same day. And the ±2 ≈ 5% rule assumes a bell curve, which financial series emphatically do not follow: they have fat tails, so genuinely extreme readings arrive far more often than the normal distribution predicts. Read a z-score as a ranking, not a probability.
Read more about z-scoreHow expensive is it to borrow, after inflation?
| driver | wt | latest reading | |
|---|---|---|---|
| us.rates.10y_real | 50% | - | 2.43% LIVE 2026-07-23 |
| us.credit.hy_oas | 30% | - | 2.79% LIVE 2026-07-24 |
| us.rates.2s10s | 20% | + | +0.34pp DERIVED 2026-07-23 |
An interest rate after subtracting expected inflation — the return that actually buys you more goods.
Read more about real yieldThe difference between two interest rates. Widening spreads mean rising perceived risk.
In credit it is the extra yield a borrower pays over a government bond of similar maturity — compensation for default risk and for illiquidity, and those two are not separable from the outside. That matters when reading a widening: it can mean the market thinks default is likelier, or merely that the paper has become harder to sell.
Read more about spreadHow sensitive an asset's price is to interest-rate changes. Long-duration assets — 30-year bonds, unprofitable growth stocks, infrastructure — fall hardest when rates rise.
Formally the weighted-average time to receiving an asset's cash flows, which is why it applies to equities at all: a company whose profits arrive in a decade is mathematically a long bond, and is discounted like one. It is also why the AI complex and the bond market are more correlated than they look — both are priced off the same discount rate.
Read more about durationHow willing are investors to own risky things right now?
| driver | wt | latest reading | |
|---|---|---|---|
| us.vix | 35% | - | 18.58 LIVE 2026-07-24 |
| us.credit.hy_oas | 35% | - | 2.79% LIVE 2026-07-24 |
| us.equity.spx | 30% | + | 7411.98 index LIVE 2026-07-24 |
The difference between two interest rates. Widening spreads mean rising perceived risk.
In credit it is the extra yield a borrower pays over a government bond of similar maturity — compensation for default risk and for illiquidity, and those two are not separable from the outside. That matters when reading a widening: it can mean the market thinks default is likelier, or merely that the paper has become harder to sell.
Read more about spreadA credit spread with the value of the bond's embedded options stripped out, so bonds with different call features can be compared honestly.
Most corporate bonds are callable — the issuer may repay early, which is valuable to the issuer and costly to the holder. A raw spread on a callable bond therefore mixes credit compensation with the price of that option, and two issuers with identical credit quality can show different spreads purely because one has a call and the other does not. OAS values the option with an interest-rate model and removes it, leaving something closer to pure credit. Every ICE BofA series on this dashboard — HY, IG, CCC — is an OAS, which is what makes differencing them defensible.
Read more about option-adjusted spreadThe fall from a previous peak, expressed as a percentage.
Asymmetric in a way that is easy to underrate: a 50% fall needs a 100% gain to recover, so avoiding large drawdowns matters more to a long-horizon result than capturing the last part of a rally.
Read more about drawdownIs the US dollar squeezing the rest of the world?
| driver | wt | latest reading | |
|---|---|---|---|
| us.dollar.broad | 50% | - | 120.53 LIVE 2026-07-17 |
| id.fx.usdidr | 25% | - | 18,052.65 IDR LIVE 2026-07-27 |
| in.fx.usdinr | 25% | - | 96.28 INR LIVE 2026-07-17 |
The income you earn simply for holding a position, before any price movement — for currencies, the interest-rate difference between the two sides.
Carry is compensation for a risk, never free money, and the risk is usually a rare large loss against a steady small gain. That shape is why carry strategies look excellent on average return and poor on worst case, and why the honest test of one is the breakeven move rather than the yield.
Read more about carryIs the real economy speeding up or slowing down?
| driver | wt | latest reading | |
|---|---|---|---|
| xx.commodity.copper | 40% | + | 13,552.04 USD/t LIVE 2026-06-30 |
| us.equity.sox | 40% | + | 501.98 index LIVE 2026-07-27 |
| us.rates.2s10s | 20% | + | +0.34pp DERIVED 2026-07-23 |
The average price over the last 200 trading days. Prices above it are conventionally read as an uptrend, below as a downtrend.
It is a convention rather than a law, and it is a lagging one by construction — a 200-day mean cannot turn until well after the price has. Its usefulness is as a shared reference point that many participants watch, which makes it partly self-fulfilling.
Read more about 200-day averageHow unusual today's reading is compared with its own history, measured in standard deviations. 0 = perfectly normal, ±1 = mildly unusual, ±2 = happens about 5% of the time, ±3 = rare.
z = (today − mean) ÷ standard deviation, both taken over a chosen lookback window. Two things about that make it weaker than it looks. The window is a judgement call, not a fact — this dashboard uses ~1250 observations for dailies (five years) and shortens it where the publisher carries less history, and a different window gives a different answer for the same day. And the ±2 ≈ 5% rule assumes a bell curve, which financial series emphatically do not follow: they have fat tails, so genuinely extreme readings arrive far more often than the normal distribution predicts. Read a z-score as a ranking, not a probability.
Read more about z-scoreAre the physical things economies actually run on getting cheaper or dearer?
| driver | wt | latest reading | |
|---|---|---|---|
| xx.index.energy | 35% | - | 198.8 STATIC Jun 2026 |
| xx.index.food | 25% | - | 131.2 STATIC Jun 2026 |
| xx.commodity.lng_asia | 25% | - | $17.19 STATIC Jul 2026 |
| xx.commodity.coal_au | 15% | - | 150.36 USD/t LIVE 2026-06-01 |
How unusual today's reading is compared with its own history, measured in standard deviations. 0 = perfectly normal, ±1 = mildly unusual, ±2 = happens about 5% of the time, ±3 = rare.
z = (today − mean) ÷ standard deviation, both taken over a chosen lookback window. Two things about that make it weaker than it looks. The window is a judgement call, not a fact — this dashboard uses ~1250 observations for dailies (five years) and shortens it where the publisher carries less history, and a different window gives a different answer for the same day. And the ±2 ≈ 5% rule assumes a bell curve, which financial series emphatically do not follow: they have fat tails, so genuinely extreme readings arrive far more often than the normal distribution predicts. Read a z-score as a ranking, not a probability.
Read more about z-scoreIs the AI infrastructure boom still being funded, or is it starting to strain?
| driver | wt | latest reading | |
|---|---|---|---|
| us.credit.quality_spread | 40% | - | +7.17pp DERIVED 2026-07-24 |
| us.equity.sox | 30% | + | 501.98 index LIVE 2026-07-27 |
| us.semi.ip | 20% | + | 181.9 LIVE 2026-06-01 |
| us.equity.ndx_spx | 10% | + | 145.0 DERIVED 2026-07-24 |
How far apart the strong and weak borrowers in a market are priced. It widens before an index-level move, because lenders retreat from the worst names first.
An index spread is a weighted average, and averages hide the thing you want. When lenders start declining marginal deals, the refusal shows up as the bottom rating tier repricing while the index barely moves — so a rule keyed to the index reads calm through the early phase. Measured here as CCC OAS − HY OAS. On 2026-07-23 that gap was 7.14pp, the widest in the three years these series exist, while the HY index sat at a comfortable 2.77%.
Read more about credit dispersionA credit spread with the value of the bond's embedded options stripped out, so bonds with different call features can be compared honestly.
Most corporate bonds are callable — the issuer may repay early, which is valuable to the issuer and costly to the holder. A raw spread on a callable bond therefore mixes credit compensation with the price of that option, and two issuers with identical credit quality can show different spreads purely because one has a call and the other does not. OAS values the option with an interest-rate model and removes it, leaving something closer to pure credit. Every ICE BofA series on this dashboard — HY, IG, CCC — is an OAS, which is what makes differencing them defensible.
Read more about option-adjusted spreadHow much a bond's price moves for a given change in its credit spread — the credit analogue of interest-rate duration.
Price change ≈ −(spread duration × change in spread). It gives you the number that actually matters for a carry trade: the breakeven widening, which is roughly spread ÷ spread duration per year. Worked on this dashboard's own data — CCC-and-lower yields 9.91pp over Treasuries at a spread duration of roughly 3 years, so about 330bp of widening in a year wipes out the entire year's extra income. The tail has widened ~82bp in three months. That is the arithmetic behind 'high yield is not high return'.
Read more about spread durationThe number of years a company assumes an asset lasts, which sets how fast it is depreciated — and therefore how large reported profits are.
Annual depreciation = cost ÷ useful life, so extending assumed life raises reported profit without changing a single dollar of cash. The sensitivity is large at AI-capex scale: on $725bn of spending, moving servers from a 5-year to a 6-year life cuts annual depreciation by 725/5 − 725/6 ≈ $24bn a year. That is why the assumption is worth reading in the notes to the accounts rather than taking earnings at face value, and why cash flow is the harder number to dress up. It cuts both ways — if accelerators genuinely wear out or go obsolete faster than assumed, the correction lands as an impairment.
Read more about useful lifeWhen a supplier funds its own customer's purchases, so money leaves as investment and returns as revenue.
The accounting can be entirely proper while the economics are circular: reported revenue rises without new end demand, and every downstream metric built on revenue — backlog, order growth, capex-versus-revenue — inherits the distortion. It was a documented feature of the late-1990s telecom build-out and is a live question in AI infrastructure. The diagnostic is not the revenue line but whether the customer could have paid from its own cash flows.
Read more about vendor financingHow much of an index sits in a handful of names — and therefore how little diversification an index fund is actually providing.
The rigorous measure is the Herfindahl index, the sum of squared weights, whose reciprocal gives the 'effective number' of holdings: an index of 500 names where the top 10 hold 40% behaves like far fewer than 500 independent bets. Concentration is not a separate risk from a sector risk — it is the mechanism that turns one into a portfolio problem for someone who believes they are diversified.
Read more about market concentrationHow friendly is the environment for a baht-based investor?
| driver | wt | latest reading | |
|---|---|---|---|
| th.carry.vs_fed | 30% | + | -2.64pp DERIVED 2026-07-24 |
| th.fx.usdthb | 25% | - | 33.55 LIVE 2026-07-27 |
| th.equity.set | 25% | + | 2,408 STATIC Jul 2026 |
| xx.commodity.brent | 20% | - | $86.99 LIVE 2026-07-20 |
The income you earn simply for holding a position, before any price movement — for currencies, the interest-rate difference between the two sides.
Carry is compensation for a risk, never free money, and the risk is usually a rare large loss against a steady small gain. That shape is why carry strategies look excellent on average return and poor on worst case, and why the honest test of one is the breakeven move rather than the yield.
Read more about carryAn interest rate after subtracting expected inflation — the return that actually buys you more goods.
Read more about real yieldThe regime score is a weighted blend of six gauges (liquidity 28% · cost_of_money 22% · risk_appetite 14% · dollar_pressure 13% · growth_pulse 13% · resource_security 10%). It is plotted on two axes — how easy money is, and how fast the economy is growing — giving four named weather states. Thailand conditions is deliberately excluded from the blend: it is the home lens, not part of the world picture, and folding it in would double-count the baht.
Current quadrant: awaiting — it is a function of the gauge scores above, so it inherits their missing history rather than guessing. The tripwires below do not have this problem, because they run off named physical thresholds instead of statistical ones.
A tripwire is not a forecast. It is a line drawn in advance at a level that has a physical meaning — days of fuel, dollars a barrel, a share of world refining, days until a licence lapses — so that the decision about what matters is made when calm rather than when it fires. Each one below is expanded with the mechanism by which it reaches a household in Thailand. Click any row.
A deeply negative gap means Thai deposits pay far less than dollar deposits, and the baht tends to drift weaker while that lasts. Two consequences for a baht earner: money you will not spend for years earns more in USD than in a Thai savings account, and USD assets you already own need less currency hedging because the currency is working for you rather than against you. The mirror image applies to borrowing — the cheap currency to owe is the one paying the lower rate, which here is baht.
India absorbs an oil shock through the rupee and the fuel bill, not through reserves. If you hold an India equity fund, treat a Brent spike as a direct hit to it and size that position knowing there is no buffer behind it.
Thai rice is losing on price, which is a slow drag on the rural economy, the export line of the trade balance and eventually the baht. For you this is a reason not to be overweight Thai domestic-consumption stocks on a rural-recovery story — the story needs this number to fall first.
Above 2.5% the US government pays a real return after inflation — the highest-quality competition anything in your portfolio faces. Two things you likely hold feel it: expensive growth and tech funds, whose value sits mostly in distant future profits, and gold, which pays no interest and therefore looks worse the more safe cash yields. This is the condition under which plain US Treasuries are worth owning on their own merits, and under which adding to gold rewards patience over urgency. Below 2.2% the argument reverses.
Reserves are spread around the world; refining is not. This is the single most concentrated risk in the entire dashboard and it is not priced daily, so there is nothing to trade on it — it is a reason to keep some gold and to avoid concentrating your equity in companies whose input list runs through one country.
China's 9 Oct 2025 controls — five further elements plus a 0.1% extraterritorial rule — are suspended until 10 Nov 2026. This is a diary entry, not a trade. Put the date in your calendar and check the week before: if it lapses, the affected industrials fall first and gold catches a bid — do not act early on it.
Copper is the cleanest read on world industrial demand, and this ratio says whether the copper price you see is telling you about demand or about a border. When it is stretched, discount copper as a growth signal — do not read a high price as the world getting stronger.
Thailand burns imported gas for its marginal electricity, so this feeds your power bill and the margins of Thai industrials with roughly a one-quarter lag. Sustained above $20, favour energy producers over energy consumers inside your Thai equity sleeve.
A half-empty US reserve means one large, price-insensitive buyer standing under the oil market. That is mildly bad for a Thai household budget and mildly good for any energy exposure you own. It argues against betting on cheap oil, not for betting on expensive oil.
Thailand imports nearly all its oil, so sustained $95 Brent is a tax on the country you live in: fuel bill up, baht down, SET earnings squeezed — three hits from one event, and your salary is exposed to the same one. That concentration is the risk, not the oil price itself. The standard offsets are assets that gain when this happens: unhedged USD holdings, or energy exposure. Both are far cheaper to own before the trigger than after it.
Dollar liquidity is the tide under everything you own, Thai or foreign. Positive means the tide is coming in: a kinder-than-usual window to put idle cash to work in what you already intended to hold. Negative means stop adding and let cash build instead. It says nothing about WHICH asset — only whether now is a forgiving time to be buying at all.
Thresholds and state logic are mirrored from src/ingest/runner.ts. If the page and the
deployed system ever disagree, the TypeScript is the source of truth and this is the bug.
This is the only section that names things you can actually buy. Each stance is produced by arithmetic on the readings above — never by a language model — and each one shows its score, how much of its evidence exists yet, and the number that would reverse it. Sorted so anything on a published clock comes first, which today means 2 of them. Open the explainer before acting on any of it: the card is a summary of an argument, not the argument.
Buy the ten-year at 2.80% during the sale window. It pays roughly three times a bank deposit for the same safety, and the window is short.
RBP368ARBP298AABFTH
If you pay Thai income tax, buy ThaiESG units before 31 December 2026 — ฿300,000 of deduction on a five-year hold, and it drops to ฿100,000 on eight years in January.
ThaiESGRMF
Keep adding to one broad global fund on a fixed schedule. This is the anchor holding; everything else on this page is a variation around it.
WORLDA01VWRAIWDA
Above about US$60,000, hold the Irish-domiciled version of any fund rather than the US-listed one. It owns the same companies and keeps your estate out of the IRS.
VWRACSPXIGLN
Keep a standing allocation and add to it patiently rather than urgently. Gold's job here is insurance against things the rest of the page cannot price.
GLDIGLNThai gold 96.5%GOLDM01
Hold what a global fund already gives you. A separate S&P 500 or Nasdaq holding on top of that is a concentration decision, and the cost of money argues against making it now.
SP50001CSPXNDX01
Split it. Money you will spend in Thailand within about five years stays in baht; genuinely long-horizon idle cash earns materially more in dollars, and you are paid to wait.
USD FCDIB01BONDUS01THB savings
Hold a modest position and add slowly. The currency backdrop helps; the growth signal that would confirm it is not readable at the moment, so this deserves patience rather than conviction.
CN01INDIA01E1VFVN3001CHINA
Do not add here; if it has grown into a large position, prefer the plain index fund. The costs are certain and the yield advantage is not.
TDEX
Hold enough Thai equity to match the baht bills you will actually pay, and no more. The readings do not support adding here right now.
TDEXBSET100ThaiESG
Monitor rather than buy. Protection is priced at roughly what history suggests, and the version available to you protects against American inflation, not Thai inflation.
IDTP
Stances, thresholds and instrument choices are computed in src/lib/positions/engine.ts from
the instrument reference in src/lib/positions/universe.ts, last verified against issuer and
exchange pages on 2026-07-25. Nothing on this page knows what you already own. It is decision
support with its reasoning printed underneath it, not advice — see the disclaimer at the foot of the
page, which means what it says.
Everything above is the same for everybody. This part is not. A trading desk reads "Brent above $95" as a relative-value trade between two markets; someone living in Bangkok reads it as a higher fuel bill, a weaker home currency and a hit to the local index all at once — three exposures to one event, which is the part an institutional note never mentions, because a desk does not buy its own petrol. Each item below names the mechanism first, then the consequence for money already held, and only then any option. None of it is a recommendation to buy or sell any specific instrument.
Three separate readings on this page say the same thing from different directions: the baht is structurally soft while Thai rates sit 2.64 points below US rates. For someone who earns, spends and saves in baht, that is not a market opinion — it is the denominator of everything. The practical consequence is unglamorous: money you genuinely will not need for several years currently earns more in dollars than in a Thai savings account, and foreign assets you already hold need less currency hedging than usual, because the currency movement is working with you rather than against you. The mirror image is borrowing — the cheaper currency to owe is the one paying less, which here is baht.
A Thai salary, a Thai fuel bill and a Thai equity holding are three separate exposures to one event. An oil shock hits all three at once, which is a concentration most people never notice because the three arrive through different doors. Brent is currently $86.99, comfortably below the $95 level where that starts to bite, and Thailand's 108 days of cover is a real absorber. That combination is what makes now — rather than during a spike — the cheap moment to hold whatever offsets it, whether that is unhedged dollar assets or energy exposure.
At 2.43% after inflation, US Treasuries pay a real return without taking any business risk. That is the benchmark every other holding has to beat. Two categories feel it most: funds whose value rests on profits far in the future — most technology and growth funds — and gold, which pays no interest at all and therefore looks worse the better safe cash gets. Neither of those is a reason to sell. It is a reason to notice that a dull-looking government bond is currently a real alternative rather than a place to park.
Reserves of critical minerals are spread across many countries; the refining of them is not. Gallium is 99% Chinese, rare-earth separation 86%, and no market quotes that risk from day to day, which means it cannot be traded and can only be prepared for. Gold is the standard preparation, and it has a second job for a Thai holder: priced in baht it is ฿142,137 per ounce, so it hedges the currency and the geopolitics in one position. The counter-argument is directly above — real yields at 2.43% are gold's natural enemy, which argues for patience in adding rather than urgency.
Copper is usually the most honest indicator of world industrial demand. It is currently not honest, because 1.85 times as much metal sits in American warehouses as in global ones — a tariff-arbitrage position, not a demand signal. Anything you read that infers global strength from the copper price this quarter is reading a border, not an economy. The Chokepoint-Adjusted Growth Signal on this page handles that by shrinking copper's weight to 57%; a headline that does not adjust is simply wrong.
India holds 9.5 days of strategic oil cover against Japan's 248. That is not a view on Indian companies; it is arithmetic about what happens to the rupee and the fuel bill if supply is interrupted, and it means an Indian equity fund carries an oil sensitivity that is invisible in its holdings list. If both an India fund and Thai assets are held, they are not diversified against an oil event — they are the same bet twice, with India on the shorter fuse.
China's October 2025 export controls on five additional elements, including a rule that reaches non-Chinese manufacturers whose products contain as little as 0.1% of the controlled material, are suspended until 10 November 2026. That is 106 days away and it is the only item on this entire dashboard with a known date attached. Everything else here is a level or a trend; this is an event. If the suspension lapses, the first thing to move is industrial companies with Chinese inputs, and gold usually catches a bid.
20 derived indicators. 9 are standard constructions used the way their publishers intend, 6 are standard ideas adapted (usually by changing the denominator or the reference point to something a Thai household actually faces), and 5 were built here and appear in no literature. The invented ones carry their formula in full precisely because they have no external authority behind them.
stock ÷ average daily net imports
→ days
What it reads. How long the country runs if imports stopped tomorrow. It makes reserves of wildly different absolute sizes comparable, which raw tonnes never do.
So what, for you. Thailand at 108 days and India at 9.5 are not the same investment. An oil spike passes through India's currency and fuel bill almost immediately; Thailand has three months of absorber. If you hold both, size the India position for the shorter fuse.
th.oil.days_cover
·
in.oil.days_cover
·
jp.oil.days_cover
·
cn.oil.days_cover
static inputs
ending stocks ÷ total annual use × 100
→ %
What it reads. Below roughly 20% grain prices stop responding to demand smoothly and start jumping. World rice is currently comfortable, which is the single best piece of news in the resource picture for a Thai household budget.
So what, for you. Comfortable stocks argue against holding agricultural commodity funds as an inflation hedge right now. The inflation you face is energy and currency, not food.
xx.food.rice_stocks_to_use
static inputs
above-ground stock ÷ annual mine production
→ years
What it reads. About 67 years. Everything ever mined is still here, and a year of world mining adds roughly 1.5% to it. That one ratio is the entire argument for gold as a monetary asset rather than a commodity: no price rise can conjure meaningful new supply.
So what, for you. This is why a gold allocation is a structural decision, not a trade. It also means the gold price is set by who wants to hold the existing stock, not by mine output news.
xx.gold.above_ground
·
xx.gold.mine_supply
static inputs
Σ (country share)² × 10,000
→ index 0–10,000
What it reads. Reserves are spread around the world; the furnaces that turn ore into usable material are not. A country that mines something it cannot process does not control it.
So what, for you. Nothing to trade — this is not priced daily. It is a reason to hold some gold and to check whether your equity funds are concentrated in manufacturers whose input list runs through one country.
How much of an index sits in a handful of names — and therefore how little diversification an index fund is actually providing.
The rigorous measure is the Herfindahl index, the sum of squared weights, whose reciprocal gives the 'effective number' of holdings: an index of 500 names where the top 10 hold 40% behaves like far fewer than 500 independent bets. Concentration is not a separate risk from a sector risk — it is the mechanism that turns one into a portfolio problem for someone who believes they are diversified.
Read more about market concentrationxx.refine.gallium
·
xx.refine.rare_earth
·
xx.refine.graphite
·
xx.refine.cobalt
·
xx.refine.lithium
·
xx.refine.aluminium
·
xx.refine.copper
·
xx.refine.nickel
static inputs
gold USD/oz ÷ Brent USD/bbl
→ barrels per ounce
What it reads. The cleanest way to separate a monetary story from an energy story. If both gold and oil are rising but the ratio is flat, that is money losing value. If the ratio is falling, it is a genuine energy supply problem.
So what, for you. Directly useful: it tells you whether your gold holding is hedging the thing you actually face. Against a supply-driven oil shock, gold is a poor hedge and energy equity is a better one.
Where today sits in the full range of the past few years. The 90th percentile means only 10% of past readings were higher.
Often the honest alternative to a z-score, because it makes no assumption about the shape of the distribution — it just counts. The cost is that it discards magnitude: the 99th percentile reads the same whether today is a whisker above the old high or double it.
Read more about percentilexx.commodity.gold
·
xx.commodity.brent
live inputs
WALCL − Treasury General Account − overnight reverse repo
→ USD tn
What it reads. The single best-known proxy for whether money is being added to or drained from markets, read as a 13-week change rather than a level.
So what, for you. Read as a lead, not a signal. When it turns down it has historically pressured emerging market equity — which includes the SET — with a one-to-two month lag. It is a reason to slow down new buying, not to sell.
The change in the flow of new credit, as a share of the economy. It leads actual activity by roughly two to three quarters, which is why it is watched instead of loan totals.
Read more about credit impulseHow unusual today's reading is compared with its own history, measured in standard deviations. 0 = perfectly normal, ±1 = mildly unusual, ±2 = happens about 5% of the time, ±3 = rare.
z = (today − mean) ÷ standard deviation, both taken over a chosen lookback window. Two things about that make it weaker than it looks. The window is a judgement call, not a fact — this dashboard uses ~1250 observations for dailies (five years) and shortens it where the publisher carries less history, and a different window gives a different answer for the same day. And the ±2 ≈ 5% rule assumes a bell curve, which financial series emphatically do not follow: they have fat tails, so genuinely extreme readings arrive far more often than the normal distribution predicts. Read a z-score as a ranking, not a probability.
Read more about z-scoreus.fed.walcl
·
us.fed.tga
·
us.fed.rrp
live inputs
10-year Treasury yield − 2-year Treasury yield
→ pp
What it reads. Inversion has preceded most US recessions, with a long and variable lag.
So what, for you. Too slow to act on alone. Its use here is as one input to the growth axis of the regime map, which is what actually drives the recommendations.
How sensitive an asset's price is to interest-rate changes. Long-duration assets — 30-year bonds, unprofitable growth stocks, infrastructure — fall hardest when rates rise.
Formally the weighted-average time to receiving an asset's cash flows, which is why it applies to equities at all: a company whose profits arrive in a decade is mathematically a long bond, and is discounted like one. It is also why the AI complex and the bond market are more correlated than they look — both are priced off the same discount rate.
Read more about durationThe difference between two interest rates. Widening spreads mean rising perceived risk.
In credit it is the extra yield a borrower pays over a government bond of similar maturity — compensation for default risk and for illiquidity, and those two are not separable from the outside. That matters when reading a widening: it can mean the market thinks default is likelier, or merely that the paper has become harder to sell.
Read more about spreadHow unusual today's reading is compared with its own history, measured in standard deviations. 0 = perfectly normal, ±1 = mildly unusual, ±2 = happens about 5% of the time, ±3 = rare.
z = (today − mean) ÷ standard deviation, both taken over a chosen lookback window. Two things about that make it weaker than it looks. The window is a judgement call, not a fact — this dashboard uses ~1250 observations for dailies (five years) and shortens it where the publisher carries less history, and a different window gives a different answer for the same day. And the ±2 ≈ 5% rule assumes a bell curve, which financial series emphatically do not follow: they have fat tails, so genuinely extreme readings arrive far more often than the normal distribution predicts. Read a z-score as a ranking, not a probability.
Read more about z-scoreus.rates.10y
·
us.rates.2y
live inputs
10-year TIPS yield
→ %
What it reads. The hurdle rate for every other asset on earth, and the single biggest driver of the gold price after the dollar.
So what, for you. Above 2.5% is the level at which holding cash starts genuinely competing with owning growth equities. It is also the standard argument against gold — which is why gold rising through a high real yield, as it has, is worth noticing.
An interest rate after subtracting expected inflation — the return that actually buys you more goods.
Read more about real yieldHow sensitive an asset's price is to interest-rate changes. Long-duration assets — 30-year bonds, unprofitable growth stocks, infrastructure — fall hardest when rates rise.
Formally the weighted-average time to receiving an asset's cash flows, which is why it applies to equities at all: a company whose profits arrive in a decade is mathematically a long bond, and is discounted like one. It is also why the AI complex and the bond market are more correlated than they look — both are priced off the same discount rate.
Read more about durationus.rates.10y_real
live inputs
days of cover − 90
→ days
What it reads. One signed number per country, comparable across countries that report differently.
So what, for you. Thailand is +18 and India is −80.5. That gap is the reason a single oil shock produces two very different equity outcomes across two markets a non-specialist would lump together as 'Asia'.
th.oil.days_cover
·
in.oil.days_cover
·
jp.oil.days_cover
·
cn.oil.days_cover
static inputs
central-bank net purchases ÷ annual mine supply × 100
→ %
What it reads. Above roughly 20%, official institutions rather than jewellers or investors are setting the marginal gold price — and central banks are famously price-insensitive buyers.
So what, for you. The most under-appreciated fact in the resource data: 2025 official buying FELL 21% and gold still made a record. Something other than central banks is bidding, which makes the rally less structurally safe than the 'central banks are buying' story implies.
xx.gold.cb_purchases
·
xx.gold.mine_supply
static inputs
rolling 260-observation Pearson correlation of Δ%SET and Δ%Brent
→ correlation −1…+1
What it reads. Thailand imports oil, so intuition says the SET should fall when oil rises. In practice the index is heavy in PTT and energy-linked names, so the relationship is often the opposite of the intuition. This measures which one is true right now.
So what, for you. Decides whether your SET holding is already an oil hedge or needs one. If the correlation is positive, buying an energy fund on top of a SET position is doubling a bet you already have.
th.equity.set
·
xx.commodity.brent
live inputs
mean of min-max normalised (arable land per person, inverse fuel import share, days of cover)
→ score 0–100
What it reads. A slow structural ranking, not a market signal. It moves once a year at most.
So what, for you. Useful for deciding where a decade-long allocation sits, not what to do this quarter. Indonesia and Malaysia score well; Singapore and Japan score badly and compensate with capital and institutions, which this score cannot see.
th.land.arable_pc
·
th.energy.import_share
·
th.oil.days_cover
live inputs
(0.60 × energy index + 0.40 × food index) × (USDTHB ÷ 35.3), base 2016 = 100
→ index 2016 = 100
What it reads. Dollar commodity indices understate what a Thai household pays, because the baht usually weakens in the same move that lifts oil. This multiplies the two so the compounding is visible in one line.
So what, for you. When this is rising fast, two things follow for you personally: your cost of living is going up before the CPI print says so, and unhedged foreign-currency assets are quietly protecting you. It is an argument for holding some savings outside the baht, not for trading anything.
xx.index.energy
·
xx.index.food
·
th.fx.usdthb
live inputs
z(price, 5y) − z(inventory, 5y)
→ z difference
What it reads. High price with full warehouses is a positioning or tariff story and tends to reverse. High price with empty warehouses is real scarcity and tends to persist. The subtraction is what separates them.
So what, for you. Tells you whether an oil spike is likely to fade before it reaches your electricity bill. Only a genuinely scarce spike justifies changing anything in a portfolio.
xx.commodity.wti
·
us.oil.commercial
planned inputs
z(copper, 5y) × d, where d = 1 − min(1, |COMEX÷LME − 1| ÷ 2)
→ adjusted z
What it reads. At the current 1.85x COMEX/LME ratio the discount factor is 0.575 — copper's growth signal is being marked down by 42.5% because a large part of the price is a border, not a factory.
So what, for you. Stops you buying cyclicals and ASEAN exporters on a copper rally that is really a tariff trade. When the raw copper z-score and this number disagree, believe this one.
xx.commodity.copper
·
xx.metals.comex_lme_copper
live inputs
composite of z-scores, weights food 35 / transport fuel 25 / electricity 25 / borrowing 15, every price converted to THB first, scored −100 (pressure) … +100 (relief)
→ score −100…+100
What it reads. The four things that actually move a Thai household's monthly outgoings, in one number, measured in the currency it is paid in. Negative means pressure.
So what, for you. This is a personal-finance number before it is an investment one. Sustained pressure means your real savings rate is falling even if your salary is not, and that argues for holding more of your emergency cash in a form that keeps up — not for taking more investment risk to compensate.
xx.index.food
·
xx.commodity.brent
·
xx.commodity.lng_asia
·
th.policy_rate
·
th.fx.usdthb
live inputs
(fuel imports as % of merchandise imports ÷ 100) × Δ% energy price index
→ % of import bill
What it reads. A 20% oil move does not mean the same thing in Singapore, Thailand and Malaysia. This scales the world shock by how exposed each country's import bill actually is, which is the number that eventually shows up in the current account and then in the currency.
So what, for you. The bridge from a headline you read to your own currency. A sustained positive reading for Thailand is the earliest warning that the baht has a problem coming — usually one to two quarters before the trade data confirms it.
th.energy.import_share
·
xx.index.energy
live inputs
gold USD/oz × USDTHB
→ THB/oz
What it reads. Your return on gold is the PRODUCT of the metal and the currency. Gold in baht can rise while gold in dollars falls, and vice versa — and the financial press only ever reports the dollar one.
So what, for you. Judge every gold decision on this line, not the CNBC line. It also explains why gold works as a baht hedge: the same events that weaken the baht usually lift dollar gold, so the two effects compound in your favour.
xx.commodity.gold
·
th.fx.usdthb
live inputs
CCC & lower OAS − HY index OAS, in percentage points
→ pp
What it reads. Credit usually breaks before equity does, and it breaks at the bottom first. This is the extra yield demanded from the worst-rated borrowers over the high-yield market as a whole. It widens when lenders start declining the weakest deals — which is where the AI build-out's marginal financing actually happens — even while the index looks calm.
So what, for you. You almost certainly do not own CCC paper, so read this as a warning light on everything else rather than a position. When it widens while AI equities hold up, the lenders are disagreeing with the shareholders, and lenders see the cash flows first. Worth doing the breakeven arithmetic before envying the yield: price change on a credit position is roughly −(spread duration × change in spread), so at a spread duration near 3 years the 9.91pp of extra yield is wiped out by about 330bp of widening inside a year. The tail has already moved ~82bp in three months. That is what 'high yield is not high return' means arithmetically. For a Thai investor the transmission is indirect but real: a US AI-credit event tightens global conditions, lifts the dollar and pulls foreign money out of ASEAN — the dollar_pressure gauge is where you would feel it, not this one.
How far apart the strong and weak borrowers in a market are priced. It widens before an index-level move, because lenders retreat from the worst names first.
An index spread is a weighted average, and averages hide the thing you want. When lenders start declining marginal deals, the refusal shows up as the bottom rating tier repricing while the index barely moves — so a rule keyed to the index reads calm through the early phase. Measured here as CCC OAS − HY OAS. On 2026-07-23 that gap was 7.14pp, the widest in the three years these series exist, while the HY index sat at a comfortable 2.77%.
Read more about credit dispersionA credit spread with the value of the bond's embedded options stripped out, so bonds with different call features can be compared honestly.
Most corporate bonds are callable — the issuer may repay early, which is valuable to the issuer and costly to the holder. A raw spread on a callable bond therefore mixes credit compensation with the price of that option, and two issuers with identical credit quality can show different spreads purely because one has a call and the other does not. OAS values the option with an interest-rate model and removes it, leaving something closer to pure credit. Every ICE BofA series on this dashboard — HY, IG, CCC — is an OAS, which is what makes differencing them defensible.
Read more about option-adjusted spreadHow much a bond's price moves for a given change in its credit spread — the credit analogue of interest-rate duration.
Price change ≈ −(spread duration × change in spread). It gives you the number that actually matters for a carry trade: the breakeven widening, which is roughly spread ÷ spread duration per year. Worked on this dashboard's own data — CCC-and-lower yields 9.91pp over Treasuries at a spread duration of roughly 3 years, so about 330bp of widening in a year wipes out the entire year's extra income. The tail has widened ~82bp in three months. That is the arithmetic behind 'high yield is not high return'.
Read more about spread durationHow unusual today's reading is compared with its own history, measured in standard deviations. 0 = perfectly normal, ±1 = mildly unusual, ±2 = happens about 5% of the time, ±3 = rare.
z = (today − mean) ÷ standard deviation, both taken over a chosen lookback window. Two things about that make it weaker than it looks. The window is a judgement call, not a fact — this dashboard uses ~1250 observations for dailies (five years) and shortens it where the publisher carries less history, and a different window gives a different answer for the same day. And the ±2 ≈ 5% rule assumes a bell curve, which financial series emphatically do not follow: they have fat tails, so genuinely extreme readings arrive far more often than the normal distribution predicts. Read a z-score as a ranking, not a probability.
Read more about z-scoreus.credit.ccc_oas
·
us.credit.hy_oas
live inputs
Σ(category score × weight) ÷ Σ(weight of SCORED categories only) ÷ 2, as a percentage. Unscorable categories are excluded from both sums rather than counted as Green.
→ % of maximum risk score
What it reads. A deliberately crude tally across independent parts of the system, because the framework's central claim is that no single metric calls this — four unrelated things deteriorating together is the signal. Denominating in percent-of-maximum means a score built from four scorable categories is comparable to one built from ten, instead of silently reading low because six were missing.
So what, for you. Momentum matters more than level: a move from 30% to 55% in two months is a louder signal than a year parked at 50%. The framework's critical overrides bypass the score entirely — a hyperscaler cutting capex for return reasons, a frontier lab taking rescue financing, or a large AI-infrastructure borrower failing to refinance is Red on its own, whatever this reads. For a Thai investor the practical response is not to trade the AI complex but to check how much of your supposedly diversified foreign exposure is the same eight stocks.
Capital spending divided by operating cash flow — how much of the cash a business generates is being consumed by building.
Below roughly 70% a build-out is self-funded and can be slowed at will. Above 90% the incremental dollar is coming from debt or equity issuance, which hands the pace of the build-out to lenders rather than to management. It is the cleanest single measure of whether a boom is internally or externally financed — and an externally financed one ends when funding conditions change, not when demand does.
Read more about capex absorptionThe number of years a company assumes an asset lasts, which sets how fast it is depreciated — and therefore how large reported profits are.
Annual depreciation = cost ÷ useful life, so extending assumed life raises reported profit without changing a single dollar of cash. The sensitivity is large at AI-capex scale: on $725bn of spending, moving servers from a 5-year to a 6-year life cuts annual depreciation by 725/5 − 725/6 ≈ $24bn a year. That is why the assumption is worth reading in the notes to the accounts rather than taking earnings at face value, and why cash flow is the harder number to dress up. It cuts both ways — if accelerators genuinely wear out or go obsolete faster than assumed, the correction lands as an impairment.
Read more about useful lifeCash from operations minus capital spending — what is actually left over, as opposed to accounting profit.
It matters here because depreciation makes reported earnings and cash diverge sharply during a build-out: cash leaves immediately when equipment is bought, while the expense reaches the income statement over years. A company can therefore show healthy and rising earnings while free cash flow goes negative, which is the pattern to watch in a capex boom rather than a contradiction to explain away.
Read more about free cash flowWhen a supplier funds its own customer's purchases, so money leaves as investment and returns as revenue.
The accounting can be entirely proper while the economics are circular: reported revenue rises without new end demand, and every downstream metric built on revenue — backlog, order growth, capex-versus-revenue — inherits the distortion. It was a documented feature of the late-1990s telecom build-out and is a live question in AI infrastructure. The diagnostic is not the revenue line but whether the customer could have paid from its own cash flows.
Read more about vendor financingHow much of an index sits in a handful of names — and therefore how little diversification an index fund is actually providing.
The rigorous measure is the Herfindahl index, the sum of squared weights, whose reciprocal gives the 'effective number' of holdings: an index of 500 names where the top 10 hold 40% behaves like far fewer than 500 independent bets. Concentration is not a separate risk from a sector risk — it is the mechanism that turns one into a portfolio problem for someone who believes they are diversified.
Read more about market concentrationHow much of the contracted-but-not-yet-delivered order book actually turns into revenue, and how quickly.
Backlog (often reported as RPO) is the most flattering number a company can disclose, because it is a promise rather than a result. The tell is duration: a backlog growing faster than revenue while its average length stretches means deals are being signed further out, which is a weaker claim on the future than the headline implies.
Read more about backlog conversionWhat last year's customers spend this year, after upgrades, downgrades and cancellations. Above 100% means the existing base is growing on its own.
The reason it leads is that it strips out new-customer acquisition, which can mask deterioration for several quarters. First-renewal cohorts are the sharpest read: enthusiasm gets a product bought once, and only usage gets it renewed.
Read more about net revenue retentionus.credit.quality_spread
·
us.equity.sox
·
us.semi.ip
·
ai.capex.hyperscaler
planned inputs
This is the layer that answers "how much is there, and how fast is it moving". It is slow data — annual for most of it — which is exactly why it belongs on a dashboard rather than in someone's memory: nobody re-checks India's oil cover in the middle of an oil spike. A stock is how much exists; a flow is how much moves per period; stock divided by flow gives days of cover, which is the only way to compare reserves of wildly different absolute size.
The 90-day line is the IEA's emergency stockholding obligation for member countries, measured against NET IMPORTS. The oil market more often quotes days of forward DEMAND, which gives a different answer for the same country. This register uses net imports throughout.
| country | days | vs 90-day line | source | note |
|---|---|---|---|---|
| Thailand | 108 | +18 | IEA / national, 2026 | Legal floor raised 25 → 27 → 32 days during 2026; 108 is total stocks held, not the minimum. |
| Japan | 248 | +158 | IEA / METI, Mar 2026 | The deepest buffer of any large importer, public and private combined. |
| China | 124 | +34 | estimate from stocks ÷ imports, Dec 2025 | China does not publish this. It is computed from reported stocks and import volumes, so treat it as an order of magnitude. |
| India | 9.5 | -80.5 | IEA / national, 2026 | The thinnest cover of any major importer. There is no buffer between a supply shock and the pump. |
| measure | value | as of | source | note |
|---|---|---|---|---|
| Above-ground stock, all forms | 219,891 t | 2025 | World Gold Council | Every ounce ever mined that still exists. The denominator of everything below. |
| Mine production | 3,300 t | 2025 | World Gold Council | Adds 1.50% to the stock in a year. Gold's scarcity is a flow fact, not a stock fact. |
| Stock-to-flow | 67 yr | 2025 | derived | Years of current production already sitting above ground. No other commodity is close. |
| Central-bank net purchases | 863.3 t | 2025 | World Gold Council | 26.2% of all mine supply, bought by buyers who do not sell on price. |
| Central-bank purchases, prior year | 1,092.4 t | 2024 | World Gold Council | 2025 was 21% lower. The official bid is still large but no longer growing. |
| ETF holdings | 4,047 t | 30 Jun 2026 | World Gold Council | Investor gold, which unlike central-bank gold does sell on price. |
| ETF net flow, latest month | -74 t | Jun 2026 | World Gold Council | Outflow. Investors selling while central banks buy is the shape of the last three years. |
| Thailand official holdings | 235 t | Jun 2026 | WGC / IMF IFS | Worth about ฿1,074bn at today's price and exchange rate. |
Reserves are spread around the world. Refining is not. China's share of the processing step, which is where the actual chokepoint sits, averages 66.2% across these eight.
| mineral | China share | basis | note | |
|---|---|---|---|---|
| Gallium | 99.0% | USGS / IEA 2025 | Effectively a monopoly. Gallium is a by-product of aluminium and zinc, so production is processing. | |
| Rare-earth separation | 86.1% | Industry projection to 2030 | The IEA puts it near 80% by 2035. Both point the same way. | |
| Synthetic graphite | 85.2% | Industry projection to 2030 | Natural graphite is 70.5% on the same basis. | |
| Cobalt | 71.4% | Industry projection to 2030 | The DR Congo mines it; China refines it. Reserves and control are different maps. | |
| Lithium | 60.9% | IEA / industry projection | The battery input everyone watches, and not the most concentrated one. | |
| Aluminium | 60.4% | 44,000kt of 72,800kt world smelter output, 2024 | The cleanest actual measurement in this group. | |
| Copper | 60.0% | 2025 estimate | Falls to 44.6% on the 2030 projection as capacity is built elsewhere. | |
| Nickel | 6.2% | Projection to 2030 | The exception that proves the rule: Indonesia takes 71.2%, because it banned raw ore exports and forced smelting onshore. |
| measure | effective | status | expiry | effect |
|---|---|---|---|---|
| China 9 Oct 2025 controls — five further elements plus a 0.1% extraterritorial rule | 2025-10-09 | suspended | expires 2026-11-10 | The single hardest date in the resource calendar. If the suspension lapses, the 0.1% de-minimis rule reaches non-Chinese manufacturers directly — a supply-chain problem, not a price problem. |
| China MOFCOM Announcement No. 18 — seven heavy rare earths | 2025-04-04 | in force | no expiry | Export flows running roughly 50% below the pre-restriction rate. |
| China ban on gallium, germanium and antimony exports to the US | 2024-12-01 | eased | expires 2026-11-30 | The November 2025 easing was explicitly time-limited. |
| Indonesia raw nickel ore export ban | 2020-01-01 | in force | no expiry | Forced smelting onshore. Indonesia is now about 62% of world mine output and takes 71% of refining — the clearest case of a country converting a reserve into control. |
| Myanmar / Wa State tin mining suspension | 2023-08-01 | restarting | no expiry | Permits secured; shipment resumption not independently confirmed as of July 2026. |
| China fertilizer export bans and quotas | 2026-03-01 | in force | expires 2026-08-31 | Affects up to ~40 Mt. Urea is about 40% above pre-war levels. Fertilizer restrictions reach food prices with a two-season lag, not immediately. |
| India non-basmati white rice export ban | 2023-07-20 | lifted | no expiry | Lifted 28 Sep 2024; minimum export price removed 23 Oct 2024. No reimposition found. |
| Indonesia CPO export levy raised 10% → 12.5% | 2026-03-01 | in force | no expiry | B50 biodiesel delayed and B40 held through 2026 — the two levers pull opposite ways on exportable supply. |
This is the audit floor. Nothing appears anywhere above that is not derived from a row on this page. If a figure here is wrong, everything built on it is wrong, which is why each carries its publisher, its series identifier and the date the observation was actually made — not the date it was looked at.
| series | value | unit | observed | source | class |
|---|---|---|---|---|---|
| Brent crude | 86.99 | USD/bbl | 2026-07-20 |
fred DCOILBRENTEU
|
LIVE from D1 |
| WTI crude | 84.38 | USD/bbl | 2026-07-20 |
fred DCOILWTICO
|
LIVE from D1 |
| Henry Hub natural gas | 2.80 | USD/MMBtu | 2026-07-20 |
fred DHHNGSP
|
LIVE from D1 |
| USD/THB | 33.55 | THB per USD | 2026-07-27 |
bot DEXTHUS
|
LIVE from D1 |
| US 10-year Treasury | 4.71 | % | 2026-07-23 |
fred DGS10
|
LIVE from D1 |
| US 2-year Treasury | 4.37 | % | 2026-07-23 |
fred DGS2
|
LIVE from D1 |
| US 10-year real (TIPS) | 2.43 | % | 2026-07-23 |
fred DFII10
|
LIVE from D1 |
| SOFR (US overnight) | 3.64 | % | 2026-07-24 |
fred SOFR
|
LIVE from D1 |
| VIX | 18.58 | index | 2026-07-24 |
fred VIXCLS
|
LIVE from D1 |
| US high-yield spread | 2.79 | % | 2026-07-24 |
fred BAMLH0A0HYM2
|
LIVE from D1 |
| Broad dollar index | 120.5 | index 2006=100 | 2026-07-17 |
fred DTWEXBGS
|
LIVE from D1 |
| Fed total assets | 6,747,378 | USD mn | 2026-07-22 |
fred WALCL
|
LIVE from D1 |
| Treasury General Account | 829,623 | USD mn | 2026-07-22 |
fred WTREGEN
|
LIVE from D1 |
| Overnight reverse repo | 0.675 | USD bn | 2026-07-24 |
fred RRPONTSYD
|
LIVE from D1 |
| US CCC & lower spread | 9.96 | % | 2026-07-24 |
fred BAMLH0A3HYC
|
LIVE from D1 |
| US investment-grade spread | 0.800 | % | 2026-07-24 |
fred BAMLC0A0CM
|
LIVE from D1 |
| Nasdaq 100 | 28,128 | index | 2026-07-24 |
fred NASDAQ100
|
LIVE from D1 |
| S&P 500 | 7,412 | index | 2026-07-24 |
fred SP500
|
LIVE from D1 |
| US semiconductor output | 181.9 | index 2017=100 | 2026-06-01 |
fred IPG3344S
|
LIVE from D1 |
These are things no free API publishes: strategic reserve levels, refining shares, warehouse inventories, central-bank gold buying. They are researched once and reviewed on a schedule rather than polled. VERIFIED means two independent sources agreed; SINGLE means one source; COMPUTED means it was calculated from other published figures. A static value past its review date raises a staleness banner in the running system rather than silently ageing.
| series | value | unit | observed | source | confidence |
|---|---|---|---|---|---|
| Gold | 4,237 | USD/oz | 2026-06-30 | imf | LIVE from D1 — no longer the curated figure |
| Energy price index | 198.8 | 2016=100 | 2026-06-01 | fred | LIVE from D1 — no longer the curated figure |
| Food price index | 131.2 | 2016=100 | 2026-06-01 | fred | LIVE from D1 — no longer the curated figure |
| JKM LNG (Asia spot) | 17.19 | USD/MMBtu | 2026-06-01 | fred | LIVE from D1 — no longer the curated figure |
| Thailand policy rate | 1.00 | % | 2026-07-16 | bis | LIVE from D1 — no longer the curated figure |
| SET Index | 2,408 | index | 2026-07-27 | derived | DERIVED from D1 — no longer the curated figure |
| US Strategic Petroleum Reserve | 311,447 | mn bbl | 2026-07-17 | eia | LIVE from D1 — no longer the curated figure |
| SPR all-time fill | 726.6 | mn bbl | 2010-01-01 | static | STATIC from D1 — no longer the curated figure |
| US commercial crude stocks | 411,675 | mn bbl | 2026-07-17 | eia | LIVE from D1 — no longer the curated figure |
| Thailand oil cover | 108.0 | days | 2026-01-01 | static | STATIC from D1 — no longer the curated figure |
| India oil cover | 9.50 | days | 2026-01-01 | static | STATIC from D1 — no longer the curated figure |
| Japan oil cover | 248.0 | days | 2026-03-01 | static | STATIC from D1 — no longer the curated figure |
| China oil cover | 124.0 | days | 2025-12-01 | static | STATIC from D1 — no longer the curated figure |
| Gold above ground, all forms | 219,891 | tonnes | 2025-12-31 | static | STATIC from D1 — no longer the curated figure |
| Gold mine production | 3,300 | tonnes | 2025-12-31 | static | STATIC from D1 — no longer the curated figure |
| Central-bank net purchases | 863.3 | tonnes | 2025-12-31 | static | STATIC from D1 — no longer the curated figure |
| Central-bank net purchases | 1,092 | tonnes | 2024 | World Gold Council | VERIFIED review 2027-02 |
| Gold ETF holdings | 4,047 | tonnes | 2026-06-30 | World Gold Council | VERIFIED review 2026-09 |
| Gold ETF net flow | -74.00 | tonnes | Jun 2026 | World Gold Council | VERIFIED review 2026-09 |
| Thailand official gold | 235.0 | tonnes | 2026-06-01 | static | STATIC from D1 — no longer the curated figure |
| COMEX copper stocks | 652,200 | tonnes | 2026-07-01 | static | STATIC from D1 — no longer the curated figure |
| LME copper stocks | 352,100 | tonnes | 2026-07-01 | static | STATIC from D1 — no longer the curated figure |
| LME tin stocks | 7,595 | tonnes | 2026-07-01 | static | STATIC from D1 — no longer the curated figure |
| China share, gallium refining | 99.00 | % | 2025-12-31 | static | STATIC from D1 — no longer the curated figure |
| China share, rare-earth separation | 86.10 | % | 2030-12-31 | static | STATIC from D1 — no longer the curated figure |
| China share, synthetic graphite | 85.20 | % | 2030-12-31 | static | STATIC from D1 — no longer the curated figure |
| China share, cobalt refining | 71.40 | % | 2030-12-31 | static | STATIC from D1 — no longer the curated figure |
| China share, lithium refining | 60.90 | % | 2030-12-31 | static | STATIC from D1 — no longer the curated figure |
| China share, copper refining | 60.00 | % | 2025-12-31 | static | STATIC from D1 — no longer the curated figure |
| World rice stocks-to-use | 36.40 | % | 2026-06-01 | static | STATIC from D1 — no longer the curated figure |
| Thai rice premium vs Vietnam | 12.30 | % | 2026-07-01 | static | STATIC from D1 — no longer the curated figure |
These are recomputed from whichever observations the model is holding, which is why no value is stored alongside the formula: a stored copy could only ever end up disagreeing with the arithmetic beside it. The "as of" column names the observation date of the curated inputs; when the database supplies a fresher reading the figure recomputes immediately, and the input's own row above shows the newer date.
| figure | value | unit | as of | formula | class |
|---|---|---|---|---|---|
| US net dollar liquidity | 5.92 | USD tn | 2026-07-22 |
WALCL − TGA − RRP, all converted to trillions
|
DERIVED |
| 2s10s term spread | 0.340 | pp | 2026-07-23 |
10-year yield − 2-year yield
|
DERIVED |
| 10-year inflation breakeven | 2.28 | % | 2026-07-23 |
10-year nominal − 10-year TIPS
|
DERIVED |
| Real overnight rate | 1.36 | % | 2026-07-23 |
SOFR − 10-year breakeven
|
DERIVED |
| THB carry gap (BOT − Fed) | -2.64 | pp | 2026-07-23 |
Thai policy rate − SOFR
|
DERIVED |
| Brent−WTI spread | 2.61 | USD/bbl | 2026-07-20 |
Brent − WTI
|
DERIVED |
| Gold in baht | 142,137 | THB/oz | 2026-07-17 |
gold USD/oz × USD/THB
|
DERIVED |
| Gold/oil ratio | 48.71 | bbl per oz | 2026-07-20 |
gold USD/oz ÷ Brent USD/bbl
|
DERIVED |
| Baht Import Burden Index | 163.2 | 2016=100 | 2026-07-17 |
(0.60 × energy + 0.40 × food) × (USDTHB ÷ 35.3)
|
DERIVED |
| SPR as % of peak fill | 42,864 | % | 2026-07-17 |
SPR level ÷ 726.6 all-time fill
|
DERIVED |
| Gold new supply | 1.50 | % of stock | 2025 |
mine production ÷ above-ground stock
|
DERIVED |
| Gold stock-to-flow | 66.63 | years | 2025 |
above-ground stock ÷ mine production
|
DERIVED |
| Official absorption | 26.16 | % | 2025 |
central-bank purchases ÷ mine supply
|
DERIVED |
| COMEX ÷ LME copper | 1.85 | x | w/e 2026-07-17 |
COMEX stocks ÷ LME stocks
|
DERIVED |
| Chokepoint discount on copper | 0.574 | weight | w/e 2026-07-17 |
1 − min(1, |ratio − 1| ÷ 2)
|
DERIVED |
The instruction was that the reserves and flows data be wired in the same way as everything else,
not bolted on. That is what this section demonstrates. All 179 series — market prices, policy rates,
World Bank macro and the 30 hand-curated physical statics — live in one registry, are fetched
by one runner, are written to one table, and are refreshed on the schedule below. The static resource
layer is not a special case: it is a source: "static" adapter that costs zero network calls
and rides the ordinary weekday close job. Adding a reserve series is a one-line registry entry, exactly
like adding an interest rate.
| schedule | job | sources | subrequests | note |
|---|---|---|---|---|
0 * * * *
|
Hourly · fast tier | FRED, Stooq — daily-frequency market series only | ~20 calls | Skips anything refreshed in the last 50 minutes, so it rewrites nothing. |
30 21 * * 1-5
|
US close, weekdays | FRED, Stooq, EIA weeklies, and the whole static resource layer | ~29 calls | This is the run that carries reserves and flows. The 29 static series cost zero calls — they are read out of the code, not off the internet. |
30 10 * * 1-5
|
Asia close, weekdays | Bank of Thailand, BIS policy rates | ~9 calls | Runs after Asian markets close so the Thai numbers are the day's, not yesterday's. |
0 2 3 * *
|
Monthly, 3rd of month | IMF SDMX, World Bank, monthly FRED commodities | ~22 calls | World Bank batches ten countries per call, which is why 70 series cost 7 requests. |
manual:fast
|
Refresh button — fast | FRED, Stooq daily | ~20 calls | The dashboard's on-demand button. 5-minute minimum age. |
manual:full
|
Refresh button — everything | All eight adapters | ~60 calls | One click covers the whole registry. Each source group runs as its own step of a durable Workflow with its own outbound-call budget, against a ceiling of 1,000 per invocation, so there is no longer anything to ration — the cap that remains is a runaway guard, not a platform limit. |
| worldbank | 70 |
| fred | 33 |
| static | 30 |
| derived | 23 |
| bis | 8 |
| eia | 6 |
| imf | 5 |
| twelvedata | 2 |
| bot | 1 |
| ecb | 1 |
| resource | 86 |
| macro | 34 |
| commodity | 19 |
| rates | 15 |
| sector | 9 |
| liquidity | 6 |
| fx | 5 |
| credit | 4 |
| risk | 1 |
86 of 179 series are the resource pillar — the reserves and flows layer is the largest single part of the registry, not an appendix to it.
stoppedForBudget rather than continuing. That matters for exactly one failure mode: an
adapter that has started looping. You want to learn about it from a saved partial run, not from a bill.
The free-tier arrangement this replaced budgeted 45 calls against a ceiling of 50 and needed two presses
twenty minutes apart to cover the whole registry; none of that applies now, and the code that did it is
gone.
Fast sweeps the daily market series — prices, yields, FX, the liquidity components. Full
adds the slow layer: World Bank macro, the static resource table and anything monthly. Both write to the
same table the cron jobs write to, so a manual run is not a separate path through the code. The admin
token is whatever was set with wrangler secret put ADMIN_TOKEN; on a local
wrangler dev with no token configured the route accepts localhost without one. It is held
in this tab only — nothing here writes it to storage.
A dashboard that only reports what it knows is a dashboard you cannot calibrate. These are the live limitations, stated plainly, because each one changes how much weight a reading deserves.
The Treasury General Account trap. The registry declared FRED's WTREGEN in billions. The series page says millions. The July 2026 print is 829,623 — obviously $829.6bn once you look, and silently catastrophic if you do not, because net liquidity then computes as roughly minus eight hundred trillion dollars. Fixed in both the registry and the runner. The reason it matters beyond the fix: WALCL and WTREGEN are millions while RRPONTSYD is billions, and nothing in any API response says so. Dividing all three the same way fails loudly; dividing two right and one wrong produces a plausible-looking series that is quietly meaningless.
The Physical Tightness Premium sign error. The formula is z(price) − z(inventory). It had been written the other way round, which inverts the entire meaning of the indicator.
Both are recorded here rather than quietly patched because the whole claim of this page is that its numbers are checkable. A page that never admits a correction is not a page that has never had one.
Every composite gauge score. Each needs a rolling five-year z-score, which needs five years of history in the database. The pipeline stores every observation it fetches, so the history accumulates on its own, but until there is enough of it all seven gauges and the regime quadrant read awaiting. They fill themselves in when the depth is there — nothing needs to be rewritten for that to happen.
The Physical Tightness Premium is defined and labelled INVENTED but marked planned rather than live: it needs an inventory time series that the static layer holds only as single points.
Two data gaps need a browser session rather than an API: Stooq's query-parameter name, and
China total social financing from the PBOC. Both are wired to Cloudflare's Browser Rendering
binding rather than to fetch.
47 of 50 curated figures came out of the database on this render and the rest fell back to the hand-verified table. Each figure carries its own badge, so the split is visible per row at Level 0 rather than only in aggregate here.
These have no counterpart in the registry, which means no adapter fetches them and no schedule touches them. They move only when a human re-reads the source and edits the curated table. That is not a gap waiting to be closed — nobody publishes them as a machine-readable series — but it does mean their review-by dates at Level 0 are the only thing standing between them and silent decay.
Central-bank net purchases · Gold ETF holdings · Gold ETF net flow
Days of cover has two definitions and they are routinely confused. The IEA measures against net imports; the oil market usually quotes forward demand. Same country, different number. This register uses net imports everywhere and says so on every reading.
China's oil cover is an estimate, computed from reported stocks and import volumes, because China does not publish it. Treat it as an order of magnitude, not a measurement.
Several refining shares are 2030 projections, not observations — rare-earth separation, synthetic graphite, cobalt, lithium and nickel. They are labelled as such in the table. Gallium, aluminium and copper are current measurements.
Correlations here are computed on changes, not levels. Two series that both drift upward for unrelated reasons will show a correlation near 1.0 on levels and nothing on changes. The second answer is the true one.