Method 1.5, 2026-11-02 · the effect counts below were written by the code for release 20261102.2
The rule text and the code come from one registry, config/method.yaml. The build stops when a rule has no implementing function or no test, or a function names a rule that is not registered. Changing a rule raises the method version, and every release and citation records it.
The method's citation
datasteg (2026), “Money-flow methodology”, version 1.5, datasteg money-flow, 2 November 2026, https://money-flow.datasteg.com/en/method?v=1.5.
All positions are in US dollar billions. Where the publisher converts (BIS, IMF, TIC), its dollar figure is used. National series are converted at BIS rates: a stock at the period-end rate, a period average at the period's average rate. The rate is named in the provenance. An economy whose currency is another's (Ecuador, El Salvador, Timor-Leste and Panama in dollars; Kosovo, Andorra, Montenegro and San Marino in euros; Guinea-Bissau in CFA francs; West Bank and Gaza in shekels) is converted at that currency's rate, and so is a dated regime (Zimbabwe in dollars from February 2009 to June 2019). A source series whose early segment is in a unit the source later superseded (Sierra Leone's broad money before 2015 in old leones) is corrected by a listed factor before anything else. A value with no rate is left out, never filled in, and the Method page says which economies and months; the IMF's currency-union aggregates (ECCU, WAEMU) are never drawn and are listed apart.
Why: Sums across sources need one unit; a stock converted at an average rate is misstated. The verification of 31 Oct 2026 found 6,331 values without a rate, of which 539 Zimbabwean months fell in its dollar years and 1,206 West Bank and Gaza months had a shekel rate under another code.
In release 20261102.2: 551 converted at a period-average rate
In release 20261102.2: 293,522 converted at a period-end rate
In release 20261102.2: 9,370 converted at one, a dollarised economy or a dollar regime (currency map, dated regimes)
In release 20261102.2: 36 of which BRA: no BIS rate for its currency, 1950-01-31 to 1952-12-31
In release 20261102.2: 365 of which GIN: no BIS rate for its currency, 2021-08-31 to 2025-12-31
In release 20261102.2: 28 of which LBR: no BIS rate for its currency, 2025-11-30 to 2026-05-31
In release 20261102.2: 56 of which MOZ: no BIS rate for its currency, 2025-11-30 to 2026-06-30
In release 20261102.2: 30 of which MWI: no BIS rate for its currency, 2024-12-31 to 2025-04-30
In release 20261102.2: 20 of which PNG: no BIS rate for its currency, 2026-03-31 to 2026-07-31
In release 20261102.2: 70 of which SLE: no BIS rate for its currency, 2025-07-31 to 2026-04-30
In release 20261102.2: 372 of which SOM: no BIS rate for its currency, 2018-01-31 to 2026-03-31
In release 20261102.2: 91 of which SSD: no BIS rate for its currency, 2025-08-31 to 2026-08-31
In release 20261102.2: 36 of which TZA: no BIS rate for its currency, 2025-07-31 to 2026-06-30
In release 20261102.2: 210 of which ZWE: no BIS rate for its currency, 2024-03-31 to 2026-08-31
In release 20261102.2: 3,234 of which an IMF currency-union aggregate (ECCU, WAEMU: never drawn)
In release 20261102.2: 38 of which economies with fewer than 20 such values (the newest months, before the BIS rate file reaches them)
In release 20261102.2: 4,586 stock values without a rate, left out
For direct investment, one reporter per pair for the whole series: the reporter with the most years, and on a tie the host's (debtor's) own report, then the investor's (creditor's), then a mirror. Who reported it is shown, and the other report's figure, where one exists, is in the tooltip. A negative position (reverse investment, netted intercompany debt) is kept as reported and enters its ladder as a negative part; a confidential cell has no value in the IMF file and is indistinguishable from a year not reported.
Why: DIP has up to three reports per pair; adding them counts the same position up to three times. Mirrors are copies of the counterpart's report (0 differences in 329,399 pairs, 29 Oct 2026). Choosing per year made 2,027 pairs step from one reporter to another, by up to 50% and more. The longest series is chosen over the host's because a series that never changes reporter is worth more than a host's valuation in some years: 3,869 of 11,051 doubly reported pairs are drawn from the investor for that reason (31 Oct 2026).
In release 20261102.2: 684,911 direct investment pair reports dropped (the pair's chosen reporter is another)
In release 20261102.2: 475,839 pair-periods with a second report kept as context (alt)
In release 20261102.2: 15,449 pairs drawn from the investor's report (the host reports fewer years or none)
The bank channel takes BIS LBS loans and deposits only. The other instruments are split and never enter the bank ribbon: debt securities that banks hold stay in portfolio debt (shown as context); derivatives and other instruments, which no other channel holds, are a pool of their own, measured against the IIP derivatives item. Reporters that publish no instrument split by counterparty (Japan, Germany) are named in the not-identified node, never estimated, and the coverage panel shows their share of the all-reporter total (26% of claims on Thailand, 28% on the UK, 31 Oct 2026). The BIS all-reporter aggregate that the Signal Board reads (R17) already allocates them by instrument, so A1 and B1 carry them.
Why: BIS bank claims cover all instruments, and CPIS counts the bonds again. Worldwide, 7.8 tn of banks' derivatives and other instruments were in no channel (29 Oct 2026).
In release 20261102.2: 478,267 LBS all-instrument rows kept as context, out of the bank ribbon
In release 20261102.2: 25,534 LBS debt-securities rows kept as context (counted in portfolio debt)
In release 20261102.2: 24,634 LBS derivatives-and-other rows drawn as their own pool, never in the bank ribbon
Each ladder adds up to its total for the channel. What the pair data do not identify is a 'not identified' node, and the identified share is shown as coverage. The IMF's confidential group of reserve managers and international organisations (SEFER and SSIO) is an identified holder, drawn as one node and never ranked. The FDI total is the DIP's own all-investor figure where the DIP has the year, so that parts and total are on one valuation basis; the IIP item is the border. When pair data exceed the total, the excess is shown and flagged, never clipped, and coverage is capped at 100%.
Why: Some holders do not report, and some BIS reporters give only an all-countries figure. Reserve managers held 5.0 tn of the 22.5 tn 'not identified' worldwide; the DIP is at book value for the largest hosts (USA 5,708 against 13,060 in the IIP), so the IIP made a valuation gap look like missing investors (29 Oct 2026).
Figures are added only within one period. In the aligned setting (the default), portfolio and bank sit at the newest period both share; direct investment, which is annual, sits at its own newest year at or before that period, labelled with the year, and is never summed with the other channels. In the newest setting each channel sits at its own period and no cross-period total is drawn. The IIP is part of the alignment: the border total is the IIP item of the aligned period itself, and an economy whose IIP is annual is aligned at a year-end; in the newest setting the IIP item of the newest portfolio period is shown, or none.
Why: Banks are quarterly, CPIS half-yearly, DIP annual. Waiting for a DIP year equal to the aligned quarter left the FDI ribbon unsplit in 289 of 324 ladders (29 Oct 2026).
Published flows (BIS adjusted changes, TIC net purchases, BOP transactions, fund flows) are used as published. Flows derived from two positions are labelled 'includes valuation changes and breaks'. The two kinds are never added together.
Why: Position changes mix price and exchange-rate moves with transactions.
Core money (layer 0: the central bank's balance sheet, currency, bank reserves) and bank money (layer 1: deposits, as each source defines broad money) are a hierarchy of what counts as money for whom, never addends: bank reserves are inside bank money's backing, so the layers are drawn side by side and no screen sums them. Layer 2 (L, money funds, stablecoins) is context and is never added to them. Cross-border positions are never added to money created: a cross-border bank loan creates a deposit at the lending bank (offshore money creation); bond-market and non-bank lending move existing money. Bank money is the publisher's broad money (IMF), M2 (United States, Korea) or M2 and M3 (euro area), named on each tile.
Why: Banks' lending creates money; bond-market and non-bank lending moves it. Monetary base and deposits overlap (US bank reserves alone are about USD 3 tn), so their sum would be a double count.
Computed at full precision and rounded only for display (0.1 bn, 0.1%). Totals are computed before rounding, so a table's rows can differ from its total by rounding; the table says so. The browser never adds.
Every figure on the site comes from an official or open source. Commercial data (fund-flow and market-data vendors) are not published in any form, not even as aggregates; the check scans every public file for a vendor's name or a fund-level field. Vendor aggregates were shown from 29 Oct to 1 Nov 2026 and were then removed.
Why: The user's decision of 1 Nov 2026: no commercial data on datasteg sites; the files stay on the dev machines.
A monthly, quarterly or annual stock observation is judged when the series moves more than tenfold against the previous value in the source's own currency. A move that returns to the old level within two periods (a spike) is dropped and the gap flagged. A ratio that is a power of ten (a unit error in the source) rescales every value at the new level by that power of ten back to the earlier level, so the series goes on instead of stopping; the earlier segment is the one trusted, and a wrong earlier segment is corrected by a listed unit correction (R1) before this rule runs. A new level that is impossible or implausible, non-resident claims or liabilities above the economy's IIP total on that side (they are a part of it), is dropped with every later value at that level, so the series stops rather than jumps. Real moves stay; check V13 lists every segment with its raw values and marks any that starts within a month of a listed currency redenomination (config/redenominations.csv), the case a source that stopped back-converting would produce.
Why: Release 20261029.2 carried Portugal's banks' claims on non-residents at a million times their level, Switzerland's central bank liabilities at 218 times, Uruguay's monetary base at a thousand times: errors in the IMF files that a warn-only check let through (docs/DATA-AUDIT.md F7). Dropping a unit error ended Uruguay's monetary base in 2018-09 for good (94 months) and kept the wrong segment of Sierra Leone's broad money; the verification of 31 Oct 2026 found no redenomination among the segments, the IMF files being back-converted.
In release 20261102.2: 56 observations quarantined as source errors (spikes, implausible levels)
In release 20261102.2: 98 observations rescaled by a power of ten (unit errors in the source)
Each borrowing economy is read from its own side. Scored exposures: A1 = foreign-currency credit to non-banks / GDP, by residence of the borrower: cross-border loans and deposits to resident non-banks in US dollars, euros and yen (BIS LBS), plus the foreign-currency claims of banks inside the economy on resident non-banks where the economy reports them to the LBS (local positions, all foreign currencies, all instruments: the only published cell with a sector split; 26 of the 36 board economies report it, the rest are marked), plus international debt securities of resident non-bank issuers in those currencies (BIS DSS by residence), the economy's own currency left out, over the four-quarter GDP implied by BIS total credit (the newest quarter carries the one before). A2 = BIS CBS international claims with remaining maturity up to one year (immediate counterparty, all reporting banks) / net reserves: IMF IRFCL official reserve assets (Section I) plus the predetermined net drains within one year (Section II: forwards and swaps falling due, scheduled debt service), at the quarter-end month, never below a tenth of gross reserves (Turkey's net reserves were below zero in 2023 Q2; a floored quarter is marked); scored only where reserves are the economy's last line of foreign-currency liquidity: not for a euro member, an issuer of a reserve currency (Japan, the UK) or an economy with a standing unlimited Fed swap line (Canada). Buffers: net IIP / GDP (IMF IIP) and the current account over four quarters / GDP (IMF BOP), quarterly where published, else the newest annual value at most four quarters old. Shown, not scored: A2 on gross reserves; A1 by nationality of issuer, with an offshore-issuance flag where it exceeds the cross-border residence figure by 5 points of GDP or is twice it; A3 = international debt securities by nationality / (those + LBS cross-border loans and deposits); and net external debt (IIP debt liabilities less debt assets with reserves) / GDP. Flows: B1 = the BIS FX- and break-adjusted change of cross-border loans and deposits, every sector and currency (interbank funding included, the channel of Korea in 2008); B2 = DSS net issues by nationality; flow score = (B1 + B2) / (the two stocks of the quarter before) × 4, in per cent, sign kept: below zero, non-resident banks and bondholders reduced their claims (a creditor withdrawal, not the balance of payments' net outflow, which includes residents' asset moves). B2 and its stock share the nationality basis because emerging-market firms issue through offshore affiliates; B1 and its stock share the LBS residence basis, the only one with adjusted changes; each flow is measured against its own stock.
Why: Method 1.2 mixed bases (bonds by nationality over domestic GDP, so a US finance arm serviced from dollar revenue counted against its parent's home GDP), scored a bond share whose direction the validation contradicted, scored short-term bank debt against national reserves inside a currency union, and had no buffers: a net creditor with a current-account surplus ranked first. Residence matches the numerator to GDP; the buffers are the IMF's own external-sector measures and were already in the data hub. Residence and nationality A1 validated alike (docs/methodology/vulnerability-v1.3.md). Method 1.4, after the verification of 31 Oct 2026: gross reserves hid Turkey's and Argentina's position (predetermined drains of 40% and 32% of gross reserves at the latest quarter; net reserves below zero at their crisis dates), and the BIS global liquidity definition of foreign-currency credit includes the local foreign-currency loans the LBS already carried (Turkey's A1 doubles with them). Both were in the mirror (docs/methodology/vulnerability-v1.4.md).
In release 20261102.2: 36 economies drawn in the newest quarter
In release 20261102.2: 0 economies dropped in the newest quarter (a component missing)
Score = ½ × exposure + ½ × buffer weakness, on 0–100. Exposure is the mean of the scored exposures' signals (A1; A2 where scored). Each signal is ½ × level + ½ × own history. Level: the share of every board economy-quarter observed up to and including this quarter, all economies pooled, at or below this value. Own history: z = (value − the economy's own median) / max(1.4826 × MAD, floor), over its quarters from 2000 (or its first) up to and including this one, clipped to ±3 and mapped to 0–100 (50 = its own median); floors 1 point of GDP for A1 and 10 points of reserves for A2, so a narrow history cannot turn a small move into an extreme. Buffer weakness: the mean of 100 − level for net IIP / GDP and for the current account / GDP, of those published for the quarter; a buffer is read as a level only, because its own history carried no information in the validation and a buffer's level is what the IMF's external assessments read. The A2 pool holds scored A2 values only: a euro member's, Japan's, the UK's or Canada's A2 ranks no one. An indicator needs 8 quarters of history, the pool 40 observations. Every window is expanding: a past quarter's score uses only quarters up to it, its own and every other economy's. The score is not a ranking; the flow score is not transformed.
Why: Method 1.2 ranked each indicator against the economy's own past only: magnitude was ignored (Korea and Italy had nearly the same A2 at the 97th and 6th percentiles), a calm narrow history pushed small moves to the extremes, and the score separated stress episodes from calm quarters no better than chance (area under the ROC curve 0.51 on 27 named episodes, 0.45 against a mechanical currency-crash dating). Levels against peers, own history with a floor, and buffers gave 0.67 and 0.60, the best of twelve candidates tested point in time; the result is in the decision memo with every candidate.
Every economy with a GDP denominator in BIS total credit, except the United States (the hub, not a borrower in this sense), the BIS offshore centres (Hong Kong SAR, Singapore), the fund domiciles already flagged (Luxembourg, Ireland, the Netherlands, Switzerland) and the euro-area aggregate (its members are shown one by one; the euro is their own currency from the day they adopted it). Japan and the UK issue reserve currencies and Canada has a standing unlimited Fed swap line: they are on the board, with A2 shown but not scored (R17). An economy-quarter without its scored components, a buffer or both flows is not drawn and is logged with its reason (V18). The board is therefore 36 economies, the advanced and the larger emerging ones that BIS total credit covers; frontier borrowers (Egypt, Pakistan, Sri Lanka, Ghana, Kenya) are outside it. The fund-domicile exclusion is the audit's FD tag (R10): Belgium, a settlement centre, stays. The euro adoption dates come from config/economies.csv (Croatia 2023-01-01, Bulgaria 2026-01-01), and the board file names each member's date so the page can mark the break in A1.
Why: The IMF WEO is not in the data hub; BIS total credit gives a quarterly GDP for 43 economies, the same source family as the indicators.
In release 20261102.2: 36 economies on the board
In release 20261102.2: 8 economies with a GDP denominator left out (hub, offshore centre, fund domicile, aggregate)
The World pulse and the change feed are computed once, at release, from the board history the release itself carries, and are published as files (world/global pulse; changes/global). No page and no downstream site recomputes them: a reader of money-flow, of global-network or of an article sees the same tiles and the same list for a given release. The change feed compares the newest board quarter with the one before, economy by economy: entering or leaving the at-risk corner (score 60 or more with a creditor withdrawal, flow below zero), a flow score changing sign (with B1 and B2 of the new quarter), A2 crossing 100% of net reserves (with its basis), and a score moving 10 points or more. The values are the board's published columns, so the feed and the board cannot disagree.
Why: Until 2 Nov 2026 global-network recomputed the pulse and the changes from money-flow's files (refurbish plan, WP1): two sites could say different things about one release, and a change of rounding or threshold on one side would not show on the other.
In release 20261102.2: 15 changes listed (newest board quarter against the one before)
First-round arithmetic on published figures, for every board economy at the newest BIS quarter: each reporting banking system's share of the all-reporter loans and deposits on the economy (BIS LBS, residence basis, loans and deposits as R5 defines the bank channel), in per cent of the all-reporter total, with reporters that hold less than 0.05 bn left out and the BIS aggregates never counted as a lender (R11). The loss when a lender cuts a share of its claims is cut share × lender share × bank claims, in US dollar billions, and is shown against the economy's net reserves, the Signal Board's A2 denominator (R17; absent where the board has none). Nothing else moves: no price, no replacement lender, no second round. The release carries the shares, the claims and the net reserves; the browser only multiplies by the chosen cut.
Why: The lender-cut scenario (S4) ran on global-network until 2 Nov 2026 on money-flow's data alone; it is money-side arithmetic and belongs beside the bank matrix (refurbish plan, WP4). Shares of the all-reporter total, not of the bilateral sum, so an economy whose lenders are largely unallocated shows small shares rather than inflated ones.
In release 20261102.2: 36 borrowing economies with lender shares
In release 20261102.2: 623 lender positions listed
General government gross debt over GDP, IMF World Economic Outlook (GGXWDG_NGDP), latest vintage, one value a year from 1990. On at 90% of GDP or more; adjustable on the page between 30 and 200 in steps of 5. The threshold is a convention (the level Reinhart and Rogoff made famous), not a limit.
Why: More debt means more to roll over each year and less room in a shock. The WEO is the one source with the same definition for all 36 economies back to 1990.
General government net lending (+) or borrowing (−) over GDP, interest included, IMF WEO (GGXCNL_NGDP). On at −5% of GDP or below; adjustable between −15 and 0 in steps of 0.5. The EU's Maastricht reference is −3%; −5% marks a large deficit.
Why: A deficit has to be borrowed, so a large one adds to debt fast.
The primary balance that would hold the debt ratio steady, less the actual primary balance, in points of GDP, from WEO ratios and GDP in levels: interest paid = (primary balance − overall balance) / 100 × GDP; the effective rate i = interest / last year's debt (last year's ratio × last year's GDP); nominal growth g = GDP / last year's GDP − 1; debt-stabilising primary balance pb* = last year's debt ratio × (i − g) / (1 + g); gap = pb* − primary balance. On at 1 point of GDP or more; adjustable between −2 and 6 in steps of 0.5. Missing when any input is missing.
Why: If interest beats growth, debt grows by itself unless the budget saves before interest; a gap of 1% of GDP a year adds about 10 points of GDP to debt in a decade. Greece 2009 by hand: i 4.52%, g −1.85%, pb* 7.20%, gap 17.5 points (tests/test_sovereign.py).
In release 20261102.2: 1,214 economy-years with a debt-stabilising gap
The three-year average of the current account balance over GDP. Each year's value is the Signal Board's own four-quarter current account at the fourth quarter (R17, IMF BOP) where the board has that year, else the WEO's annual figure (BCA_NGDPD); the source of each year is recorded, and the average exists only when all three years do. On at −4% of GDP or below; adjustable between −12 and 0 in steps of 0.5 (the EU macroeconomic imbalance procedure's threshold).
Why: A persistent deficit is financed from abroad; three years smooth a commodity swing. The board's figure is preferred so the Sovereign section and the Signal Board read one number where both have it.
In release 20261102.2: 642 economy-years read from the Signal Board's current account
The net international investment position over GDP at the year end: the Signal Board's net IIP at the fourth quarter (R17, IMF IIP over BIS-implied GDP) where the board has the year, else IMF IIP total assets less liabilities over the WEO's GDP in US dollars (NGDPD); the source is recorded; projection years are left empty. On at −35% of GDP or below; adjustable between −150 and 0 in steps of 5 (the EU macroeconomic imbalance procedure's threshold).
Why: A large net debtor position is what past deficits left behind; it is the buffer the Signal Board also reads (R18), here as a level against a fixed line.
In release 20261102.2: 713 economy-years read from the Signal Board's net IIP
The Signal Board's A2 at the fourth quarter: BIS CBS international claims with remaining maturity up to one year over net reserves (IRFCL Section I plus Section II, floored; R17, method 1.4), in per cent. Not applicable where the board does not score A2 (euro members, Japan, the UK, Canada), and greyed throughout for an economy whose newest quarter is unscored; missing before 2005 and in projection years. On at 100% or more; adjustable between 25 and 400 in steps of 5 (the Greenspan–Guidotti rule: reserves should cover debt falling due within a year).
Why: Short-term foreign-currency debt above reserves is the classic run exposure (Korea 1997, Türkiye 2018); the Signal Board already builds it on net reserves, so the Sovereign section reads the same column.
In release 20261102.2: 12 economies with A2 not applicable (unscored on the board)
The 10-year government bond yield less the benchmark's, OECD long-term interest rates via FRED (IRLTLT01{iso2}M156N, monthly averages): Germany is the benchmark for EU members, the United States for the rest, and the benchmark itself is not applicable. The annual value is the average of the monthly spreads of the months both series have, at least six; the newest value is the average of the last twelve months when the series ends within two months of the newest month any economy has. Only the spread is published, never a yield series. On at 4 points or more; adjustable between 1 and 10 in steps of 0.5 (400 basis points, a common distress marker).
Why: The market's own price of sovereign risk, available monthly where the fiscal data are annual; Russia's series stops in 2018, so a stale spread is shown as missing, not as calm.
In release 20261102.2: 25 economies with a yield spread
The newest aligned ladder (portfolio end-2025, banks Q4 2025), followed from the IIP total down.
R6, Portfolio. IIP portfolio liabilities 1,364.6 bn = 1,064.0 bn identified (994.4 bn by reporting holders, of which 21.2 bn with no instrument split, and 69.6 bn by the reserves-and-international-organisations group) + 300.6 bn reported by no holder. Coverage 78.0%. Of the reporting holders' part, equity 705.2 bn and debt 268.0 bn. The IMF's own derived liability, 1,064.0 bn, equals the identified part (V16).
R6, R5, Bank claims. All BIS reporters' loans and deposits to Korea 158.5 bn = 85.2 bn from single reporters + 73.2 bn not identified (coverage 53.8%; of which reporters with no instrument split DEU 10.2 bn, JPN 27.2 bn). All instruments 381.3 bn = loans and deposits + debt securities 167.9 bn (counted in portfolio debt) + derivatives and other 54.9 bn (a pool of its own, against IIP derivatives 47.2 bn). IIP loans 153.2 bn and deposits 43.0 bn (V15).
R7, R4, R6, Direct investment. DIP end-2024 all-investor total 255.2 bn (the host's valuation) = 255.2 bn identified by investor + 0.0 bn not identified. IIP direct investment liabilities 296.3 bn (market value) sit on the border.
What the World page can and cannot see
Portfolio investment has no statistics by nationality: the IMF's portfolio data (PIP, formerly CPIS) assign holdings to the economy where the holder resides, often a fund domicile or an offshore centre. The Signal Board therefore looks only from the borrower's side and does not claim to identify final investors.
Layer B (bank and bond flows) arrives two to four months after the quarter ends. Layer C, the weekly pulse, exists to fill that gap; it is global, not per country.
BIS LBS adjusted changes approximate flows: they remove exchange-rate moves and reported breaks, but valuation changes, write-downs, unreported breaks and the timing of exchange-rate conversion still leak in. LBS is by residence of the lending bank, which is the only basis with adjusted changes.
The score (R18) is validated on 27 named external-stress episodes since 2006 and a mechanical currency-crash dating, point in time but on the newest data vintages, not the figures known at the time: revisions are not replayed. The design was chosen as the best of the candidates on this sample, in sample: with 27 episodes the bootstrap 90% interval of the area under the ROC curve is about ±0.1 wide, so candidates within a few hundredths of each other are not distinguished, and the decision memo publishes the intervals and the episode list. Early warning is weak in general: the score is a structured reading, not a forecast. Euro-area sovereign stress in 2010–12 is out of scope: it was a domestic-currency debt crisis inside a currency union.
A1 is gross foreign-currency debt, not net of foreign-currency assets or hedges: economies whose companies earn or hold foreign currency (the UK, Canada, Australia, Chile) look more exposed than their net currency position. A2's numerator, BIS international claims, includes claims in the borrower's own currency held across the border: in 2026 Q2 foreign banks' holdings of Korean won government bonds raised Korea's A2 though they are not foreign-currency debt. CBS is consolidated, so a foreign branch's borrowing from its head office is not in A2: Korea's 2008 squeeze ran largely through that channel, and the score missed it.
Net IIP moves with stock prices: equity liabilities are at market value, so a domestic rally lowers the net position without any borrowing (Korea's fell from 48% of GDP at end-2025 to 4% in 2026 Q2 as the KOSPI rose 68% in the quarter). The validation favoured net IIP over net external debt as a buffer; net external debt is shown beside it.
A1's local component is the BIS LBS local-position cell for non-banks in all foreign currencies and all instruments, because the loans-only cell by currency is not published with a sector split; it is missing for the ten board economies that do not report to the LBS (Argentina, China, Colombia, Czechia, Hungary, Israel, New Zealand, Poland, Thailand, and Russia after 2021), whose A1 is cross-border only and marked. Where the BIS GLI publishes a borrower series its total is shown beside A1.
A2's denominator is net of the predetermined drains the IRFCL template lists (Section II); contingent drains (Section III) and reserves that are frozen or encumbered but still in Section I (Russia since 2022) are not netted, since only an override could, and none is applied.
For banking centres among advanced economies (Japan, the UK, France, Belgium) B1 moves with interbank and intragroup funding, which is not a sudden stop in the emerging-market sense.
Where the page uses nationality or ultimate risk
Method 1.3: A1 is scored by residence of the issuer (BIS DSS by residence), so the numerator and GDP cover the same economy; A1 by nationality is shown beside it, the gap being issuance by offshore affiliates, and from method 1.4 an offshore flag marks a gap of 5 points of GDP or a nationality figure twice the residence one (China 2021: 5.4% against 1.7%).
Debt securities (A3, B2): BIS DSS by nationality of issuer, not residence. Offshore affiliates issue almost a third of international debt securities; nationality puts a Brazilian company's Cayman issue back in Brazil.
Bank exposure (the board's hover): BIS CBS foreign claims on an ultimate-risk basis, so a loan guaranteed by a parent abroad counts where the risk lies. Short-term claims (A2) stay on the immediate-counterparty basis, the only one with a maturity breakdown.
Bank flows (B1, A3): BIS LBS by residence, because adjusted changes exist only there. Banks' offshore affiliates account for over 40% of cross-border bank lending, so the lender's location is often a centre; the board uses only the borrower's side, where residence and the borrower coincide.
The Economy tab is unchanged: its own residence/nationality switch keeps residence as the default.
Argentina, Australia, Austria, Belgium, Brazil, Canada, Chile, China, Colombia, Czechia, Germany, Denmark, Spain, Finland, France, UK, Greece, Hungary, Indonesia, India, Israel, Italy, Japan, Korea, Mexico, Malaysia, Norway, New Zealand, Poland, Portugal, Russia, Saudi Arabia, Sweden, Thailand, Türkiye, South Africa.
Left out, and why
Switzerland: fund domicile (flagged FD)
Euro area: aggregate; its members are shown
Hong Kong: BIS offshore financial centre
Ireland: fund domicile (flagged FD)
Luxembourg: fund domicile (flagged FD)
Netherlands: fund domicile (flagged FD)
Singapore: BIS offshore financial centre
United States: the hub, not a borrower in this sense
Every other economy: no GDP denominator in BIS total credit (R19). A quarter missing any of the five components is not drawn and is listed with its reason in check V18.
Checks
V1 Unique keys. No key repeats in any table or site file (R12). (exact; block)
V2 One row per ribbon. Each ribbon comes from exactly one total row (R2, R3, R4). (exact; block)
V3 Adds up. At every node, the identified parts plus 'not identified' equal the total (R6). (1e-6 bn; block)
V4 Coverage. The identified share per economy and channel, shown in each view; below 50% is a warning. (warn below 50%; warn)
V5 Two sources agree. The same quantity from two publishers agrees within tolerance: national series against BIS or the IMF, and official reserves in the IIP against IRFCL for every economy (3% to pass, a warning to 10%, failure above: the two series are revised on different dates; listed definitional exemptions as information); Korea's IIP portfolio from ECOS against the IMF IIP (0.1%, the same compiler); CPIS holder totals against IIP portfolio assets (10%, warning); the DIP all-investor total against IIP direct liabilities and TIC against CPIS, which differ by valuation or custodial basis (information). (3% (10%) / 0.1% / 10%; block)
V6 Mirrors. The investor's and the host's reports of one pair differ by less than 50%, or the pair is flagged 'reports disagree'. (50%; flag)
V7 Publisher totals. Our sums against the publisher's own totals: GLI loans plus securities equal the total; the LBS sum over single counterparties stays at or below all countries; the five IIP items, derivatives with their sign, equal the total (a shortfall means a missing item and is information). (0.5% + 0.1 bn; block)
V8 Golden figures (regression). The Korea figures in the plan (27 Oct 2026 vintages) are rebuilt exactly. This is a regression test of the build, not a validation: the figures were written down from the same tables. Validation against independent figures is V5 and V16. (exact; block)
V9 Determinism. Two builds from the same mirror give byte-identical files. (exact hash; block)
V10 Explained change. Every mark that differs from the previous release has a new source vintage behind it (R15). (exact; block)
V11 Licence. No source of a class that may not be shown, no field outside the mark schema, no fund-level value, and no native daily, weekly or monthly series longer than 13 observations in any public file. One exception (method 1.2): the World pulse's open series (Fed H.4.1 and H.10 via FRED) carry 53 weekly points for their sparklines. The views of the export surface (method 1.5: earn, changes, episodes, sovereign) pass the same gate under their own schemas and a licence check on the datasets they carry; the sovereign view's monthly yield spread is a derived difference of two public-domain series, not a copy of either. (exact (53 weekly points for the pulse); block)
V12 Freshness. Each dataset's newest period is within its cadence plus the publisher's usual lag. (per cadence; warn)
V13 Size of change. Tenfold moves between two periods, after the R16 quarantine. A quarantined or rescaled source error is a warning with its raw values; a segment that starts within a month of a listed currency redenomination (config/redenominations.csv) is a warning to check the source's back-conversion; a real or unexplained move is information; a unit-error pattern still in a drawn series blocks the release. (10x; block)
V14 CPIS within the IIP. The holders identified on an economy (reporting holders plus the reserves-and-IO group) do not exceed its IIP portfolio liabilities, by instrument, by more than 5%. A warning where the excess is known and persistent (valuation or coverage bases differ: India, Bermuda, the UK); an economy that exceeds for the first time blocks the release. (5%; block)
V15 Bank loans within IIP other investment. BIS all-reporter loans and deposits on an economy do not exceed its IIP loans plus deposits liabilities. Exceptions are scope differences and are listed. (0.5% + 0.1 bn; warn)
V16 Publisher identities. Identities on the publishers' own data, exact: the BIS all-reporter figure is never below the sum of its bilateral reporters; the IMF's derived portfolio liability of an economy equals the sum of what reporting holders and the reserves-and-IO group hold. Independent of anything written down by hand. (0.1 bn; block)
V17 Source links. Every source a page names comes from the source registry: each panel's link ids exist, and each entry has a label and a name in both languages and the publisher's URL. (exact; block)
V18 Complete board. Every economy drawn on the Signal Board in a quarter has its scored exposures (A1; A2 where scored) with their signals, at least one buffer, B1, B2 and its score; an economy without them is not drawn, never shown with zeros, and is listed with its reason. (exact; block)
V19 Adjusted flows. B1 is the BIS FX- and break-adjusted change, not the difference of two positions: one economy's value for one quarter is compared with the value read from the BIS (stats.bis.org, the series behind the Statistics Explorer). A BIS revision of that quarter shows here and calls for a new reading. (0.5%; warn)
V20 Disjoint instruments. International debt securities (BIS DSS) and cross-border loans and deposits (BIS LBS instrument G) are the two parts of A3's denominator (A3 is context since method 1.3) and of the flow score; no series is used in both, and LBS all instruments (which include banks' holdings of debt securities) is never used. (exact; block)
V21 Pulse freshness. Each weekly or daily pulse tile's newest value is at most 10 days old at build time; an older tile shows a stale warning. TIC is monthly and follows V12. (10 days; warn)
V22 No extreme from a tiny move. The score cannot reach 0 or 100 from a tiny move in a narrow history: every own-history signal's scale is at least its floor (A1 1 point of GDP, A2 10 points of reserves), and a signal at 0 or 100 sits at least three floors from the economy's own median. Recomputed from the published columns. (floor; block)
V23 Quarterly frame against WDI. For every economy of the earnings view and each quarterly series (exports and imports of goods and services, net primary income, GDP), the calendar-year sums of the IMF quarterly series, converted at the BIS quarterly average rate where the unit is not the dollar, are compared with the World Bank WDI annual figure: the unit whose median ratio over the overlapping years is nearest one is chosen, and the series passes when that ratio is within 3% of one. A failing economy-series is listed as withheld: a reader of earn/global must not draw it (India's QNEA GDP, whose fiscal-year quarters do not sum to the WDI calendar year, fails and is withheld). (3% (median ratio); warn)
V24 Sovereign hit and false-signal rates. With the default thresholds and K = 4 rules on, the share of distress spells (IMF arrangements, euro-area and EU programmes, defaults; config/sovereign_episodes.yaml, spells merged within a year) with an alert in the one to three years before their start, and the share of calm years (more than three years from any episode of that economy, outside 2008, 2009 and 2020) with an alert. Projection years and years with no rule available are left out. Reported as information: the numbers are what they are, and the page shows them. (none (reported); info)
V25 Sovereign AUROC. The area under the ROC curve of the rule count, the pre-episode years against the calm years of V24, with ties counted half. 0.5 is chance. Below 0.5 the check warns: the count then separates the two sets no better than a coin, and the page must say so. It never blocks: the Sovereign section is a structured reading of published thresholds, not a forecast. (warn below 0.5; warn)
V26 Sovereign expectations. The expectations written down before the section was built (config/sovereign.yaml `expectations`: Greece 2008–09, Argentina 1999–2000 and Portugal 2009–10 reach four rules; Korea 1996 is flagged by the liquidity rule; Greece 2025 has the debt and net IIP rules on and the deficit and snowball rules off) are recomputed on every release and each is reported pass or fail. A failure warns and the page prints it; it never blocks, because an expectation that fails is a finding about the rules, not an error of the build. (exact; warn)
Definitions
coverage. The share of an economy's total for a channel that pair data identify by counterparty.
financial centre. An economy whose external positions are large relative to its GDP; holdings there often belong to investors elsewhere. The BIS offshore centres carry the tag FC; Luxembourg, Ireland, the Netherlands and Switzerland, where funds are domiciled, carry FD: a holder there is a fund domicile, not an end investor.
flow. The change over a period: a published transaction, or the difference of two positions (then valuation changes are mixed in).
flow score. The Signal Board's y axis: the quarter's bank (B1) and bond (B2) flows into the economy over the stock of the quarter before, annualised, in per cent. Below zero: non-resident banks and bondholders reduced their claims (a creditor withdrawal), which is not the balance of payments' net outflow.
gross liabilities. Gross external (financial) liabilities: everything residents owe to or have issued to non-residents in the IMF IIP, at market value, equity included: portfolio equity and direct investment equity rise with domestic stock prices, which is not borrowing. The debt part is portfolio debt, other investment and direct investment debt instruments.
layer. Core money (central bank), bank money (deposits), and derived claims (securities, funds), after PLAN.md.
nationality. Bank positions assigned to the economy where the bank's parent is headquartered (BIS CBS).
niip. Net international investment position: external financial assets less liabilities, both at market value. Above zero, a net creditor to the rest of the world.
position. The stock outstanding at the end of a period, at market or book value as the source reports it.
reserves io. The IMF's confidential group of securities held as reserve assets (SEFER) and by international organisations (SSIO), published by issuer only in aggregate.
residence. Positions assigned to the economy where the holder or the bank office is located.
ultimate risk. BIS CBS positions assigned to the economy of the party that ultimately bears the risk (a guarantor or a head office), after risk transfers.
vulnerability. The Signal Board's x axis (method 1.4, R18): ½ × exposure (FX credit to GDP and, where scored, short-term bank debt to net reserves, each read half against every board economy so far and half against the economy's own past) + ½ × buffer weakness (net IIP and the current account to GDP, against every board economy so far). 0–100; not a ranking.
Changelog
1.5 (2026-11-02): The export surface of the refurbish plan of 2 Nov 2026 (WP1, WP2, WP4, D3 option a): money-flow publishes what global-network used to compute from its files, and collects what it used to fetch. New views, each gated and checked like the others and listed in surface.json (surface 1.0): earn/global (World Bank WDI annual and IMF BOP, QNEA and BIS XRU quarterly earnings series, fetched by scripts/fetch_wdi.py and fetch_quarterly.py), changes/global (R20), episodes/global (the validation set of methods 1.3 and 1.4) and sovereign/global (the Sovereign section, R22–R28, fetched by scripts/fetch_warning.py); mkt/bank gains lender_cut (R21). Rules: R20 the pulse and the change feed are published once at release and never recomputed downstream; R21 the lender-cut arithmetic; R22–R28 the seven sovereign rules (debt level, deficit, debt snowball, current account, net IIP, liquidity = A2, spread) with their defaults from config/sovereign.yaml. Checks: V23 the quarterly frame against WDI within 3% (India's QNEA GDP fails and is withheld); V24–V26 the sovereign validation (hit and false-signal rates, AUROC, the pre-written expectations), information or warnings, never blocking. V11 notes the one monthly derived series the sovereign view carries (the yield spread). No earlier rule changed; the Signal Board's score and flow are untouched.
1.4 (2026-10-31): After an external verification of the methodology page (16 findings, checked against the code and the raw mirror on 31 Oct 2026; docs/methodology/vulnerability-v1.4.md). R17: A2 divides by net reserves, IMF IRFCL Section I plus the predetermined net drains of Section II (both already mirrored), floored at a tenth of gross reserves; the gross figure is shown beside it. A1 adds the local foreign-currency claims of banks inside the economy on resident non-banks (BIS LBS local positions, as the BIS global liquidity definition does), for the 26 board economies that report them, and marks the ten that do not; A1 by nationality carries an offshore-issuance flag; B1's scope (every sector and currency) and the two flows' bases are stated; the flow score's sign is a creditor withdrawal, not a balance-of-payments outflow. R18: the A2 pool holds scored values only and buffers are levels only, now stated. R16: a power-of-ten unit error is rescaled, not dropped, so Uruguay's monetary base no longer ends in 2018; a listed unit correction fixes Sierra Leone's old-leone segment; V13 marks any segment that starts at a listed redenomination date. R1: dated currency regimes (Zimbabwe's dollar years), West Bank and Gaza in shekels, the IMF's currency-union aggregates named. R4, R5, R7, R9, R19: the handling of negative and confidential cells, the no-split reporters' share on the coverage panel, the IIP's period in the alignment, layers never summed, the board's scope and Bulgaria's euro date, all written down. Validation re-run with leave-one-out and bootstrap intervals.
1.3 (2026-10-31): The Signal Board's vulnerability score is rebuilt after a methodology review (docs/methodology/vulnerability-v1.3.md). Method 1.2's own-history percentiles had no skill against past external-stress episodes (area under the ROC curve 0.51) and put Korea, a net creditor, first of 36. R17: A1 is by residence of the borrower (consistent with GDP); A2 is scored only where reserves are the last line of FX liquidity (not for euro members, reserve-currency issuers or a standing Fed swap line); A3 (bond share) is shown but not scored, since a higher bond share went with less stress in every test; buffers added (net IIP and the current account, IMF IIP and BOP, already in the data hub). R18: each exposure is half a level signal (its rank among every board economy-quarter so far) and half an own-history robust z with a floor on its scale; score = ½ exposure + ½ buffer weakness; point in time throughout (validated: 0.67). R19: unchanged list; reserve-currency issuers and standing swap lines named. V18 follows the new components; V20 notes A3 as context; V22 (no extreme from a tiny move in a narrow history) added. The 1.2 score ships beside the new one for one release.
1.2 (2026-10-30): The World page's Signal Board: R17 (vulnerability and flow indicators from the borrower's side, with BIS debt securities by nationality of issuer and CBS short-term claims), R18 (each indicator as a percentile of the economy's own history), R19 (the board's 36 economies). Checks V18 (every drawn economy complete, the rest logged), V19 (B1 is the BIS adjusted change, against a BIS reading), V20 (disjoint instruments), V21 (pulse tiles at most 10 days old) added; V11 allows the four open pulse series a year of weekly points. No earlier rule changed.
1.1 (2026-10-30): After the data-integrity audit of 29 Oct 2026 (docs/DATA-AUDIT.md): R1 converts dollarised economies at one; R4 keeps one reporter per pair for the whole series; R5 splits LBS into loans and deposits, debt securities and derivatives/other, the last a pool of its own; R6 counts the IMF's reserves-and-international-organisations group as identified, uses the DIP's own total for FDI and caps coverage at 100%; R7 lets annual DIP sit at its own year in the aligned view; R16 quarantines source errors. Checks: V5 extended to reserves, Korea's ECOS IIP, CPIS assets, DIP and TIC; V7 handles negative derivatives; V13 blocks on unit errors; V14–V16 added; V8 labelled a regression test. Headlines state the drawn node. Added the same day with the World and Markets redesign, no rule changed: V17 (every source a page names is a registry link).
1.0 (2026-10-29): First method: rules R1–R15 and checks V1–V13.
datasteg: the flow sites
money-flowYou are here
Where money is made and where it goes: central bank and bank money, and cross-border positions by country pair.
trade-flow
The world trade network and ten product chains from ore to product, with the events that moved them.