F6-conf-02 — BoC March-2020 emergency cuts and the GoC 5-year yield
Question
The question is whether the mean one-day change in the Government of Canada 5-year benchmark yield (bp) differs between two windows: the trading days flagged post_cut = 1 (on or after 2020-03-04), and the 120 trading days before the first flagged day. The estimand comes with a 95% Welch (unequal-variance) interval. Result: the estimand cannot be computed from the data provided (conclusion = premise_invalid, feasibility = infeasible).
Data and exclusions
data/gc5y_daily.csvcontains 2498 rows (n_input_rows), running fromsample_start= 2010-01-04 tosample_end= 2019-12-31. Its SHA-256 matches the README (input_sha256). There are no missing values and no duplicate dates, and the dates are in order.- No row has
post_cut = 1(n_treated= 0). The README retrieval URL usesend_date=2019-12-31, so the file stops about two months before the 2020-03-04 cut. This is recorded indata_issues. - Exclusions (
out/exclusions.csv): 1 row dropped because the first row has no previous value to difference against, leaving 2497 changes (baseline_n_changes). The estimation-window step leaves 0 rows, because no flagged day exists.n_analysed= null.
Method
- One-day change = 100·(y_t − y_{t−1}) between consecutive rows.
post_cutis used as provided. - Baseline: the mean change over the whole file.
- Planned model: two-window means (post vs. the 120 preceding rows), giving their difference, a Welch–Satterthwaite 95% t-interval, and the RMSE of the two-window mean model. This is coded in
out/analysis.py, but the code path is not run because the treated window is empty. No randomness is used (random_seed= null). - I deliberately did not substitute a proxy (such as a placebo date inside 2010–2019), because the task forbids invented or proxy estimates.
Results
baseline_metric= −0.0429 bp per day over the whole 2010–2019 file (SDbaseline_sd_change_bp= 4.24 bp).effect_estimate,effect_ci_low,effect_ci_highandmodel_metricare all null, because they are not estimable.- Figure 1 (
out/figure1.png) plots the yield over 2010–2019. The cut date is marked, and it falls outside the sample. Table 1 (out/table1.csv) gives yearly counts, mean yields and mean changes; it is descriptive only and does not bear on the estimand.
Uncertainty
No interval can be given for the effect (effect_ci_low and effect_ci_high are null). The baseline is a single descriptive mean and was not used for inference.
Limitations and open issues
- Main failure: the file covers the wrong period for the question. A valid answer needs Valet data that runs at least through March 2020 (for example start_date 2019-09-01 and an end_date after 2020-03-31). Once such data is supplied,
out/analysis.pywould compute the estimand without changes. - Threats that would remain even with correct data:
- The post window is defined open-ended by
post_cut, so its length depends on where the file ends. - March 2020 also brought the global COVID dash for cash, further BoC cuts (2020-03-13 and 2020-03-27) and the start of GoC bond purchases. A before/after mean difference therefore cannot isolate the 2020-03-04 cut; it is descriptive, not causal.
- Daily changes in March 2020 were heteroskedastic and probably autocorrelated, and Welch intervals ignore autocorrelation.
- A gap of more than one business day between rows would turn a "one-day" change into a multi-day change.
- The post window is defined open-ended by
- Not checked: whether the Valet values were later revised, and anything that requires data from outside the file.