# F6-conf-02 — BoC March-2020 emergency cut and the GoC 5-year yield ## Question How did the average one-day change in the GoC 5-year benchmark yield (bp) on `post_cut = 1` days compare with the average over the 120 trading days just before the first flagged day? The interval is a 95% Welch (unequal-variance) interval. ## Data and exclusions The only input is `data/gc5y_daily.csv` (Valet BD.CDN.5YR.DQ.YLD). It has 2498 rows (`n_input_rows`) running from `sample_start` = 2010-01-04 to `sample_end` = 2019-12-31. The SHA-256 matches the README. There are no missing values and no duplicate dates. The dates are strictly increasing. The audit's key finding: **`n_treated` = 0**. No row has `post_cut = 1`, because the file ends before 2020-03-04. The README's retrieval URL uses `end_date=2019-12-31`. The flag itself is consistent with its stated definition; the treated period simply isn't in the file. This is recorded in `data_issues`. The only exclusion was the first row, which has no previous row to difference against. That leaves 2497 one-day changes (`out/exclusions.csv`). ## Method The planned method was: - the difference between the post-cut mean change and the pre-window mean change; - a Welch standard error with Welch–Satterthwaite degrees of freedom for the 95% interval; - `model_metric` as the RMSE of the two-window mean model. This logic is implemented in `out/analysis.py`. It runs only when treated rows exist. With zero treated rows the post-cut mean is undefined, so the script returns `conclusion` = `premise_invalid`. As TASK.md requires, it doesn't swap in a proxy, such as a different event date or a redefined flag. No randomness is used (`random_seed` = null). ## Results - `baseline_metric`: the mean one-day change over the whole file is −0.043 bp. - `effect_estimate`, `effect_ci_low`, `effect_ci_high`, `model_metric` and `n_analysed` are all null because they cannot be estimated. - `conclusion` = `premise_invalid`; `feasibility` = `infeasible` (see `feasibility_reason`). - `out/table1.csv` gives yearly counts, mean yield and mean change for 2010–2019. - `out/figure1.png` plots the yield over the file's sample. ## Uncertainty No interval can be reported because the effect isn't defined for this file (`effect_ci_low` and `effect_ci_high` are null). The baseline is descriptive only, and no uncertainty is attached to it. ## Limitations and open issues - **Main failure:** the data don't cover the event. Any number reported as "the effect" would be invented. To answer the question, the series needs to be re-retrieved with an end date after March 2020, for example through at least mid-2020. - **Threats if data were available:** - The post window is open-ended, so it mixes the March 4, 16 and 27 cuts, QE (the GoC bond purchase programme), and global COVID-19 market stress. The difference in means can't be read as the causal effect of the March 4 cut. - Daily changes are heteroskedastic and possibly autocorrelated, especially in March 2020. A Welch interval ignores autocorrelation. - The 120-day pre-window is an arbitrary benchmark. - **Not checked:** - whether Valet revised past values; - the multi-day gaps across holidays, where changes span more than one business day.