Every input is loaded and checked by one shared daily data step before any beta is calculated. The same step feeds the other two Gyre Research analytics, so all three read the same prices on the same day.
The universe is the current S&P 500 membership from the newest month-end index-weight snapshot, plus SPY for the validation check in Section 3. Weights, not just names, come from that snapshot: they drive the cap-weighted benchmark.
Prices are split- and dividend-adjusted daily closes from a commercial market-data provider. After loading, a shared clean-up drops rows with no or a non-positive close, a very large one-day move that reverses the next day (a bad print), and a price far from its local median (a run of bad prints); a large move that does not reverse is kept, because it may be real. A gap of at most two trading days is filled with the previous close. Every dropped or filled point is logged with its value. Then a gate decides whether anything may be calculated:
| Check | Requirement | On failure |
|---|---|---|
| Freshness | The newest price is at most 4 calendar days old | Nothing is calculated or published that day |
| Coverage | At least 80% of current members have a price on the newest date | Nothing is calculated or published that day |
| Missing days in a window | A member missing more than 5% of a window's trading days | The beta is still calculated and published, with a quality flag on that window |
| Independent close check | A sample of closes is compared with a second, independent source | A mismatch is reported to the operators; it does not stop the run |
Sector and industry come from each company’s profile at the same market-data provider; they drive the “My Sector” benchmark and the sector ranks. Market capitalization is the profile’s own figure; when the profile has none, it is shares outstanding × the latest adjusted close. A company without a market capitalization is left out of the cap-tier benchmarks and takes part in everything else.
For each security and benchmark, daily simple returns are computed from adjusted closing prices:
Adjusted close prices incorporate splits and dividends, ensuring returns reflect actual investor experience.
Five benchmark types are constructed for each security:
| Benchmark | Construction | Members |
|---|---|---|
| SPX (SPY) | The default benchmark of the dashboard, its top-10 lists, the sector and cap-tier ranks and the digest: SPX, the S&P 500 index as measured by SPY, the fund that tracks it (its price adjusted for splits and dividends) | 1 (the fund) |
| S&P 500 Cap-Weighted (point in time) | The index as it stood each day: the members of the index-weight snapshot in force, with each published addition and removal moved to its effective date; weights are reset to each snapshot and drift with prices between snapshots, as a real cap-weighted index does; a member with no price on a day is left out of that day’s return and the others reweighted | ~500 |
| S&P 500 Equal-Weighted | Simple average of all constituent returns | ~500 |
| Sector Peer | Equal-weight average of all S&P 500 securities in the same sector | Varies by sector |
| Cap Tier Peer | Equal-weight average of all S&P 500 securities in the same market cap tier | Varies by tier |
All composite benchmarks require a minimum of 5 constituents on any given date. Dates with fewer constituents are excluded from the benchmark series.
The other composites are built from today’s members. The equal-weighted, sector and cap-tier composites follow the companies in the index now, with today’s weights and sectors, not the index as it stood in the past. That is right for measuring a current member’s beta against its peers, and it is why the backtest (Section 4) does not use them: it builds the index as it stood on each past day instead. The cap-weighted composite is rebuilt point in time (since October 8, 2026); the default benchmark is SPX as measured by SPY, a fund that has held the index of each day (the cap-weighted composite was the default until October 8, 2026).
| Tier | Range |
|---|---|
| Mega | ≥ $200 billion |
| Large | $10B – $200B |
| Mid | $2B – $10B |
| Small | $250M – $2B |
| Micro | < $250M |
Betas are calculated over six lookback windows to capture both short-term dynamics and longer-term structural relationships:
| Label | Trading Days | Calendar Equivalent |
|---|---|---|
| 2y | 504 | ~2 years |
| 1y | 252 | ~1 year |
| 6m | 126 | ~6 months |
| 3m | 63 | ~3 months |
| 1m | 21 | ~1 month |
| 10d | 10 | ~2 weeks |
For each security × benchmark × lookback window combination, the return series are aligned on common trading dates. Days are then split by benchmark return direction:
A beta is published wherever it is mathematically defined: at least two aligned observations on that side, with non-zero benchmark variance. There is no editorial minimum above that floor. Arbitrary thresholds (formerly 15 observations per side) were removed on June 14, 2026 because they suppressed valid estimates without telling anyone. Where a value cannot be computed the result is null with an explicit reason, never a silent omission, and the up-day and down-day counts behind every estimate are stored and reported. Precision is communicated by the confidence interval rather than by withholding the number: a beta from few observations is published with a wide interval, which is more informative than its absence.
For each subset, beta is computed as:
Producing five output values per calculation:
Consider a stock with the following daily returns over a 5-day window, benchmarked against SPY:
| Day | Stock Return | SPY Return | Direction |
|---|---|---|---|
| Mon | +1.5% | +1.0% | Up |
| Tue | −0.3% | −0.8% | Down |
| Wed | +2.0% | +1.2% | Up |
| Thu | −1.0% | −1.5% | Down |
| Fri | +0.8% | +0.5% | Up |
Up days (Mon, Wed, Fri): Stock moves +1.5%, +2.0%, +0.8% when SPY moves +1.0%, +1.2%, +0.5%
→ Up-Beta = Cov(stock, SPY | up) / Var(SPY | up) = 1.654
Down days (Tue, Thu): Stock moves −0.3%, −1.0% when SPY moves −0.8%, −1.5%
→ Down-Beta = Cov(stock, SPY | down) / Var(SPY | down) = 1.000
Asymmetry Score = 1.654 − 1.000 = +0.654
Beta is a slope, not a ratio of average moves. On the two down days the stock fell less than SPY (−0.3% against −0.8%, −1.0% against −1.5%), yet its down-beta is 1.000: between those days SPY’s return changed by 0.7 points and the stock’s by 0.7 points. A down-beta from two days has no confidence interval (Section 2.6), and a 5-day window is far too short for any real conclusion; the example only shows the arithmetic.
Every up, down and tail beta is published with a 95% confidence interval. Beta is the ordinary least-squares slope, so its standard error is:
SE(β) = √( SSE / ((n − 2) × Sxx) )
where SSE is the residual sum of squares and Sxx the centred sum of squares of the benchmark returns. The interval is β ± t(n−2, 0.975) × SE(β), and the dashboard shows it as a half-width: 1.242 ±0.221 means the interval runs 1.021 to 1.463.
This is what makes the low observation floor safe. Without an interval, a beta estimated from a handful of days and one estimated from five hundred are two numbers that look equally authoritative. With one, the difference is visible and nothing has to be withheld. Two degrees of freedom are consumed by the fit, so an interval requires at least three observations; at exactly two the line passes through both points, the beta is real and the interval is undefined rather than zero-width, and the estimate is shown without one.
The interval describes sampling precision only. It assumes the usual regression conditions and says nothing about regime change — a narrow interval is not a promise that the relationship will persist.
Down beta answers “how does this security move when the market falls”. It blends every down day, from a routine quarter-percent drift to a genuine sell-off. Tail beta answers the narrower question a risk officer actually asks: how does it move when the market falls hard.
The threshold is one standard deviation of the benchmark's own returns over the same window, so it means the same thing across a mega-cap composite and a sector peer group rather than imposing a single percentage everywhere:
Tail days: dates where Rbenchmark < −1σ
Beta on that subset is computed exactly as in Section 2.5. A tail beta is published only where at least 20 tail days fall inside the window. On SPX (as measured by SPY) as of November 10, 2026, the newest 504 trading days contain 54 days beyond −1σ and only 10 beyond −2σ (the newest 252: 29 and 5) — a beta from a handful of observations is noise, which is why the threshold is one standard deviation and not two. On that date the windows holding at least 20 such days are the 2y and 1y lookbacks; shorter windows show no tail beta.
A blank tail beta means the sample cannot support an estimate, not that the security has no tail behaviour. The number of tail days behind each estimate is shown alongside it.
The measure is worth reading precisely where it disagrees with down beta. A security can track the market through ordinary declines and then gap in a real sell-off; up beta and down beta will look almost symmetric while the tail estimate is materially higher. Tail beta is a conditional historical estimate — not a stress scenario, a factor model or a forecast.
Splitting beta by the sign of the market return is not a Gyre invention. It sits in a literature on downside risk that starts from Markowitz’s observation that investors do not treat upside and downside deviation alike, and the sources below are the ones this implementation actually rests on.
Where this dashboard departs from those papers: they mostly condition on the market return relative to its mean, while the up/down split here conditions on the sign of the return (Section 2.5) and the tail estimate conditions on one standard deviation below zero (Section 2.7). The sign split is the simpler and more legible convention for a published reference table; it is not the same estimator as a lower partial moment beta, and results here should not be read as replicating those papers.
After all beta calculations complete, a built-in sanity check validates the entire pipeline end-to-end:
SPY is an ETF designed to track the S&P 500 index. Its beta against a properly constructed cap-weighted S&P 500 composite should be approximately 1.000. Any significant deviation indicates an error in:
Acceptance criteria: SPY standard beta vs. SPX Cap-Weighted must be between 0.95 and 1.05 in every lookback window. In the calculation of November 11, 2026 the values ran from 0.999 (1y) to 1.023 (2y), inside the band, with R² between 0.991 and 0.999. These figures are filled in each time this page is published; the dashboard table shows SPY’s values against every benchmark.
A small deviation from 1.0 in either direction is expected: SPY carries an expense ratio and its own dividend timing, and the composite’s weights are reset at monthly snapshots. Short windows move furthest from 1.0 because they hold the fewest days.
How the checks run: the SPY-beta check is part of the pipeline’s live test (asymmetric_beta.py --test-live), which calculates from the live data into a scratch store; the figures above are from the production run. Every day, the data step checks that each S&P 500 composite’s daily returns have a correlation above 0.95 with SPY’s, and reports a composite that fails to the operators; a composite with fewer than 5 members on a date has no return that date.
The dashboard’s Backtest section tests, against history, six claims about asymmetric beta (B1–B6 below). It runs beside the study (Section 5), which tested the two hypotheses on which a trading use would rest and rejected both. The backtest’s rules were written down and published before the first run, and every result is shown whether or not it supports the claim. It is re-run every day after the calculation.
Limits. Each company carries one sector for its whole history. The last-day move of a company that is bought out or goes bankrupt is often missing from price data. A membership change takes effect on its published effective date where the list of index changes gives one, otherwise at the snapshot date (quarter-end before 2005, month-end after). Coverage before 2000 is below 100%. Trading costs are fixed estimates. The complete pre-registered design is the analytics backtest methodology, method version 4.
The study tested two hypotheses about asymmetric beta in S&P 500 stocks: that a stock’s asymmetry lasts long enough to exploit in a long/short equity portfolio, and that short-term asymmetry reverts in a way that can be traded. Both were rejected. The tests ran in seven groups, A to G. This section says what each group did and gives the figures the study reports; the study page gives the conclusion.
Rules common to every group. The members of the S&P 500 on each day, including companies later removed, acquired or bankrupt (survivorship-free), from 1992; the beta calculation of Section 2; the index as it stood each day as the market, and SPY wherever returns are compared, so a trade is measured against beta × SPY. Each test’s rule was written down before it ran. Results are averaged across stocks and then over time, with t-statistics that allow for overlapping periods, a correction for running many tests at once, and 2021 onward reported separately as a period held back. Groups F and G were designed after group E’s results were seen, and their pass rules were made strict for that reason.
| Group | Question | What it did | Result |
|---|---|---|---|
| A | Can a single stock’s asymmetry be measured? | Rank correlation of each stock’s asymmetry with its own value one to ten years later; forecast accuracy against simple forecasts (“no asymmetry”, the sector average); better estimators; how many stocks have an asymmetry distinguishable from zero | Only about 6% of a stock’s own asymmetry carries into the next year. Forecasting “no asymmetry” predicts next year better than this year’s measured value. |
| B | How long does it last, does it close, does it come back, is it cyclical? | Month by month for three years, the gap between the most and least asymmetric fifth of the index; how often a stock stays in the top or bottom fifth from one year to the next; asymmetry in rising and falling markets, calm and volatile markets, and recessions | Reported as part of Hypothesis 1 (rejected) on the study page. |
| C | Does it matter for an investor, compared with SPY? | Next-month return in excess of SPY on asymmetry, controlling for beta, size, momentum and volatility; in every SPY decline of 10% or more, how much more the highest fifth fell than the lowest, by ordinary beta and by down-beta; the same tests on other markets, splits and windows | Asymmetry did not predict returns against SPY (+0.003% a month per standard deviation, t 0.0). In all 8 declines of 10% or more since 1999, the highest-beta stocks fell on average 24.9 percentage points more than the lowest-beta stocks; down-beta added no measurable warning beyond beta: 3.4 points, not significant. |
| D | Are today’s published numbers right? | A full rebuild of the published values from the stored inputs with the production code | All 4,032 values were reproduced exactly. |
| E | Do short-term aberrations close, and can the closing be traded? | Each month, a stock’s asymmetry over the last quarter (and separately the last month) against its own two-year norm before it, scaled by the precision of both; how fast the gap closes; buying negative and selling positive aberrations, against beta × SPY, after costs; the same signal checked against short-term reversal, beta, size and volatility | Aberrations do close quickly: 87% of a quarterly aberration is gone within one month. The trade does not pay: −0.01% a month on the quarterly signal; on the monthly signal +0.28% before costs and +0.12% after 10 basis points (not significant, t 0.9), almost all of it from 2001–2008. |
| F | Can a refinement of the trade pass? | Twelve refinements: only the clearest aberrations, the outer tenths, long-only hedged with SPY, and lower trading costs. To pass, a refinement had to earn a significant return from 2009 onward on its own, not only in 2001–2008 | None passed. Several earned money in 2001–2008, but none has since 2009. |
| G | Does the trade depend on forming it at month ends? | The same refinements formed every week instead of every month, held one week and one month, with the pass rule of group F | None passed. |
The study’s conclusion, and what we continue to publish, are on the study page.
For questions about our methodology or data sources, contact team@gyreresearch.com.