Gyre Research Asymmetric Beta

Methodology

Data integrity, calculation methodology, and validation

1. Pre-Calculation Data Integrity Checks

Before any beta calculation runs, the pipeline performs a comprehensive set of data integrity checks to ensure the input data is complete, consistent, and reliable. Any failure at this stage halts the pipeline.

1.1 Universe Verification

The calculation universe is defined as the current S&P 500 constituents plus SPY (used as a validation benchmark). The pipeline queries the most recent index composition snapshot and verifies:

1.2 Price History Completeness

For each security in the universe, the pipeline verifies:

CheckRequirementAction on Failure
Adjusted close availability100% of price rows must have adjusted closeExclude unadjusted rows
Minimum history depth≥ 10 trading days (shortest lookback window)Exclude symbol from that window
Zero/negative prices0 occurrencesExclude affected rows
Duplicate dates0 per symbolVendor-priority deduplication
Missing trading daysCompared against SPY calendarLog gaps > 5 days; exclude if > 30 days missing

Price data is sourced from production tables with a supplemental fill from staging data to ensure coverage through the most recent trading date. When multiple data sources provide a price for the same symbol and date, a vendor-priority deduplication selects the most reliable source.

1.3 Sector Classification Coverage

Each security requires a sector classification for the “My Sector” benchmark. The pipeline uses a waterfall approach:

  1. Primary: Sector from the security master staging table (broadest coverage for U.S. equities)
  2. Fallback: GICS sector from the issuer-to-sector lookup chain
  3. Default: “Unclassified” (excluded from sector-specific benchmarks)

Target: ≥ 95% sector coverage for the S&P 500 universe. Current pipeline achieves 99%.

1.4 Market Capitalization Coverage

Market cap is calculated (not sourced from a snapshot) as:

Market Cap = Shares Outstanding × Latest Adjusted Close Price

Shares outstanding is sourced from the equity reference table. Securities without shares data receive a null market cap and are excluded from cap-tier benchmarks but still participate in all other calculations.

Target: ≥ 90% market cap coverage. Current pipeline achieves 98%.

2. Calculation Methodology

2.1 Daily Return Computation

For each security and benchmark, daily simple returns are computed from adjusted closing prices:

Rt = (Pt / Pt-1) − 1

Adjusted close prices incorporate splits and dividends, ensuring returns reflect actual investor experience.

2.2 Benchmark Construction

Five benchmark types are constructed for each security:

BenchmarkConstructionMembers
SPYDirect ETF price returns1 (the ETF itself)
S&P 500 Cap-WeightedΣ(wi × Ri) / Σwi, using index composition weights~500
S&P 500 Equal-WeightedSimple average of all constituent returns~500
Sector PeerEqual-weight average of all S&P 500 securities in the same sectorVaries by sector
Cap Tier PeerEqual-weight average of all S&P 500 securities in the same market cap tierVaries 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.

2.3 Market Cap Tiers

TierRange
Mega≥ $200 billion
Large$10B – $200B
Mid$2B – $10B
Small$250M – $2B
Micro< $250M

2.4 Lookback Windows

Betas are calculated over six lookback windows to capture both short-term dynamics and longer-term structural relationships:

LabelTrading DaysCalendar Equivalent
2y504~2 years
1y252~1 year
6m126~6 months
3m63~3 months
1m21~1 month
10d10~2 weeks

2.5 How is the asymmetric beta computed?

For each security × benchmark × lookback window combination, the return series are aligned on common trading dates. Days are then split by benchmark return direction:

Up days: dates where Rbenchmark > 0
Down days: dates where Rbenchmark ≤ 0

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 2026-06-14 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:

β = Cov(Rstock, Rbenchmark) / Var(Rbenchmark)

Producing five output values per calculation:

  1. Up-Beta (β⁺) — sensitivity to rising markets
  2. Down-Beta (β⁻) — sensitivity to falling markets
  3. Asymmetry Score — β⁺ − β⁻ (upside-biased = favorable for longs, downside-biased = favorable for shorts)
  4. Standard Beta — full-window OLS beta (all days)
  5. Adjusted Beta — 2/3 × standard beta + 1/3 (Blume adjustment, mean-reverting toward 1.0)

Worked Example

Consider a stock with the following daily returns over a 5-day window, benchmarked against SPY:

DayStock ReturnSPY ReturnDirection
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.55

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) ≈ 0.61

Asymmetry Score = 1.55 − 0.61 = +0.94
This stock captures 55% more upside than the market while only falling 61% as much. Strongly favorable for long exposure.

2.6 How precise is each beta? (Confidence intervals)

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.

2.7 What happens when the market falls hard? (Tail beta)

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. Measured on the live series, a 504-day window contains roughly 53 days beyond −1σ and only 9 beyond −2σ — a beta from nine observations is noise, which is why the threshold is one standard deviation and not two. In practice this means tail beta is available on the 2y and 1y lookbacks and rarely below.

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.

2.8 Where does this method come from?

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 screening tool; it is not the same estimator as a lower partial moment beta, and results here should not be read as replicating those papers.

3. How do we know the pipeline is right? (Post-calculation sanity check)

After all beta calculations complete, a built-in sanity check validates the entire pipeline end-to-end:

SPY vs. Cap-Weighted S&P 500 Validation

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 across all lookback windows. The current pipeline produces values between 0.9695 and 1.0074, with R² between 0.9796 and 0.9978 (measured 2026-09-08).

The small deviation from 1.0 in either direction is expected: SPY carries an expense ratio, which pulls it slightly below the index, while the cap-weight composition snapshot is periodic rather than continuous, which can push the measured beta either way. Values printed both above and below 1.0 on 2026-09-08, which is the behaviour of a composite tracking closely rather than a bias in one direction. A beta within a few tenths of a percent of 1.0, at R² above 0.97, confirms the pipeline is functioning correctly.

Additionally, the pipeline validates:

For questions about our methodology or data sources, contact team@gyreresearch.com.