SPB Git

spb/wp29_uqo

Public

# F6-conf-01 — Day-of-week effects in daily changes of the 10-year Treasury yield (2000–2019)

# Question

Can the day of the week predict the one-day change Δy_t (basis points) in the 10-year US Treasury constant-maturity yield (FRED DGS10)? Three estimands: (i) a joint test that all five weekday means are equal; (ii) the Monday contrast (mean Monday change minus mean change on Tue–Fri) with a 95% interval; (iii) whether weekday-specific means estimated on 2000–2009 forecast 2010–2019 changes better than a zero-change (random-walk) forecast.

# Data and exclusions

Input: data/DGS10.csv, 5217 weekday rows, 2000-01-03 to 2019-12-31 (n_input_rows). SHA-256 matches the README. There are no duplicate dates and no values that fail to parse. 215 rows have an empty DGS10 field because they are US market holidays (n_missing_rows). These rows were dropped before differencing, as the task requires. The first available observation has no change, so 5001 daily changes remain (n_analysed). Of these, 2500 are dated on or before 2009-12-31 (n_train) and 2501 on or after 2010-01-01 (n_test). The steps are recorded in out/exclusions.csv. 214 changes span a holiday (supp_n_holiday_spanning_changes), meaning they cover more calendar time than a normal day or weekend. Following the task rules, these are kept and attributed to the weekday of t (data_issues).

# Method

  • Δy_t = 100·(y_t − y_{t−1}) between consecutive available observations, attributed to the weekday of t.
  • Joint test: classical one-way equal-variance ANOVA F-test (scipy f_oneway) on all 5001 changes, with F(4, 4996). The result was cross-checked with an OLS regression on weekday dummies (statsmodels), which gives the same F and p.
  • Monday contrast: Welch two-sample comparison of Monday changes against all Tue–Fri changes, with a Welch–Satterthwaite t interval. I chose Welch because it does not assume equal variances. An HC1-robust regression on a Monday dummy gives practically the same interval (see out/state/checks.md).
  • Out-of-sample test: each 2010–2019 change is forecast by the 2000–2009 mean change for its weekday (supp_train_weekday_means_bp), and compared with a zero-change forecast. Both are scored by RMSE over the evaluation period. Only estimation-period data enter the forecasts; the code asserts this.
  • Conclusion rule: if the ANOVA p ≥ 0.05 → no_detectable_effect; otherwise the sign comes from the Monday-contrast interval.
  • No randomness is used (random_seed = null). out/analysis.py regenerates every output deterministically.

# Results

  • Weekday means (out/table1.csv, out/figure1.png) range from about −0.22 bp (Tuesday) to +0.02 bp (Wednesday). Each standard error is about 0.16–0.19 bp.
  • Joint ANOVA: F = 0.263 (anova_f_stat), p = 0.90 (anova_p_value). The test does not reject equal weekday means.
  • Monday contrast: +0.050 bp (effect_estimate), 95% CI [−0.319, 0.420] bp (effect_ci_low, effect_ci_high), Welch p = 0.79 (supp_effect_welch_p).
  • Out-of-sample: the zero-change RMSE is 4.876 bp (baseline_metric). The weekday-mean forecast RMSE is 4.884 bp (model_metric), a ratio of 1.0017 (supp_rmse_ratio_model_over_baseline). The weekday means do slightly worse than the random walk.
  • Conclusion: no_detectable_effect (conclusion). In this sample, the day of the week has no detectable predictive content for daily changes in the 10-year yield.

# Uncertainty

  • The Monday-contrast interval is about ±0.37 bp wide (effect_ci_low, effect_ci_high; SE supp_effect_se = 0.188 bp). The data therefore rule out Monday effects larger than roughly 0.4 bp per day in either direction. Smaller effects cannot be excluded.
  • The out-of-sample RMSE difference (0.008 bp) is tiny compared with the daily volatility (~4.9 bp). No formal forecast-comparison test (e.g. Diebold–Mariano) was run. The evidence is that weekday means add nothing, not a significance statement.
  • Robustness: a Kruskal–Wallis rank test also does not reject equal weekday distributions (p = 0.47, supp_kruskal_p).

# Limitations and open issues

  • Assumption violation: Levene's test strongly rejects equal variances across weekdays (p ≈ 1e-7, supp_levene_p). The classical ANOVA required by the task therefore runs under a violated assumption. With roughly balanced group sizes (919–1030) and p = 0.90, this is unlikely to change the conclusion. A Welch ANOVA was not run. The Monday contrast uses Welch, and the HC1 regression check agrees with it.
  • Serial dependence / volatility clustering: daily yield changes show conditional heteroskedasticity, and their autocorrelation may not be exactly zero. The ANOVA and Welch standard errors assume independence. HAC/GARCH-robust inference was not checked.
  • Holiday-spanning changes: 214 changes cover more than one trading day and are assigned to the weekday of t. This mixes multi-day changes into Tuesdays (after Monday holidays) and other days. The task rules require this treatment. A sensitivity analysis excluding these changes was not done.
  • Regime changes: the 2000–2019 period includes the zero-lower-bound and QE years. A weekday pattern could exist in sub-periods and cancel out overall. Only the fixed 2009/2010 split was examined.
  • What would invalidate the result: errors in the FRED file (stale or revised values), or a definition of the change different from the prescribed one (e.g. calendar-day rather than trading-day changes). Calendar effects not tested here, such as FOMC days, auction days, or month-end, could be correlated with weekdays. Because the null is not rejected, such confounding could hide an effect rather than create one.
  • Power: the study cannot detect weekday effects much smaller than ~0.4 bp/day. A non-rejection is not proof that the effect is zero.
Files · main
Menu

Theme