SPB Git

Repository Public Research preview

DESIGN_REVIEW.md 24.9 KB 308 lines markdown

1# WP47: Referee review of the pre-registered design (before computation)23**Reviewer role:** econometric referee (JFE/JFEC standard) · **Date:** 2026-11-09 · **Object:** `docs/DESIGN.md` (frozen plan),4`docs/literature_search.md`, `src/wp47/ns.py`, `scripts/02_daily_factors.py`, `results/metrics/daily_factors_*.{csv,json}`.5No intraday result exists and none was inspected. Numbers marked **[R]** were computed for this review from the existing daily-factor6files and the FRED/GSW inputs already in `data/external/` (OLS on daily data, a few seconds of work). They are diagnostics for the7design, not paper results. Everything else is quoted from `daily_factors_summary.json` or is an order-of-magnitude argument, labelled as such.89Sign convention (state it in DESIGN §3.1): the slope loading equals 1 at τ→0, so β2 ≈ short minus long (mean −1.99 pp). The10summary key `corr_slope_vs_spread10y3m` actually uses 3m−10y. With this convention, a parallel rise with a pinned short end11gives ΔL>0 and ΔS<0. That is why the correlation is negative.1213---1415## 1. The three most serious threats1617### Threat 1: The daily target is largely not spanned by the futures (front end, ZLB collinearity). H1 as written is probably infeasible for slope.1819For fixed λ and a fixed maturity set, the NS factors are an exact linear map of the 11 CMT yields: Δβ_t = A Δy_t with20A = (X'X)⁻¹X'. Slope and curvature put large weights on 1m/3m/6m/1y. No futures root spans those maturities, and ZT (≈2y) is21the shortest. Evidence:2223- Cash-yield spanning ceiling **[R]**. Regress daily CMT factor changes (2008–2026) on the daily changes of the *cash* 2/5/10/30y24  CMT yields, i.e. the maturities the futures proxy, measured without basis or CTD error. In-sample R² = **0.983 (level), 0.73725  (slope), 0.755 (curvature)**. The 1m/3m/6m changes alone give curvature R² = 0.31. H1 asks for an *out-of-sample* slope R² ≥ 0.9026  from futures. That target sits well above what even perfect cash yields at those maturities deliver. H1 will probably fail on27  slope, and §7's re-scoping threshold (0.6) will probably not trigger. The design ends up in a grey zone it never planned for.28- CMT vs GSW. corr(ΔS) = 0.79 and corr(ΔC) = 0.70 (summary). Regressing ΔS_CMT on all three ΔGSW factors gives R² = 0.79 **[R]**.29  GSW is fitted to off-the-run coupons with maturities beyond about 1 year. The disagreement is therefore mostly the bill segment,30  which is exactly what futures cannot see.31- ZLB collinearity **[R]**. corr(ΔL, ΔS) by regime: 2008–09 −0.59; **2010–15 −0.974**; 2016–19 −0.87; 2020–21 −0.91; 2022–26 −0.82.32  In 2010–15, sd(ΔL+ΔS) = 1.6 bp while sd(ΔL) = 6.4 and sd(ΔS) = 6.8 bp. The instantaneous short rate β1+β2 is pinned, so ΔS ≈ −ΔL.33  The level and slope mimicking portfolios are then two copies of one portfolio with opposite signs. Their separate identification34  rests on the residual variance of β1+β2, which is about 6% of the variance of ΔL in the ZLB and is unspanned by construction.35  The −0.82 full-sample correlation is mostly this mechanical regime effect, not an economic finding (relevant for H4).36- Curvature is driven by bill episodes **[R]**. The largest |ΔC| days are 2023-05-04 (195 bp), 2023-03-13 (174 bp), 2008-03-18,37  2023-04-25, 2023-03-21 and 2008-03-25. These are debt-ceiling, SVB and Bear Stearns bill dislocations. The curvature change SD38  is 23 bp in 2022–26 against about 10 bp in 2010–21. A futures-based curvature cannot reproduce these days, and squared-error39  metrics will be dominated by them.4041**Decisive diagnostic (no new data).** Split each daily factor change into a bill component (A columns for 1m–1y) and a coupon42component (2–30y). Report each component's variance share and the R² of each component on futures returns, by regime. The coupon43share is the attainable ceiling for H1.4445**Design fix (choose ex ante).** (a) Make the primary target an NS fit on the coupon segment the futures span: CMT 2–30y, or GSW46zero yields 1–30y. Keep the 11-maturity CMT fit as a secondary target, with its spanning ceiling reported. (b) Report the short47rate y(0) = β1+β2 as an explicitly *unspanned* quantity. Alternatively, if FinData OS carries them, add a short-rate root (SR348SOFR futures from 2018, GE Eurodollar to 2023, ZQ fed funds) and pre-register its use. (c) Re-state the H1 thresholds relative to49the measured ceiling, e.g. OOS R² ≥ 0.9 × ceiling, rather than as absolute numbers.5051### Threat 2: H1 does not validate the *intraday* series; it is a daily test in disguise. OOS coverage also has holes.5253Log returns telescope. For each contract, the sum of within-session minute returns from 15:30 on t−1 to 15:30 on t equals the54daily return, minus the returns dropped at the maintenance break, at splices and at gaps over 5 minutes. Hence55Σ_m Ŵ r_{t,m} ≡ Ŵ r_t minus the dropped segments. The "cumulated intraday" R² in H1 equals the OOS R² of the daily regression56plus an accounting error. It says nothing about whether minute-level factor changes are correctly measured: timing, noise,57staleness, or the stability of the NS structure within the day. The H1 slope criterion in [0.9, 1.1] is likewise a daily58weight-stability check.5960OOS coverage problems in DESIGN §2–§3.2:61- UB starts in 2010-01, so K = 4 (ZT, ZF, ZN, US) in 2008–09, not 5.62- With a 3-year (≥500-day) trailing window re-estimated quarterly, the first OOS quarter is about 2010Q1–2011Q1. The 2008–0963  "crisis" sub-period, which H1 itself mentions, has no OOS weights.64- K = 6 weights including TN are only OOS from about 2018Q1–2019Q1, not 2016.65- H5 says weights are "re-estimated monthly", which contradicts §3.2 (quarterly).6667**Decisive diagnostics/fixes.**681. Demote the telescoping check to an accounting table: the share of daily return variance in dropped segments, per contract and69   year. It should be a few percent. Report H1 as *daily spanning*.702. Add a genuine intraday validation, pre-registered:71   - (i) Leave-one-contract-out. Build the factors from 5 roots, convert them to the implied yield change at the held-out root's72     CTD maturity via the NS loadings, and predict the held-out minute (and 5-minute) return. Report R² by session (Asia, Europe,73     US) and by event window. This tests the 3-factor NS structure at high frequency.74   - (ii) An independent instrument. Treasury ETFs on FinData (SHY/IEI/IEF/TLH/TLT; SHV/BIL for the front end, if present). Build75     ETF-based factors the same way and correlate 5- and 30-minute factor changes over 09:30–16:00 ET.76   - (iii) External FOMC benchmark. Correlate the 30-minute FOMC-window level and slope changes with a publicly posted77     high-frequency surprise series (e.g. Bauer–Swanson 2023 / Swanson 2021 data files), documented in `data/external/`.783. State the effective OOS start per K. For 2008–09, either use an expanding window from 2007 (FRED CMT starts in 2007 in the79   current files) and flag that the window is short, or label 2008–09 results as in-sample.8081### Threat 3: Microstructure noise and shared-contract noise mechanically generate H3/H4 patterns and bias H2 denominators.8283Order of magnitude (current tick sizes; verify historical tick changes from CME notices). One tick in yield terms is about84tick value / DV01:85- ZT: $7.81 on a DV01 of roughly $3886- ZF: $7.81 on roughly $4387- ZN: $15.63 on roughly $6588- TN: $15.63 on roughly $8589- US: $31.25 on roughly $15090- UB: $31.25 on roughly $2209192That is ≈ **0.15–0.25 bp of yield per tick**. If daily level variance (sd 6.17 bp) were spread evenly over 1 380 minutes, the93efficient per-minute SD would be about 0.17 bp, and it is far smaller in the Asian session. Trade-based bars therefore carry94bid–ask bounce of the same order as the signal at 1 minute, and larger than the signal overnight.9596The mimicking portfolios make this worse:97- Collinear futures with a nearly mirror-image level/slope pair (Threat 1) produce large long–short weights. The noise variance98  of a factor is w'Ωw, with Ω the diagonal noise covariance, and grows with ‖w‖².99- Level and slope are built from the *same* contracts, so noise induces a mechanical covariance w_L'Ω w_S. That term is100  negative if the weights on a shared contract have opposite signs, which is likely here. H4's "negative at 1 minute, less101  negative at 5/30 minutes" can be produced by noise alone, independent of any Epps effect.102- The 08:30 and 14:00 spikes in H3 are robust, but the "minimum in the Asian session" and the curvature/level concentration ratio103  are sensitive to how stale minutes are treated. DESIGN §2 is internally inconsistent here. Missing minutes "carry a zero return",104  yet a minute "enters only if all roots trade". Dropping minutes loses the accumulated return. Carrying zeros and then releasing105  the accumulated move creates artificial spikes in thinly traded TN and UB overnight.106- H2 denominators (the yield day's RV over about 1 380 one-minute returns) accumulate noise linearly in the number of returns.107  This biases event-window variance shares downward, most for the factor with the largest ‖w‖, likely curvature or slope. The108  H2 ordering is therefore partly an artifact.109110**Decisive diagnostics/fixes.**1111. Volatility-signature plots of RV^{(k)} at 1–60 minutes, per factor, regime and session.1122. Estimate the noise covariance from first-order autocovariances (Roll-type), or with a multivariate realized kernel or113   pre-averaging on the 6×6 futures covariance using refresh-time sampling. Then compute factor (co)variances as Ŵ Σ̂ Ŵ'. This is114   valid because each factor is a fixed linear combination.1153. Make 5-minute previous-tick, refresh-time sampling the primary frequency, with 1-minute as a robustness check. Use 15-minute116   sampling in the Asian session for H3.1174. Report the noise-implied correlation w_L'Ω̂ w_S / sqrt(…) next to the H4 estimates. H4 only counts if the noise-robust118   correlation shows the pattern.119120---121122## 2. Econometric issues (point by point)1231241. **Measurement error in daily factors (CMT vs GSW).**125   - Error in the *dependent* variable does not bias w, but it caps R². Error-in-variables does arise on the regressor side126     (futures basis, timing; see 5–6).127   - CMT are bid-side, on-the-run par yields interpolated by Treasury. The method changed in Dec 2021 (to monotone convex), a128     structural break to test in the weights. They are read "near 3:30 pm".129   - GSW are off-the-run zero yields with essentially no sub-1y information.130   - Daily factor changes show no serial correlation **[R]** (AR(1) of ΔL, ΔS, ΔC: −0.02, 0.05, 0.00 for CMT; similar for GSW).131     Pure fitting noise in levels would make changes negatively autocorrelated. The CMT–GSW gap is therefore mostly a *different132     object* (front end, par vs zero, on- vs off-the-run), not transient noise.133   - Run H1–H2 on both targets and state which is primary. The ex-ante case for GSW (or CMT 2–30y) is that it matches the134     futures' maturity domain.135   - Report λ̂ = 0.49 (RMSE 9.4 vs 12.0 bp) as a robustness check. Daily-change moments barely move with λ̂ (ΔS sd 6.99 vs 7.27;136     corr(ΔL, ΔS) −0.83 vs −0.82 **[R]**), so λ is not first order. Do not estimate λ on 2008–2026 if it feeds OOS weights; that137     is look-ahead.1381392. **Level/slope separation (corr −0.82; −0.97 in the ZLB).**140   - Report the condition number of the futures return covariance and the Var(β1+β2)/Var(β1) ratio per window.141   - Report weight paths with confidence bands, and the correlation between the fitted level and slope portfolios.142   - A cleaner parameterisation for interpretation is (short rate y(0) = β1+β2, level β1, curvature β3), or results stated in143     yield space (implied 2/5/10/30y minute changes), with NS factors as a summary.144   - In the ZLB, H2/H4 statements that compare "level" and "slope" are not separately identified. Pre-specify that ZLB results145     are reported for the coupon-segment factors only.1461473. **Short-end maturities (1m–6m) stretching the fit.**148   - Fit RMSE by maturity **[R]**: 1m 15.0, 3m 5.1, 6m 11.2, 1y 15.0, 2y 9.3, 5y 13.9, 10y 10.5, 30y 14.4 bp. The fit is poor at149     both ends and at 5–7y, and the bills pull slope and curvature.150   - Daily residual-change SDs are largest at the bills (2.9, 2.3, 2.0 bp) **[R]**.151   - Fix: as in Threat 1, a coupon-segment primary fit. A Svensson or second-curvature extension is not needed for this purpose.1521534. **Futures basis, CTD, roll.**154   - (a) Duration drift. Price returns ≈ −D_CTD·Δy, and D_CTD varies with the yield level. Long contracts move materially between155     0.5% and 5% yields, and a 3-year window spans regimes. The "structural inversion" alternative should become a co-primary156     construction: minute yield changes at 6 points via CTD duration, then a 3-parameter NS fit to those 6 points with fixed λ.157     That is transparent, has no estimated weights, and is less sensitive to collinearity.158   - (b) Basis dislocations. March 2020 (about 9–20 Mar, the basis-trade unwind) is a known episode in which futures and cash159     diverged. Pre-register it as an expected failure window and report fidelity with and without it.160   - (c) Roll rule. A "raw splice" at expiry leaves the series on the illiquid expiring contract after first notice. Check the161     v132 splice rule against volume and open interest. If it splices at expiry, switch to a volume-based roll, or drop minutes162     between first notice and the splice.163   - (d) Contract changes (TN launch 2016; UB basket) are breaks in w. Do not let the window straddle them without a dummy.164   - (e) Daily returns used to estimate w must be same-contract returns on roll days. The ratio-adjusted daily series gives this,165     but timestamps must be 15:30, not settlement.1661675. **Timing.**168   - Treasury futures settle at 15:00 ET (14:00 CT), while CMT is read "near 15:30".169   - Sample futures at exactly 15:30 ET. Pre-register a sensitivity check at 15:00 and 16:00, and do not choose the timestamp by170     OOS fit.171   - Define yield days across holidays where CME trades but the cash market is closed or closes early (SIFMA early closes).172   - Use the CME session clock (CT) with a DST-consistent ET mapping, and condition H3 on US/Europe DST-mismatch weeks.1731746. **1-minute microstructure.** See Threat 3. Also:175   - Bars are open-to-open from trades. A minute's "open" is the first trade in the minute, so minutes are not synchronised176     across contracts.177   - Epps attenuation is therefore partly a bar-construction artifact. Previous-tick at the minute boundary (bar close) is178     preferable.1791807. **Stale prices in the Asian session.**181   - Requiring all roots to trade biases the sample toward active minutes.182   - For H3, use per-contract refresh-time 5/15-minute returns and report the share of minutes with any missing root, by hour183     and year.184   - Estimate periodicity with a robust FFF or WSD estimator (Boudt–Croux–Laurent 2011) on volatility-standardised returns.185     Otherwise the 08:30 and 14:00 jump days dominate the profile.1861878. **OOS protocol.**188   - Freeze now: window length, re-estimation frequency, K per period, timestamp, roll rule, λ (Diebold–Li fixed for the189     primary), target (Threat 1), and the definition of OOS R². State whether it is 1 − SSE/Σ(Δβ − mean_train)² or relative to190     zero; prefer the latter given near-zero means.191   - Report the OOS R² series per quarter, and the expanding-window and full-sample variants as bounds only.192   - Event days may stay in training windows, since they are prior to the forecast quarter.1931949. **Multiple testing.**195   - Rough count: H1 3 factors × 2 criteria × 6 periods ≈ 36; H2 3 events × 3 factors × (ordering + 10× + regime contrast)196     ≈ 30+; H3 ≈ 6; H4 3 frequencies × 2 regimes ≈ 6–9; H5 3 factors × 3 horizons × 2 losses × 2 benchmarks = 36.197   - Pre-specify one primary test per hypothesis, e.g.:198     - H1: OOS R² on the primary target, full OOS sample.199     - H2: FOMC slope-share excess over a matched-clock baseline.200     - H4: noise-robust 5-minute level–slope correlation, ZLB vs 2022–26.201     - H5: HAR vs best benchmark for level, h = 1, QLIKE.202   - Apply Holm within each hypothesis family to the secondary tests. Use Romano–Wolf or Hansen–Lunde–Nason MCS for H5.20320410. **Inference for variance shares.**205    - "Daily-block bootstrap" is not meaningful for non-contiguous event days. Resample *events* i.i.d., stratified by regime and206      meeting type (press conference or not). This gives about 150 scheduled FOMC statements and about 225 each of CPI and207      Employment over 2008–2026, but only about 48 FOMC in 2010–15.208    - Use the ratio of sums as the headline and the median per-event share as robustness. Shares are heavy-tailed and bounded.209    - Test the ordering with *paired* bootstrap differences within events.210    - Replace "≥10× 30/1380" with an excess over the same clock window on matched non-event days (same weekday, no other211      tier-1 release), tested by permutation over placebo dates. The 14:00–14:30 and 08:30–09:00 baselines are not 2.2%.212    - Denominators must be noise-robust (Threat 3).213    - Window: since 2011, and at every meeting since 2019, the press conference starts at 14:30. [−5, +25] cuts it off. Also214      report [−10, +20] (GSS) and a wide [−15, +105] window. Use per-meeting statement times (14:15 in 2008–2012; unscheduled215      actions: Oct 2008, Mar 2020).216    - CPI and Employment releases at 08:30 coincide with claims and other releases. Flag and drop overlap days in robustness.21721811. **H5 specifics.**219    - Evaluating against RV from the same intraday data hands the result to HAR. Use two targets: noise-robust RV, and the squared220      daily CMT factor change. Both are admissible under Patton (2011) for MSE/QLIKE.221    - Compare with HAR on the realized futures covariance rotated by Ŵ, and with HAR on single-contract RV (e.g. ZN). Otherwise the222      NS rotation adds nothing testable.223    - Use Giacomini–White, since models are re-estimated on rolling windows. For overlapping h = 22, use HAC with ≥ h−1 lags.224    - Power is limited (about 115 non-overlapping 22-day blocks in 2016–2026).22522612. **Language.** Event windows identify the variance realised at release times, not the "effect of monetary policy on slope".227    Without surprise measures, keep the language descriptive. Rigobon–Sack heteroskedasticity-based statements are possible if228    the matched-day baseline is in place.229230---231232## 3. Novelty: what a sceptical JFE/JFEC referee will say, and how to position233234**The sceptic's case.**235- "Your intraday factors are three *fixed* linear combinations of six futures returns. Every object in H2–H5 is Ŵ Σ_t Ŵ', i.e. a236  rotation of the realized covariance of Treasury futures, with the NS label supplied by a daily regression."237- ABDV (2007) already study announcement responses of bond futures at 5-minute frequency with real-time expectations, across238  asset classes.239- Fleming–Remolona (1999, "The term structure of announcement effects") and Balduzzi–Elton–Green (2001) already measured intraday240  responses across the 3m–30y cash curve on GovPX. "Which part of the curve moves at 08:30" is known at the maturity level.241- GSS (2005) and Swanson (2021) extract target, path and LSAP factors from FOMC-window moves across maturities. Their factors are242  identified economic rotations (with surprise content). An NS rotation is statistically arbitrary and has no expectations measure.243- Hansen (2023, JFEC) already links high-frequency yield covariation to curve dynamics. Intraday periodicity in T-bond futures goes244  back to Bollerslev–Cai–Song (2000, JEmpFin).245- "The novelty is the label."246247**How to answer it.** Three things can make this more than a label:2481. **Spanning bounds as a result.** Measure precisely which part of daily NS variation is tradable/spanned by futures, by regime.249   The coupon segment is nearly fully spanned; the bill segment, y(0) and much of curvature are not; the ZLB collapses the curve to250   effectively one spanned dimension. None of the papers above quantify this for NS factors, and it disciplines every251   high-frequency curve study that uses futures.2522. **A validated 23-hour factor series** (with the intraday validation of Threat 2), released as aggregates.2533. **A variance accounting of the yield curve by clock time and event over 2008–2026**: what share of daily level/slope/curvature254   variance arrives in FOMC/CPI/NFP windows, in US vs European vs Asian hours, and how that changed from ZLB to 2022–26. This is255   the piece ABDV and Fleming–Remolona cannot deliver: a single contract or maturity, a short sample, no factor decomposition, no256   overnight session.257258Recommended positioning: a JFEC measurement paper with an economic variance-decomposition result. Drop "forecasting" as a headline259contribution unless the rotated-covariance comparison (2.11) shows a gain. Add an explicit mapping (regression) of the260FOMC-window NS factor changes on the Swanson/GSS factors. That shows what NS adds or loses relative to the identified rotation,261and pre-empts the "arbitrary rotation" objection.262263---264265## 4. Ranked changes to DESIGN.md (keep / modify / add)2662671. **MODIFY §3.1/§4-H1:** make the primary target an NS fit on the futures-spanned coupon segment (CMT 2–30y or GSW 1–30y), with268   the 11-maturity CMT fit secondary and its measured spanning ceiling reported.2692. **MODIFY H1:** state thresholds relative to the cash-yield spanning ceiling (in-sample about 0.98/0.74/0.76 on the 11-maturity270   CMT target **[R]**), and relabel H1 as *daily spanning*, since the intraday-sum test is an identity up to dropped segments.2713. **ADD §3.4 intraday validation (pre-registered):** leave-one-contract-out minute/5-minute prediction, an ETF-based independent272   construction, and a correlation with published FOMC surprise factors.2734. **ADD §3.1:** an exact bill vs coupon decomposition Δβ = A_bill Δy_bill + A_coup Δy_coup, with y(0) = β1+β2 reported as an274   unspanned quantity (or spanned by SR3/GE/ZQ if available in FinData OS).2755. **MODIFY §3.3/§5:** make 5-minute refresh-time previous-tick sampling primary, compute factor (co)variances as Ŵ Σ̂ Ŵ' with a276   noise-robust multivariate estimator, and keep 1-minute as robustness with signature plots.2776. **ADD H4 guard:** report the noise-implied level–slope correlation and accept H4 only if the noise-robust estimate shows the278   pattern, with ZLB results restricted to coupon-segment factors.2797. **MODIFY §2:** resolve the missing-minute contradiction (previous-tick price on the grid, no zero-return carrying, no dropped280   accumulated returns) and report the dropped-segment variance share.2818. **MODIFY §3.2:** promote the CTD-duration structural inversion (6-point NS fit each interval) to co-primary, with weight282   condition numbers and paths reported.2839. **MODIFY §2/§3.2:** correct K (4 in 2008–09, 5 in 2010–15, 6 from 2016) and state the effective OOS start per K (about284   2011Q1 for K = 5 with 3-year windows; about 2019Q1 for K = 6), or adopt an explicit expanding/short-window rule for 2008–10.28510. **MODIFY H5:** align re-estimation frequency with §3.2, add the squared daily CMT factor change as a second target, add286    rotated-futures-covariance HAR and single-contract HAR as benchmarks, and use Giacomini–White and MCS.28711. **MODIFY H2:** replace the 10× uniform benchmark with an excess over a matched-clock non-event baseline (permutation test),288    and test the ordering by a paired event bootstrap.28912. **MODIFY §5:** replace the daily-block bootstrap for event shares with an event-level stratified bootstrap, and report ratio of290    sums plus median per-event shares.29113. **ADD event windows:** per-meeting statement times, [−10, +20] and [−15, +105] windows for press-conference meetings, and292    unscheduled actions flagged.29314. **ADD §5 multiple testing:** one primary test per hypothesis, Holm within families, Romano–Wolf/MCS for H5.29415. **ADD §2 robustness:** pre-register March 2020 (basis unwind) and the 2023 bill episodes (SVB, debt ceiling) as expected295    failure windows, reported with and without.29616. **ADD §2:** check the v132 splice rule against volume/first notice, and switch to a volume roll if it splices at expiry.29717. **MODIFY §2 timing:** fix the 15:30 ET snapshot, with 15:00/16:00 sensitivity not used for selection, plus explicit holiday,298    early-close and DST rules.29918. **MODIFY §3.1:** keep λ = 0.7308 fixed for the primary; use λ̂ only as robustness, estimated within training windows to avoid300    look-ahead.30119. **ADD §1 positioning:** spanning bounds plus clock/event variance accounting as the headline, an explicit NS-to-Swanson302    factor mapping, and descriptive (non-causal) language for event windows.30320. **ADD H3:** use robust periodicity estimation (WSD/FFF on standardised returns), 15-minute sampling overnight, and a304    DST-mismatch control.30521. **KEEP:** strictly prior rolling weights, the GSW robustness target, the sub-period scheme, two-sided 5% tests, and §7's306    falsification logic (with thresholds updated per item 2).30722. **MODIFY §3.1 text:** state the slope sign convention (β2 ≈ short − long) and rename `corr_slope_vs_spread10y3m` to reflect 3m−10y.308
Files main
Menu

Theme