Generated:
Universe: 136 assets · 6 classes · 169K pairwise signals
Top Bullish Joint Signals (size 2)
Top Bearish Joint Signals (size 2)
Joint CPE vs Predictor Set Size
Most Frequent Predictors in Joint Sets (size 2)
Pairwise CPE Explorer
YY ClassXX ClassDirτ_pastτ_futureq_Xq_YCPELiftn
CPE Heatmap — Y × X
CPE vs τ_future Curves
Joint CPE Signal Browser
YClassDirτ_fq_Yn_predJoint CPEn_jointPredictor Set
Joint CPE Distribution — Bullish
Joint CPE Distribution — Bearish
Signal Network — Top Pairwise Links
Framework Overview

This dashboard presents a purely descriptive empirical analysis of historical joint tail behaviour across a universe of 136 financial assets spanning equities, crypto, fixed income, commodities, FX, and volatility indices. No parametric model is fitted; all quantities are computed directly from the empirical distribution of observed price increments over overlapping windows. The analysis makes no out-of-sample predictions — it characterises what has historically co-occurred in the data.

Notation

Symbols used throughout the framework. Note that qY applies uniformly to all 136 predicted assets regardless of asset class — it is a quantile of that asset's own empirical increment distribution, not a fixed price level.

SymbolDefinition
YPredicted asset. Any of the 136 price-based assets (equities, crypto, commodities, fixed income ETFs, FX). Volatility and yield indices are excluded from Y.
XPredictor asset. Any of the 158 assets including all Y candidates plus VIX-family and Treasury yield indices.
τpastLook-back window in trading days over which X's past increment is computed. Grid: {1, 5, 10, 21, 63, 126, 252, 300}. Different X predictors in a joint set may have different τpast values.
τfutureForward window in trading days over which Y's future increment is computed. Same grid as τpast but chosen independently.
qXQuantile threshold for the conditioning event on X. Defines the tail of X's own empirical increment distribution that must be exceeded. Grid: {0.50, 0.60, 0.70, 0.75, 0.80, 0.90, 0.95, 0.99}.
qYQuantile threshold for the exceedance event on Y. Defines what counts as a large move in Y's own future increment distribution. Applies equally to all 136 Y assets. Same grid as qX.
rq(·)Empirical q-th quantile of the full-sample increment distribution for a given (asset, τ) pair. Estimated once from all available history.
nNumber of historical overlapping windows in which the conditioning event on X was satisfied. Minimum enforced: n ≥ 100 for both pairwise and joint CPE.
LiftCPE / (1 − qY). Amplification of exceedance probability over the unconditional base rate. Minimum enforced: Lift ≥ 1.5.

How the τ-day increment is defined for each asset class, and whether that class is used as a predicted variable Y:

Asset ClassIncrement Δ(τ)Used as Y?Notes
equitiesln(Pt / Pt−τ)✓ YesAdjusted close (split & dividend adjusted)
cryptoln(Pt / Pt−τ)✓ YesUSD spot prices and ETF adjusted close
commoditiesln(Pt / Pt−τ)✓ YesETF adjusted close; futures use front-month contract price
rates (ETFs)ln(Pt / Pt−τ)✓ YesPrice-based ETFs only (SHY, IEF, TLT, HYG etc.)
fxln(Pt / Pt−τ)✓ YesUSD per unit of foreign currency (Yahoo Finance mid-price)
vol indicesPt − Pt−τ✗ X only^VIX, ^VXN, ^OVX, ^GVZ, ^EVZ, ^VVIX, ^SKEW — not price series; level changes used
yield indicesPt − Pt−τ✗ X only^TNX, ^TYX, ^FVX, ^IRX — yield levels in %; level changes used
Pairwise CPE — Definition

For predicted asset Y, predictor X, look-back window τp, forward window τf, and quantile thresholds qX, qY, the pairwise Conditional Probability of Exceedance (CPE) is:

CPE(Y, X, τp, τf, qX, qY)  =  P(Δf)Yt > rqY(Y)  |  Δp)Xt > rqX(X))

where the increments are:

  • Δ(τ)Yt = ln(PYt+τ / PYt) — τ-day log return of Y from t (forward-looking)
  • Δ(τ)Xt = ln(PXt / PXt−τ) — τ-day log return of X ending at t (backward-looking)

For the bearish direction, both inequalities are reversed (lower tail conditioning predicts lower tail outcome):

CPEbear  =  P(Δf)Yt < r1−qY(Y)  |  Δp)Xt < r1−qX(X))

The empirical estimator counts co-exceedance events over all overlapping windows:

CPÊ  =  |{t : Δp)Xt > rqX(X)  ∧  Δf)Yt > rqY(Y)}|  /  |{t : Δp)Xt > rqX(X)}|

Overlapping windows are used throughout. Each calendar date t constitutes one observation regardless of window overlap with adjacent dates, maximising the number of conditioning events especially at large τ values.

Lift — Amplification over Base Rate

Lift measures how much the conditioning event amplifies the exceedance probability relative to its unconditional value:

Lift  =  CPÊ / P(Δf)Yt > rqY(Y))  =  CPÊ / (1 − qY)
  • Lift = 1.0 — conditioning provides no information; CPE equals base rate
  • Lift = 1.5 — conditioning increases exceedance probability by 50%
  • Lift = 2.0 — conditioning doubles the exceedance probability

All signals satisfy CPE ≥ 0.80, Lift ≥ 1.5, and n ≥ 100.

Joint CPE — Definition

Joint CPE generalises pairwise CPE to a set of K predictors {X1, …, XK}, each with their own look-back window τp,k and quantile threshold qXk:

CPEjoint  =  P(Δf)Yt > rqY(Y)  |  ⋂k=1Kp,k)Xk,t > rqXk(Xk)})

The joint conditioning event is the intersection of all K individual conditioning events — all predictors must simultaneously exceed their respective thresholds. Different predictors may have different look-back windows.

Greedy predictor selection: Starting from the single predictor with the highest pairwise CPE, at each step the predictor is added that maximises joint CPE while maintaining njoint ≥ 100 and Lift ≥ 1.5. Each ticker appears at most once (deduplication enforced). The algorithm terminates when no further predictor can be added satisfying the constraints, or when K = Kmax = 10.

Statistical discipline: The minimum joint conditioning sample size njoint ≥ 100 is enforced at all set sizes identically to the pairwise minimum and is never relaxed for larger K. If no predictor can be added while maintaining njoint ≥ 100, the algorithm stops. This ensures all reported joint CPE values have genuine statistical support.

Parameter Grid
τ valueCalendar interpretation
11 trading day
51 calendar week
102 calendar weeks
21~1 calendar month
63~1 fiscal quarter
126~6 calendar months
252~1 calendar year
300~15 calendar months
q valueUpper tail probabilityApprox. frequency
0.5050%~126 days/year
0.6040%~101 days/year
0.7030%~76 days/year
0.7525%~63 days/year
0.8020%~50 days/year
0.9010%~25 days/year
0.955%~13 days/year
0.991%~2–3 days/year
Data Universe & Sources

All price data sourced from Yahoo Finance via the yfinance Python library. Adjusted closing prices are used for all equity and commodity ETFs (split- and dividend-adjusted). Futures series use front-month contracts. FX rates are mid-price quotes.

The following assets are excluded from the predicted set (Y) to avoid mechanically implied signals:

  • Leveraged/inverse ETFs: SSO, SDS, TQQQ, TMF, TBT, TBF, UVXY, SVXY, VIXY, VIXM, VXX — returns are deterministic functions of their underlying assets
  • Managed/pegged currencies: THBUSD=X, CNYUSD=X, KRWUSD=X — heavy central bank intervention compresses increment distributions, generating spurious quantile exceedances

VIX-family and Treasury yield indices are included as predictors only, using level changes (not log returns).

Quantile thresholds rq are estimated using the full historical sample for each (asset, τ) pair. This is appropriate for a purely descriptive analysis — no out-of-sample forecasting is claimed.