SPB Git

spb/wp29_uqo

Public

# 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.csv contains 2498 rows (n_input_rows), running from sample_start = 2010-01-04 to sample_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 uses end_date=2019-12-31, so the file stops about two months before the 2020-03-04 cut. This is recorded in data_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_cut is 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 (SD baseline_sd_change_bp = 4.24 bp).
  • effect_estimate, effect_ci_low, effect_ci_high and model_metric are 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.py would 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.
  • Not checked: whether the Valet values were later revised, and anything that requires data from outside the file.
Files · main
Menu

Theme