comeinvest wrote: ↑Sun May 21, 2023 6:05 pm
unemployed_pysicist wrote: ↑Sun May 21, 2023 5:16 am
comeinvest wrote: ↑Sat May 20, 2023 9:41 pm
unemployed_pysicist wrote: ↑Sat May 20, 2023 7:06 am
Now, looking at the STT portfolio, there is a 95% drawdown from 1977 January to 1981 November, and ~95% drawdown from the start value. Ouch! In roughly 10 years, you would have lost 95% of your initial investment
After ~50 years, however, the STT portfolio is 70(!) times larger than the SP500 portfolio. The performance of STTs is truly astounding over the 40 year bond bull run.
That number says nothing without adjusting for yield changes. 10y yields were well above 6% in 1972 i.e. they dropped by ca. 3% until now. (FRED doesn't have 2y or 30y yields from 1972.) 3 * 15.5 * 1.35 -> ca. 63% performance boost from valuation changes. 70 / 1.63 -> 43 (4300%) would be the yield-adjusted performance. I'm not sure if my math makes sense. Arguably we also need to adjust for expected volatility vs. historical volatility for example due to strategic changes to fed policy.
I'm not sure I fully understand. Do you mean you want to look at a sample where the interest rates begin and end at about the same value? Probably a good idea, consistent with Antti Ilmanen's suggestions in the "Understanding the Yield Curve" series. Early 1960s to now looks like a good candidate.
E.g.:
Code: Select all
Date: 2y Zero 5y Zero
1963-12-30 3.8 4.0
2023-03-13 4.1 3.7
Actual 10+ year zero data does not go back this far. I can "cheat" and use the NSS fit anyway for the 15y zero, but 1961-1972 yield data for the 15y zero has to be taken with considerable skepticism. We can pick a date with the closest match across all maturity buckets. I am not sure what you mean by adjusting for expected volatility vs historical volatility, and how I should implement this in the backtest.
What I was trying to say is, I think a chart like the following from this
https://www.simplify.us/blog/efficient- ... -investing paper is useful for comparing the returns of different tenors of treasury futures.
Yes to eliminate the effect of yield changes, you can select a starting point and end point that have similar or equal yields; but you would only have very few data points available that way. So I think what can be done instead is separating the "carry" returns from the returns due to yield changes. Yields are fluctuating, range bound, and have mean reverting tendencies; but they are hard to predict for a specific point in time. In the long run, the longer the time horizon, the effect of carry will dominate the effect of yield changes. Therefore - unless you try to time the market with interest rate predictions - you could arguably say that the carry leads to a better estimate of future returns.
I have not thought this completely through, but I think other than a per decade or similar segment chart like the Simplify below, it should also be possible to create performance time series or charts on the timeline that eliminate the effect of yield changes, right? So if the yield of the 9.75y treasury is x% at time T, and after a time t later (e.g. 1 quarter) it is at (x+y)%, and the 10y treasury's return was r between T and T+t, then the contribution of yield change to the return was -y * duration. So you would add y * duration to r to arrive at the return adjusted for yield change (i.e. as if the shape of the yield curve had stayed constant between T and T+t). You could eventually create a performance chart agnostic of yield changes. That way you could compare carry returns over time for a particular treasury tenor, and you could also compare returns of different treasury tenors (2y, 5y, 10y, etc.) that are not biased because of curve steepening or flattening during your backtesting period.
If and when starting end end yield are the same, all the adjustments over that time frame would add to zero.
I hope that makes sense, I'm just thinking loud.
This strikes me as a problem related to forward rates:
Notation:
y(n) is the zero coupon yield at tenor n. I will assume an unchanged yield curve, so no subscripts for time-dependence.
par_val=1000 (or 100, does not matter)
The forward rate using Gurkaynak notation (other authors use different notation, but I find this easiest for me to understand).
This is the t-year rate beginning in T-years:
f(T,t)=(1/t)*[(T+t)*y(T+t)-T*y(T)]
Let T=9.75 and t=0.25, so that T+t=10.
Price of the 10 year zero when purchased: par_val*exp[-(T+t)*y(T+t)]
Price of a 9.75 year zero, the price of our 10 year zero after 0.25 years if the yield curve does not change: par_val*exp[-T*y(T)]
Return, assuming no change to the yield curve:
return = {par_val*exp[-T*y(T)]}/{par_val*exp[-(T+t)*y(T+t)]} = exp[(T+t)*y(T+t)-T*y(T)]
log[return] = (T+t)*y(T+t)-T*y(T) = t*f(T,t).
I.e., this forward rate f(T,t) is the growth rate for an unchanged yield curve scenario.
It looks like the log return of the zero is equal to the t-year rate beginning in T years hence, times the holding period if the yield curve does not change. Or in other words, the growth rate of the 10 year zero as it rolled down (or up) the curve is equal to the 3 month bill rate, starting in 9.75 years.
Couldn't you multiply the log return by the leverage factor (needed to make all tenors the same duration), and subtract financing cost, which is y(t)*(leverage-1) to get the returns for shorter durations in an unchanged yield curve scenario? If I am cancelling out any returns due to yield curve changes, isn't it just this simple?