Rate Stress Test: What Happens to Your Bonds if the Central Bank Moves the Rate
The "Portfolio Stress Testing" block on the Yields page revalues the bonds in your account for a shift in the key rate: move the slider and see the change in value in rubles and as a percent of the portfolio.
- Where: Yields → "Portfolio Stress Testing" block; a dashboard widget is available too.
- How: a slider from −5 to +5 pp around the current Bank of Russia key rate, in 0.25 pp steps.
- What it computes: the change in bond value via modified duration: $-D_{\text{mod}} \cdot \Delta r \cdot V_{\text{bonds}}$.
- Note: the percentage is relative to the whole portfolio; the estimate is linear, without convexity.
1. Why stress-test your portfolio against rate changes
A fixed-coupon bond moves against market rates: when rates rise, bonds get cheaper; when rates fall, they get more expensive. The Bank of Russia key rate sets the general level of yields, so every rate decision shows up in the value of the bond part of your portfolio.
The "Portfolio Stress Testing" block shows this effect in rubles and percent before the central bank acts: move the slider and see how much your bonds would lose or gain if rates shifted by that amount. It helps you judge whether your current interest rate risk is comfortable — without spreadsheets or manual math.
2. Where to find the stress test
- Open the Yields section in the sidebar.
- Find the "Portfolio Stress Testing" block. If you hid it earlier, click Configure in the top right corner of the page, then Add block and choose "Stress Testing".
- You can also put the same calculation on your main screen: the dashboard has a "Portfolio Stress Testing" widget (see Bento Grid Dashboard for how to build a dashboard).
The stress test uses the account or portfolio selected in the account switcher in the app header.
3. How to use the slider
- The badge "CBR: …%" in the top right corner of the block shows the current key rate. Firewire fetches it from the Bank of Russia website and refreshes it at least once a day.
- Move the "Interest rate change" slider. The range is −5 to +5 percentage points in 0.25 pp steps. Next to the shift you see the rate you would end up with: "CB Rate: …%".
- As soon as the shift is non-zero, an "Estimated bond revaluation" panel appears, with the current value of all bonds in the account in brackets. Below it is the result: "Value drop" (red, when rates rise) or "Value growth" (green, when they fall), in rubles and percent.
The slider position is not saved: next time you open the page it is back at zero. It is a tool for quick "what if" checks, not a setting.
4. How the revaluation is calculated
The calculation relies on modified duration, which shows by how many percent a bond price changes when its yield shifts by 1 percentage point. The change in bond value in rubles is:
where $D_{\text{mod}}$ is the modified duration of the bond part of the portfolio (averaged across bonds, weighted by their current value), $\Delta r$ is the rate shift in percentage points from the slider, and $V_{\text{bonds}}$ is the current value of all bonds in the account.
The percentage next to the amount is the change as a share of the whole portfolio, not just the bonds:
Example from the screenshot. Modified duration is 3.4, bonds are worth RUB 342,205, and rates rise by 2 pp: $-3.4 \times 0.02 \times 342{,}205 \approx -23{,}270$ rubles. That is −2.01% of the whole portfolio value. The "Mod. Duration" card on the Yields page shows the same number with a percent sign: "3.40%" reads as "−3.4% of bond price for every +1 pp of rate".
Move the slider the other way and the calculation is symmetric: if rates drop by 3 pp, the same bonds gain about RUB 34,905.
5. What the stress test does not account for
- Linear estimate. Only duration is used, with no convexity adjustment. For shifts of several percentage points the actual price change may differ from the estimate (see "How Firewire calculates it" in the duration article).
- Parallel shift. The model assumes that the yields of all bonds move by exactly as much as the key rate. In the market, short and long issues, government and corporate bonds react differently.
- Bonds only. Stocks, funds and cash are not revalued, although they are part of the denominator of the percentage.
- Instant shock. Coupons received before the rate change and the passage of time to maturity are not included.
- Empty portfolio. If the account has no positions, you will see "No stress test data" instead of the slider.
The estimate is for reference only and is not a forecast of Bank of Russia decisions.
6. Frequently Asked Questions (FAQ)
Why is the stress test percentage smaller than Mod. Duration × rate shift?
Because the percentage is calculated against the value of the whole portfolio. If bonds make up, say, a third of the portfolio, the resulting percentage will be about three times smaller than the price change of the bonds themselves.
Where does the current key rate come from?
Firewire requests it from the Bank of Russia website and keeps the value for up to a day. After a central bank meeting, the "CBR" badge updates within a day.
How does the stress test treat floating-rate bonds?
The same way as other bonds: through the modified duration Firewire calculated from the security payment schedule. The stress test makes no separate adjustment for the fact that a floater coupon resets after the rate. To see how floater coupons themselves would change, use the "Floater Coupon Predictor" block on the same page.
Can I check a scenario with a specific target rate?
Yes: move the slider until the "CB Rate" value on the right shows the rate you want. For example, with a 17% key rate, a −3 pp shift is a scenario of cutting to 14%. The range is limited to ±5 pp from the current rate.