Naar de inhoud
Horalis

Horalis Recession Signals: method and limits

Alle onderzoeksbladen

De bladen zijn voorlopig in het Engels en het Spaans: hier lees je de Engelse tekst.

What it shows: a catalog of recognised recession signals for the euro area and for the US, each with its record against the recessions in its own data, and a combined signal from the ones the person chooses. History: block B5 of the redesign (docs/plan-rediseno.md); catalog and choice, session E of the plan of corrections of 22 October 2026 (docs/plan-correcciones-2.md); four more signals, CSV and data by area, the same day; human names, a wider repertoire, automatic choice and a combined signal with each signal's long history, also the same day; out-of-sample validation and pending warnings, on 23 October, asked for by Marek. It replaces the yield curve alone (curva-de-tipos.md).

How each signal is shown

First a human name ("Unemployment rises fast") and, in brackets, the technical name ("Sahm rule"). Below, a sentence on what it means and why it warns, and an example with a real date: not written by hand, it comes from its data (example in src/panel.ts). It is its last warning that was right, with the month the recession began; if it was never right, its last warning, as a false alarm or, if less than 24 months old, as an open warning. So the example is always true with the data the page has. In the five languages.

Catalog of signals

The thresholds are the ones the literature, or each signal's own source, gives. They are not tuned to this data: tuning them would make the record look better than it is. When neither the literature nor the source gives a threshold, the simplest reading is used (lower than a year before, or below its average), and the page's sheet says so under "Threshold from". Each signal has this section; the page opens it under "Details", links here and offers its data as CSV.

Rates at 10 years and at 3 months

  • Name on the page: "Long-term interest falls below short-term" (yield curve, 10 years − 3 months).
  • What it measures: how much more 10-year government debt pays than 3-month debt. Below 0 the yield curve is inverted: the short term pays more than the long term.
  • Formula: each day with both rates, the 10-year rate minus the 3-month rate; the average of those days in the month, in percentage points, to two decimals. It signals in a month where it is below 0.
  • Area and source: euro area, the ECB's AAA curve (YC, series B.U2.EUR.4F.G_N_A.SV_C_YM.SR_10Y and …SR_3M), from September 2004. US, the Federal Reserve's Treasury constant-maturity yields (H.15, RIFLGFCY10_N.B and RIFLGFCM03_N.B), from September 1981.
  • Threshold: Estrella, A. and Mishkin, F. S. (1996). "The Yield Curve as a Predictor of U.S. Recessions". Current Issues in Economics and Finance, 2(7). Federal Reserve Bank of New York. Verified in the text (22 October 2026): p. 1 defines the spread "between the interest rates on the ten-year Treasury note and the three-month Treasury bill"; the table on p. 2 ("Estimated Recession Probabilities for Probit Model Using the Yield Curve Spread") gives a 25 % probability of recession four quarters ahead with a spread of 0.02 points and 30 % with −0.17. The paper sets no threshold; 0 (the inversion) is the usual reading, and in its table it means a probability of about one in four.
  • Record: euro area, 0 of 3 recessions signalled, 1 false alarm. US, 4 of 4, 1 false alarm and 2 pending warnings, median lead of 12 months.

Rates at 10 years and at 2 years

  • Name on the page: "Interest at 10 years falls below interest at 2 years" (yield curve, 10 years − 2 years).
  • What it measures: the same with the 2-year term.
  • Formula: as above, with the 2-year rate instead of the 3-month rate. It signals below 0.
  • Area and source: euro area, the ECB's AAA curve (…SR_10Y and …SR_2Y), from September 2004. US, H.15 (RIFLGFCY10_N.B and RIFLGFCY02_N.B), from June 1976.
  • Threshold: common market use (the inversion, below 0); there is no single reference paper. The page says "Neither the literature nor the source gives one".
  • Record: euro area, 0 of 3, 1 false alarm. US, 5 of 6, 2 false alarms, median lead of 17 months.

Sahm rule

  • Name on the page: "Unemployment rises fast" (Sahm rule).
  • What it measures: whether unemployment rises fast from its recent low.
  • Formula: the average unemployment rate of the last 3 months minus the lowest of those 3-month averages in the 12 months before, in points, to two decimals. It signals from 0.5 points.
  • Area and source: euro area, Eurostat (une_rt_m, EA21, seasonally adjusted), unemployment from January 2000 and the rule from March 2001. US, the Bureau of Labor Statistics (BLS, LNS14000000), unemployment from January 1948 and the rule from March 1949.
  • Threshold: Sahm, C. (2019). "Direct Stimulus Payments to Individuals". In H. Boushey, R. Nunn and J. Shambaugh (eds.), Recession Ready: Fiscal Policies to Stabilize the American Economy. The Hamilton Project and Washington Center for Equitable Growth.
  • Record: euro area, 2 of 3, 1 false alarm, median 4 months late. US, 11 of 11, 2 false alarms and 1 pending, median 2 months late.

German debt at 10 years and at 6 months (approximation)

  • Name on the page: "In Germany, long-term interest falls below short-term" (German yield curve, 10 years − 6 months).
  • What it measures: Germany's yield curve, standing in for the euro area's, which at the ECB only exists from 2004. It is an approximation: German federal debt is not the euro AAA curve, and before 1999 there was the mark, not the euro. The page marks it so in the catalog and in its CSV.
  • Formula: the monthly yield of German federal debt at 10 years minus that at 6 months, in points, to two decimals. It signals below 0. Six months because it is the shortest term of the same curve; the 3-month interbank rate (Euribor) needs a paid licence for commercial use (EMMI).
  • Area and source: euro area (against the CEPR-EABCN recessions). Deutsche Bundesbank, term structure of interest rates on listed Federal securities, Svensson method (BBSIS, series M.I.ZST.ZI.EUR.S1311.B.A604.R10XX.R.A.A._Z._Z.A and …R005X…), from September 1972.
  • Licence: the ESCB statistics reuse policy: free, also commercial, quoting the source ("Source: Deutsche Bundesbank") and without modifying the data (checked on 22 October 2026 on bundesbank.de, "Terms of use regarding the reuse of ESCB statistics"). The gap between two terms is worked out here, and says so.
  • Threshold: the inversion (below 0), as in Estrella and Mishkin (1996). Estrella, A. and Mishkin, F. S. (1997). "The predictive power of the term structure of interest rates in Europe and the United States: Implications for the European Central Bank". European Economic Review, 41(7), 1375–1401. Only partly verified (22 October 2026): the reference, on RePEc and on the NBER's page, which gives it as the published version of NBER Working Paper 5279 (1995), whose abstract says the spread has "significant predictive power for both real activity and inflation" in Europe and the US. Not verified: how it defines the German spread, and on which page: the NBER PDF is a scan with no readable text, and the published article is behind a paywall.
  • Record: 4 of 6 recessions signalled, 3 false alarms, median lead of 20 months.

Economic sentiment

  • Name on the page: "Firms and consumers see the economy worse than usual" (Economic Sentiment Indicator, European Commission).
  • What it measures: monthly surveys of firms (industry, services, retail, construction) and consumers.
  • Formula: the published value. The Commission weighs the balances of the answers and scales the result to a long-term mean of 100 and a standard deviation of 10. It signals below 100.
  • Area and source: euro area (EA21), European Commission (DG ECFIN), via Eurostat (ei_bssi_m_r2, BS-ESI-I, seasonally adjusted), from January 1980.
  • Licence: CC BY 4.0 (Eurostat's copyright notice and the Commission's reuse policy, Decision 2011/833/EU).
  • Threshold: European Commission, DG ECFIN (2023). The Joint Harmonised EU Programme of Business and Consumer Surveys: User Guide (updated January 2023), p. 22 of the PDF: "Values greater than 100 indicate an above-average economic sentiment, whereas values below 100 indicate a below-average position". The source gives no recession threshold; below 100 is the only one it defines.
  • Record: 5 of 5, 9 false alarms, median lead of 0 months.

OECD leading indicator

  • Name on the page: "Indicators that move early fall below their trend" (OECD composite leading indicator).
  • What it measures: the OECD's composite leading indicator (CLI): series that tend to turn before the economy, combined by the OECD.
  • Formula: the published value, amplitude adjusted, with the long-term trend at 100. It signals below 100.
  • Area and source: US, OECD (DF_CLI, USA.M.LI...AA...H), from January 1955. There is no euro area version: the OECD no longer publishes a euro aggregate; the closest, "major four European countries" (G4E), includes the United Kingdom.
  • Licence: the OECD's terms for data, checked for this dataset (see "Data", below): free use, also commercial, citing. The CLI is an OECD index; its components are not redistributed.
  • Threshold: OECD (2020). Interpreting OECD Composite Leading Indicators (CLIs), October 2020, p. 1 (verified on 22 October 2026): "A CLI reading above (below) 100 is always an indication that anticipates levels of GDP above (below) trend".
  • Record: 10 of 10, 9 false alarms, median lead of 6 months.

Consumer confidence

  • Name on the page: "Consumers are gloomier than usual" (consumer confidence, European Commission).
  • What it measures: the balance of households' answers about their situation and the economy's, in the Commission's surveys.
  • Formula: the published balance less its average since January 1985 (the first month with data), in points. It signals below 0: worse than its average.
  • Area and source: euro area (EA21), European Commission (DG ECFIN), via Eurostat (ei_bssi_m_r2, BS-CSMCI-BAL, seasonally adjusted), from January 1985.
  • Licence: CC BY 4.0, like economic sentiment.
  • Threshold: none in the literature or the source: the Commission does not scale this balance to 100. The simplest reading is used, below its average, not tuned. The average moves a little with each year of data.
  • Record: 3 of 4, 5 false alarms, median lead of 5 months.

Real M1

  • Name on the page: "Less money at hand, after inflation" (real M1).
  • What it measures: cash and current accounts (M1), after inflation.
  • Formula: (1 + annual growth of M1) / (1 + annual inflation) − 1, in %, to two decimals. It signals below 0.
  • Area and source: euro area. The ECB's M1 (BSI.M.U2.Y.V.M10.X.I.U2.2300.Z01.A, annual growth, from 1981) and Eurostat's HICP inflation (prc_hicp_minr, EA21, TOTAL, from December 2000; the ECB's older series stopped in December 2025). From December 2000.
  • Licence: ESCB (ECB) and CC BY 4.0 (Eurostat); the real growth is worked out by Horalis, and says so.
  • Threshold: Musso, A. (2019). "The predictive power of real M1 for real economic activity in the euro area". ECB, Economic Bulletin, 3/2019, box 4. Verified on the box's web page (22 October 2026; it has no pages): annual real M1 growth "went well into negative territory for prolonged periods just before (or in coincidence with) all historical euro area recessions, as dated by the CEPR". Below 0.
  • Record: 2 of 3, 3 false alarms and 1 pending, median lead of 3.5 months.

Bank lending to firms

  • Name on the page: "Banks lend less to firms" (bank loans to firms, ECB).
  • What it measures: how much banks' loans to non-financial firms in the euro area grow over a year.
  • Formula: the published annual growth of adjusted loans (BSI.M.U2.Y.U.A20T.A.I.U2.2240.Z01.A), in %. It signals below 0.
  • Area and source: euro area, ECB, from January 2004.
  • Licence: the ESCB reuse policy.
  • Threshold: none in the literature or the source; below 0 (lending shrinks) is the simplest reading. Credit tends to react late: it confirms more than it anticipates.
  • Record: 1 of 3, 1 false alarm, a lead of 24 months.

Industrial production

  • Name on the page: "Factories produce less" (industrial production, Leamer's rule).
  • What it measures: how much what factories, mines and power plants produce has fallen in 6 months.
  • Formula: 100 times the natural log of the index over its value 6 months before, to two decimals (close to the change in %). It signals below −3.
  • Area and source: US, Federal Reserve, G.17 (total index B50001, seasonally adjusted, ip_sa.txt), from January 1919 (the signal from July 1919); to judge it, the NBER recessions before 1948 are added. Euro area, Eurostat (sts_inpr_m, EA21, B-D, seasonally and calendar adjusted, 2021 = 100), from January 1991.
  • Licence: US, public domain; Eurostat, CC BY 4.0.
  • Threshold: Leamer, E. E. (2008). "What's a Recession, Anyway?". NBER Working Paper 14221, p. 14: "The industrial production threshold log(ip/ip(-6)) < -0.03 picks up the ten official recessions plus three more in the 1950s". Calibrated for the US; the euro area uses the same, untuned, and says so.
  • Record: US, 17 of 18, 4 false alarms, median 3 months late. Euro area, 4 of 4, 3 false alarms and 1 pending, median 3 months late.

Building permits

  • Name on the page: "Fewer homes are approved for building" (building permits).
  • What it measures: how many homes get a building permit, against a year before.
  • Formula: the change in % from the same month a year before. It signals below 0.
  • Area and source: US, Census Bureau (Building Permits Survey, new private housing units authorized, total, seasonally adjusted annual rate, permits_cust.xlsx), from 1960 (the signal from 1961). Euro area, Eurostat (sts_cobp_m, BPRM_DW, dwellings in residential buildings except residences for communities, EA21, seasonally adjusted), from 2005 (the signal from 2006).
  • Licence: US, public domain; Eurostat, CC BY 4.0.
  • Threshold: none in the literature or the source. It is a component of The Conference Board's leading index for the US, which recognises it as a leading indicator without a threshold of its own. Below 0 (fewer than a year before) is the simplest reading.
  • Record: US, 8 of 8, 25 false alarms and 6 pending, median lead of 18 months. Euro area, 3 of 3, 8 false alarms and 2 pending, 18 months.

Unemployment benefit claims

  • Name on the page: "More people claim unemployment benefit" (initial jobless claims).
  • What it measures: how many people claim the benefit for the first time, against a year before.
  • Formula: the monthly sum of all states' weekly initial claims (not seasonally adjusted; the annual change removes the season), change in % from the same month a year before. Whole months only. It signals from 0.
  • Area and source: US, Department of Labor (ETA 539, ar539.csv), from June 1984 (the signal from 1985).
  • Licence: public domain.
  • Threshold: none in the literature on an annual basis. The St. Louis Fed quotes business economists' rule of thumb (400,000 weekly claims), which does not hold with a growing population. More than a year before is the simplest reading. It is a component of The Conference Board's leading index.
  • Record: 4 of 4, 56 false alarms and 5 pending, median lead of 22 months: it warns of everything, also of what does not come.

Pending: hours worked in manufacturing (US)

Weekly hours in manufacturing (BLS, CES3000000007, from 1939) are a component of The Conference Board's index. The script already asks for them, but on 22 October 2026 the BLS API had used up its daily keyless quota, and FRED does not answer from this network. They come in with the next download, with their catalog entry and words ("Adding a signal").

Combined signal

  • What it measures: how much of the weight of the chosen signals is signalling at once.
  • Formula: each chosen signal's weight is its record in that area before the cutoff (right warnings / warnings settled before 2000; 0.5, a neutral weight, if it has none settled before, like those that start later). Each month, the sum of the weights of the chosen signals that are on, divided by the sum of the weights of those that have data that month. It signals from half (0.5). So each signal counts from its first month and the combined signal keeps the long history: with the German curve, from 1972. With a single one, it is that signal.
  • Change of 22 October 2026: before, only the months every chosen signal covered counted, and the euro area's combined signal started in 2001.
  • Reference: Horalis's rule (21 October 2026, asked for by Marek; choice and coverage, 22 October 2026).

Choosing the signals

  • Each area lists all its signals, each with a box. The page draws the chart, the record and the combined signal with the ticked ones only, at once, in the browser. The choice is neither saved nor sent.
  • By default the 3 best of each area by their record before 2000 are ticked (DEFAULT_COUNT and CUTOFF in src/catalog.ts). The score (score in src/signals.ts) is the harmonic mean of two parts: the recessions it warned of (signalled / recessions) and the warnings that were right (hits / settled warnings). A signal that warned of none before 2000, or has no data before it, is never ticked on its own; the person can tick it.
  • The explanation is one click away, under "Why these are ticked": each signal with its score before 2000, out of 100, from best to worst, and which are ticked.
  • Warning: choosing signals, and weighing them, by their record fits them to that same history (selection bias). That is why the first choice sees nothing after 2000, and the page shows separately how it did after (see "Out of sample"). Signals the person ticks by looking at the whole record are still in sample.

Out of sample

  • Cutoff: January 2000. The first choice, the score and the weights use only what was known then: each series is cut before 2000 before it is worked out (so consumer confidence, measured against its average, does not see the average of the years after), and only the warnings and recessions before count, with the "pending" rule as of December 1999.
  • Beside the combined signal, the page gives two figures: before 2000 (in sample: the years the choice and weights come from) and from 2000 (out of sample: data the choice never saw). One line explains it: "The first choice and the weights use data before 2000 only. The record after it is the honest test". Each period judges its own warnings and its own recessions; a 1999 warning that hit the 2001 recession counts as pending in sample.
  • If every chosen signal starts after 2000, there is only the figure after.
  • There are few recessions out of sample (three in each area: 2008, 2011 and 2020 in the euro area; 2001, 2008 and 2020 in the US). The figure is honest, but moves a lot with one hit more or less.

Not available

Recognised signals whose data is not open. They appear in the catalog, with no box, with the reason: "paid data" or "its licence does not allow sharing". Where it says "not checked here", the reason is what the source says of itself, without its terms read line by line today.

AreaSignalReasonChecked
Euro areaPMI (HCOB and S&P Global)paidnot checked here: S&P Global sells them as a product
Euro areaifo business climate (Germany)paidnot checked here
Euro areaZEW expectations (Germany)paidnot checked here
Euro area and USThe Conference Board's Leading Economic Indexpaidnot checked here: published for members and subscribers
Euro area and USCredit spread (ICE BofA, Moody's)proprietary licenceon FRED they carry their owners' copyright (checked in an earlier session, not today)
USISM Manufacturing PMIpaidnot checked here
USThe Conference Board's Consumer Confidencepaidnot checked here
USUniversity of Michigan consumer sentimentlicenceverified on 22 October 2026 in its "Agreement on Copyright and Limitations on Use": CC BY-NC-ND only for research or internal use, "without the ability to redistribute the data"; redistributing it on a website needs a licence
USChicago Fed National Activity Index (CFNAI-MA3; its own threshold, −0.70, is citable)licenceverified on 22 October 2026: its legal notices ask for written permission for "republication or distribution"
USS&P 500licenceS&P Dow Jones Indices licenses it

Each signal's data

  • The page does not carry the data inside, to stay under 50 KB compressed. When an area's choice changes, it downloads that area's data from Horalis (data/ea.json, data/us.json), once, and redraws. Without JavaScript, the page shows the default choice.
  • The charts are drawn with fewer points (Ramer–Douglas–Peucker, a tolerance of one unit): they look the same and weigh half.
  • In the CSV, the warning column says on the first month of each warning whether it was a hit, a false alarm or is pending.
  • Each signal downloads as CSV from its sheet, in the page's language (data/ea-bund.es.csv, for example). First, in lines starting with #: the signal (human and technical name), its rule, formula and threshold, the source and its licence, the recessions and their source, the download day, the link to its section of this sheet and its record. Then one row a month with headers in that language (in English, month,value,signalling,recession,warning). Numbers keep a decimal point and the columns a comma, so any program reads them; the sources' names and licences stay as their publishers write them.

Adding a signal

The catalog is in projects/recession-signals/src/catalog.ts. Adding a signal needs no change to the page, its script or the styles:

  1. Its series: in scripts/signals.ts, the download from its original publisher and its source (name, url, licence) in its area. Run it again and it lands in src/data/signals.json.
  2. Its catalog entry: id, the series it comes from, the transform if any (value: Sahm rule, 6-month change, annual change, distance from the average), the rule ({ below: n } or { from: n }), where the threshold comes from (reference, or null for the simplest reading), the drawing behind its "?", its source and the anchor of its section here; approximation: true if the data is another area's.
  3. Its words in each language (indicators: human name, technical name, rule, formula and what it means; and, for a new source, sourceNames; the TypeScript type asks for them) and its section in this sheet, with source, checked licence, cited threshold and record.

The record, the dated example, the score, the default choice, the chart, the combined signal and its CSV in five languages follow on their own. A test (test/panel.test.ts, "takes a new signal…") adds an example signal with only its series and its entry, and checks that the catalog, the panel and the ranking take it. A signal that cannot be shared goes in UNAVAILABLE, with its words in unavailable.

Data (all official and open)

AreaSeriesSourceLicence
Euro areaAAA curve at 10 years, 3 months and 2 years, daily, monthly averageECB, ECB Data Portal, YCESCB reuse policy: free, unmodified, "Source: ECB statistics"
Euro areaUnemployment, seasonally adjusted, monthly, EA21 (from 2000)Eurostat, une_rt_mCC BY 4.0
Euro areaGerman federal debt at 10 years and 6 months, monthly (from 1972)Deutsche Bundesbank, BBSISESCB, "Source: Deutsche Bundesbank"
Euro areaEconomic sentiment and consumer confidence, EA21 (from 1980 and 1985)European Commission via Eurostat, ei_bssi_m_r2CC BY 4.0
Euro areaM1 and loans to firms, annual growth (from 1981 and 2004)ECB, BSIESCB
Euro areaHICP inflation, EA21 (from 2000)Eurostat, prc_hicp_minrCC BY 4.0
Euro areaIndustrial production and building permits, EA21 (from 1991 and 2005)Eurostat, sts_inpr_m, sts_cobp_mCC BY 4.0
Euro areaRecessionsCEPR-EABCN committeecitation
USTreasury constant-maturity yields, daily, monthly averageFederal Reserve, H.15public domain
USUnemployment, LNS14000000BLSpublic domain
USComposite leading indicator, monthly (from 1955)OECD, DF_CLIOECD terms: free, also commercial, citing
USIndustrial production, total index, monthly (from 1919)Federal Reserve, G.17public domain
USInitial claims, weekly (from 1984)Department of Labor, ETA 539public domain
USBuilding permits, monthly (from 1960)Census Bureaupublic domain
USRecessions (from 1918)NBER committeecitation

The OECD's terms for this dataset (DF_CLI), checked on 22 October 2026: its page on the OECD Data Explorer shows no restrictions of its own and no third-party data; its "©" links to the OECD's general terms (oecd.org, "Terms & Conditions", section 3 "Data", "Permitted Use": "you can extract from, download, copy, adapt, print, distribute, share and embed Data for any purpose, even for commercial use", citing "OECD (year), (dataset name), (data source) DOI or URL (accessed on (date))"). It is not CC BY 4.0, but allows the same with that citation. The dataset's SDMX metadata carries no restrictions either. The terms are a web page, with no page numbers.

A recession runs from the month after the peak to the trough (in the euro area, from the quarter after the peak to the trough quarter, as months).

scripts/signals.ts downloads it once a year (the official-data workflow). FRED does not answer from every network, so each original publisher is read directly. The "Update from the ECB" button brings the euro area rates straight to the browser; nothing goes through Horalis. The CSV files are those of the last yearly download; they do not take in that update.

Also left out: Euribor (an EMMI licence for commercial use).

How each signal is judged

  1. Each run of consecutive signalling months is a warning.
  2. A warning is a hit if it starts during a recession or up to 24 months before one starts. If none has come and the warning is less than 24 months old at the data's last month, it is pending: neither hit nor false alarm. Once the 24 months have passed, it is a false alarm. Pending warnings are shown apart in the record ("pending: n") and in the CSV (pending), and count neither in the score nor in the weights.
  3. A recession counts only if the data covers its start. It is signalled if some warning hit it.
  4. Lead: months from the first warning to the recession's start; the median is given. Negative: the warning came late, already inside.

Code: projects/recession-signals/src/signals.ts, with tests.

Result with the data of 22 October 2026

By area, from best to worst score before 2000 (the one that chooses). Whole record, with pending warnings apart.

AreaSignal (from)Recessions signalledFalse alarmsPendingMedian leadScore before 2000
Euro areaIndustrial production (1991)4 of 4313 months late100
Euro areaGerman debt 10-year − 6-month, approximation (1972)4 of 63020 months90
Euro areaEconomic sentiment (1980)5 of 5900 months57
Euro areaConsumer confidence (1985)3 of 4505 months50
Euro areaSahm rule (2001)2 of 3104 months late—
Euro areaReal M1 (2000)2 of 3313.5 months—
Euro areaBank lending to firms (2004)1 of 31024 months—
Euro areaBuilding permits (2006)3 of 38218 months—
Euro area10-year − 3-month (2004)0 of 310——
Euro area10-year − 2-year (2004)0 of 310——
US10-year − 3-month (1981)4 of 41212 months100
US10-year − 2-year (1976)5 of 62017 months100
USSahm rule (1949)11 of 11212 months late100
USIndustrial production (1919)17 of 18403 months late94
USOECD leading indicator (1955)10 of 10906 months74
USBuilding permits (1961)8 of 825618 months65
USBenefit claims (1985)4 of 456522 months34

"—": no data before 2000; it cannot be chosen on its own.

Default combined signal, in and out of sample:

AreaChosen (weights)Before 2000From 2000, out of sample
Euro areaindustrial production, German curve, sentiment (45 / 37 / 18)3 of 3, 2 false alarms, median lead of 23 months3 of 3, 1 false alarm, 1 pending, median 3 months late
US10-year − 3-month, 10-year − 2-year, Sahm rule (33 / 33 / 33)8 of 8, 0 false alarms, median 1.5 months late2 of 3, 1 false alarm, median lead of 13 months

The weights are each signal's record before 2000 (right warnings / settled warnings), out of 100 and rounded. In the US, the figure in sample (8 of 8, no false alarms) is the one the choice was looking for; the one out of sample (2 of 3, one false alarm) is the one that matters. Before this change, on 22 October, the choice looked at the whole record and counted recent warnings as false alarms: euro area, industrial production, permits and German curve; US, industrial production, Sahm and 10 − 2 years.

Limits (and what the page always says)

  • The figure before 2000 is in sample: the choice and the weights come from those years, which is why it looks better. The one after is the test, but with only three recessions per area. Each signal's record in the catalog covers the whole period.
  • It is a historical signal, not a forecast or a recommendation.
  • In the euro area the ECB curve only exists from 2004: three recessions, and it signalled none. The German curve covers all six, but it is another curve.
  • The Sahm rule and industrial production tend to arrive once the recession has begun: they confirm, they do not anticipate.
  • The signals with "the simplest reading" (consumer confidence, lending, permits, claims) give many false alarms: they have no threshold made for recessions.
  • Few recessions: one hit more or less changes the record a lot. The score does not take into account how many recessions each signal covers: before 2000, the US 10-year − 3-month curve scores 100 with a single one.

How to cite

Horalis (2026). Horalis Recession Signals: method and limits. Horalis Research, version of 23 October 2026. https://horalis.eu/research/recession-signals/senales-recesion/

In Spanish: https://horalis.eu/es/research/recession-signals/senales-recesion/. The version is the date of the last change of method; the data is renewed once a year and the page says the day it was downloaded. For each signal, the link to its section of this document (for example #regla-de-sahm), and the original references and sources it gives. Whoever uses the CSV files also cites each series' source, as its licence asks (it is inside each file).