Topical Issues on Risks in Financial Markets.


Nuts & Bolts of FRTB – Delta Risk Charge

In this post I will discuss the calculation of Delta risk charge for each risk class. Conceptually calculation method is simple. In the first step, risk weighted sensitivity is calculated for each risk factor. Next, risk weighted sensitivities are aggregated within a bucket (read currency for a GIRR Delta risk charge). This is also known as risk position. In a final step, risk positions are aggregated across buckets.

Step 1 – Calculate net sensitivity s_k for each risk factor across all the portfolios on a trading desk. In case of an interest rate portfolio, this sensitivity would be to each tenor of each curve. For example, if a portfolio has interest rate swaps with USD Libor and USD OIS as underlyings then s_k refers to the DV01 sensitivity to both USD Libor and USD OIS curves individually at each tenor (0.25y, 0.5y, 1y, 2y, 3y, 5y, 10y, 15y, 20y and 30y). Where banks use different tenor ladder, risks should be allocated to above tenors through linear interpolation or a method which is approved internally. I will cover sensitivity definitions for all the risk classes separately. For the time being, remember that banks typically calculate Delta/DV01 as change in PV for 1% or 1bp change in the underlying. Under FRTB rules this sensitivity is required to be divided by this 1% or 1bp as the case may be, let’s call it FRTB Delta. For the illustration purposes below, I assume  Deltas to be FRTB Deltas i.e. bank’s deltas already divided by 1% or 1bp.

Step 2 – Calculate risk weighted sensitivity WS_k which is the multiplication of net sensitivity s_k and the corresponding risk weight RW_k. Mathemmatically, it is represented as

WS_k = RW_ks_k

Refer section 4 in the main FRTB document for actual risk weight values for each risk class. Risk weights for interest rate factors are in table below which, at the discretion of the bank, can be divided by square root of 2 for USD, EUR, AUD, GBP, JPY, SEK, CAD and the domestic reporting currency of the bank.. For FX Delta, risk weight is set at 15%. This risk weight can also be divided by square root of 2 for select currency pairs.

Tenor 0.25y 0.5y 1y 2y 3y 5y-30y
Risk Weight 1.7% 1.74% 1.6% 1.3% 1.2% 1.1%

Step 3 – Risk position,s_k, for each bucket b is calculated by aggregating risk weighted sensitivities within each bucket. Aggregation requires use of prescribed correlations \rho_{kl}. Given below formula to be used for the aggregation within each bucket.

K_b=\sqrt{max(\sum_kWS^2_k + \sum_k\sum_{k\neq l}\rho_{kl}WS_kWS_l,0)}

This equation can easily be implemented in Excel using MMULT function or perhaps by implementing the logic in VBA. However the critical part of this equation is the correlation matrix. Once again I will discuss here correlation for interest rate risk only.

Same Bucket Correlations for GIRR \rho_{kl}

  • \rho_{kl} between WS_k and WS_l within same bucket (eg. USD) and same curve (eg. USD Libor) with different tenors is set at max\left[e^{-\Theta\frac{\left|T_k - T_l \right|}{min(T_k,T_l)}},0.4\right]

Here T_k refers to the tenor related to the weighted sensitivity WS_k; and \Theta is set at 3%.

  • \rho_{kl} between WS_k and WS_l within same bucket (eg. USD) and same tenor(eg. 1y) with different curve (eg. USD OIS) is set at 99.90%

  • \rho_{kl} between WS_k and WS_l within same bucket (eg. USD) but different curves (eg. USD Libor and USD OIS) and different tenors is to be derived by multiplying correlation parameter from the first bullet in this section with 99.90%.

There are two things to take away from this:

  1. Correlations are static and are agnostic to currency;
  2. However the correlation matrix that is required to be stored will be large and is a function of maximum number of curves in a particular currency. For example, if a bank trades in 10 different curves of USD bucket, the correlation matrix size will be 100,000. Certainly, data structures exist for storing such matrices optimally.

Step 4 – Calculate Delta risk charge by aggregating delta risk positions across all the buckets (currencies). Following formula to be used for this aggregation

Delta Risk Charge=\sqrt{\sum_bK^2_b + \sum_b\sum_{c\neq b}\gamma_{bc}S_bS_c}

S_b = \sum_kWS_k for all the risk factors in a bucket b
S_b = max(min(\sum_kWS_k,K_b),-K_b) when a number under square root is negative using first approximation of S_b
\gamma_{bc} = 50% for aggregating GIRR delta risk positions between currencies.

Example for an FX Portfolio

Picture below shows steps of calculating a delta risk charge for an FX portfolio.  Currencies in this portfolio are subject to a reduced risk weight of 10.61%  except for USD/MYR which is not included in Basel Committee’s list of currency pairs to which banks at their discretion can apply a risk weight of 15% divided by the square root of 2. Also note that for the EUR/GBP cross, risk weight of 10.61% is applied because it is considered as a first-order cross of EUR/USD and GBP/USD. As per the rule, first-order crosses can also be applied lower risk weight.
Next a formula in Step 4 above is used to calculate delta risk charge. For FX risk class,  \gamma_{bc} is 60%. This formula can be implemented in Excel using MMULT resulting in a delta risk charge of 
$3,689,981. For the $9m FX delta position, a risk charge of $3.7m is relatively large. Even if the net delta of this portfolio was 0, for example by reducing EUR/AUD delta position to $1m, the delta risk charge would still be $3,691,916 (slightly higher). This result is not completely intuitive but by design takes into account the basis between currencies and not allow complete offset even among the perfectly correlated pairs.

By nature there are more steps involved in calculating delta risk charge for GIRR and other risk classes. Some other time I will publish an example for GIRR but before that lets move on to the vega risk charge.



  1. Hey! This is kind of off topic but I need some advice from an established blog. Is it hard to set up your own blog? I’m not very techincal but I can figure things out pretty fast. I’m thinking about setting up my own but I’m not sure where to start. Do you have any points or susetggions? Thanks

  2. seo paketleri, seo hizmeti, seo satın al
    seo paketleri, seo hizmeti, seo satın al
    seo paketleri, seo hizmeti, seo satın al