Inspiration
Hartley and Schwarz, “Predictable End-of-Month Treasury Returns” (2019), found that the Treasury term premium is earned in the last few trading days of the month. Index rules extend duration on the last business day, so benchmarked funds and insurers buy longer bonds that day whatever the price. We took their three-day window as given and tested whether it still shows up in TLT after costs, on data they did not use.
What it does
The strategy buys TLT at the close three trading days before month-end, sells at the month-end close, and holds T-bills otherwise. From 31 July 2002 to 30 September 2024, net of 2 basis points per side, it earned 4.0% a year over T-bills, with 5.1% volatility, a Sharpe ratio of 0.78, and a maximum drawdown of −12.4%. The held-out two years, 1 October 2024 to 2 October 2026, scored −0.26. A random three-day window inside each month does not match the month-end result (p-value 0.0005).
How we built it
Python, uv, and Streamlit. Prices and the 13-week T-bill yield come from Yahoo Finance. The signal is the trading calendar, so the entry close is not used as the return it earns. Position size is 100% of capital during the window and zero otherwise. The most recent two years are cut at a month start and reported separately. The headline command is uv run eom-treasury-rally --ticker TLT --entry 3 --exit 0 --cost-bps 2 --evaluate-oos.
Challenges we ran into
The full-sample Sharpe mixes the test set into the headline, so every reported number had to be split. After the holdout was scored, a second window (entry ten days before month-end) was evaluated on the same dates. That look is logged and discarded. The strategy is in the market only about 14% of days, so a high Sharpe is a small premium at low risk, not a large profit. Capacity is tight for the same reason: twenty-four full-fund trades a year eat a 4% edge while the order is still under 1% of TLT’s volume.
Accomplishments that we're proud of
The window was fixed before the backtest. The in-sample result is a broad band of month-end exits, not one lucky cell, and it is not just TLT’s beta. The holdout was reported even though it failed. Three other books, an options overlay, an adaptive trend, and a diversified trend, stayed in the repo and were not promoted, because their return per unit of risk does not beat this lower-risk TLT rule.
What we learned
A Sharpe ratio of 0.78 on a book that is usually in T-bills is a different claim from beating the S&P 500. The edge can be real in-sample and absent in the next two years. Looking at the holdout and then changing the entry is a second test, not a new strategy.
Log in or sign up for Devpost to join the conversation.