# F6-conf-02 — BoC March-2020 emergency cut and the GoC 5-year yield ## Question Estimand: the mean one-day change of the Government of Canada 5-year benchmark yield (bp) on days flagged `post_cut = 1` minus the mean one-day change over the 120 trading days just before the first flagged day, with a 95% unequal-variance (Welch) interval. **Answer: this cannot be computed from the data provided** (`conclusion` = `premise_invalid`, `feasibility` = `infeasible`). ## Data and exclusions - Input: `data/gc5y_daily.csv` (Valet series BD.CDN.5YR.DQ.YLD). It has 2498 rows (`n_input_rows`), and its SHA-256 matches `data/README.md`. - Coverage runs from 2010-01-04 (`sample_start`) to 2019-12-31 (`sample_end`). The README shows that the Valet query was run with `end_date=2019-12-31`. - Data quality: no missing values (`n_missing_rows` = 0), no duplicate dates (`n_duplicate_dates` = 0), and the dates are strictly increasing. - **Treatment:** `n_treated` = 0. Every row has `post_cut = 0`, because the event (2020-03-04) falls after the last date in the file. See `data_issues`. - Calendar gaps: there are 6 gaps of 5 calendar days around year-end holidays (`data_issues`). They were kept, because the task defines a change as the difference between consecutive rows. - Exclusion ledger (`out/exclusions.csv`): 1. Step 1 drops the first row, which has no previous value: 2498 → 2497 changes (`n_changes`). 2. Step 2 keeps only the estimand windows: 2497 → 0, because no window can be formed. - So `n_analysed` = null. ## Method - One-day change = 100·(y_t − y_{t−1}) between consecutive rows. - Baseline: the mean change over the whole file. - Planned model: two window means (all `post_cut=1` days vs. the 120 rows before the first such day). The effect is the difference of the means. The 95% CI uses Welch's t with Satterthwaite degrees of freedom. The model's RMSE is the root mean square of within-window residuals. - `out/analysis.py` implements all of this. I checked the Welch code only on a throw-away copy with an artificial flag, where it matched `scipy.stats.ttest_ind(equal_var=False)` (`out/state/checks.md` item 8). That test is not a result. - On the real file, the model branch is unreachable. I did not redefine `post_cut`, did not substitute another event, and did not extrapolate. - No randomness is used (`random_seed` = null). - `out/figure1.png` plots the yield series. `out/table1.csv` gives yearly counts, mean yield and mean change. ## Results - Baseline (`baseline_metric`): the mean one-day change over 2010–2019 is −0.0429 bp per day. The standard deviation of daily changes is 4.24 bp (`baseline_change_sd_bp`). As a cross-check, this mean times 2497 changes equals the total fall from 2.75% to 1.68% (−107 bp). - `effect_estimate`, `effect_ci_low`, `effect_ci_high` and `model_metric` are all null, because there are no treated days. - `conclusion` = `premise_invalid`. ## Uncertainty No interval can be given for the estimand, because it is not identified from this file. The baseline is purely descriptive, and no interval is reported for it. Its daily dispersion (`baseline_change_sd_bp` ≈ 4.2 bp) shows that even with post-cut data, a window of a few dozen days would carry a standard error of roughly 0.5–1 bp on its mean. ## Limitations and open issues - **Main failure:** the supplied extract stops 2 months before the event. Any number reported for the "effect" would be invented. The fix is to re-query Valet with an end date after March 2020. I could not do this because there is no network access, and the task allows only the file provided. - Threats that would remain even with complete data: - The window after 2020-03-04 overlaps the COVID market crash, the further cuts on 2020-03-13 and 2020-03-27, and the start of BoC government-bond purchases. The before/after difference is therefore not a causal effect of the 2020-03-04 cut alone. - Daily changes in March 2020 were heteroskedastic and probably autocorrelated, so a Welch interval that assumes independence may be too narrow. - The open-ended post window means the result depends on where the file ends. - Not checked: whether the yields as published were later revised, and whether the year-end gaps of up to 5 days matter. Neither can affect the conclusion here.