
Introduction
One of the key innovations introduced by the new accounting standards refer to lifetime losses. Though this concept is not new in risk management, its implementation in the financial industry is extremely contemporary.
Account-level data is usually required to develop a lifetime PD. Based on data availability, one may consider the lifetime PD based on porfolio-level data when account-level data is not available.
IFRS 9 requires banks to compute ECL, based on point-in-time (PIT or Oneyear PD), unbiased, forwardlooking, and lifetime estimates. The previous post focused on one-year PIT PD, the aim of this post is to embed a forward-looking perspective, and extend over a lifetime PD modelling for portfolio-level data. Few alternative approaches can be as follows:

Lifetime PD Modelling for Portfolio-level
When data are not available at account-level, or micro-granularity is not needed, one may conduct the study at portfolio-level. The idea is to fit a creditworthiness index against MVs (Bellini, 2017). A PD shift, based on macroeconomic projections, is applied on top of one-year PIT PDs to derive forward-looking PDs. Finally, a lifetime term structure is computed for each account, based on Equation 3.5 (page 99).
Lifetime PD modelling based on portfolio-level data can be implemented by a four-step procedure described as follows:
- Step 1: Modelling Oneyear PD as presented in previous post.
- Step 2: Develop a link function rely on default rates (DRs).
- Step 3: Calculate PD shift based on macroeconomic projections feeding the link function investigated above.
- Step 4: Calculate lifetime PD.
This post presents process of modelling lifetime PD for portfolio-level data by using R language.
Step 2

| DR |
0.112 |
0.100 |
Trend |
| GDP |
0.112 |
0.100 |
Trend |
| UER |
0.132 |
0.076 |
Trend |
| CPI |
0.068 |
0.100 |
Trend |
| HPI |
0.141 |
0.060 |
Trend |
| IR |
0.228 |
0.010 |
Trend |
| DR |
0.930 |
0.010 |
Level |
| GDP |
0.302 |
0.100 |
Level |
| UER |
0.991 |
0.010 |
Level |
| CPI |
0.739 |
0.010 |
Level |
| HPI |
0.666 |
0.017 |
Level |
| IR |
0.810 |
0.010 |
Level |
##
## Call:
## lm(formula = DR ~ GDP_lag + UER, data = .)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.3011 -0.4325 -0.1886 0.4557 1.6665
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.20442 0.78398 -6.638 1.29e-07 ***
## GDP_lag -0.21198 0.06081 -3.486 0.00137 **
## UER 1.40331 0.11205 12.524 2.73e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7805 on 34 degrees of freedom
## Multiple R-squared: 0.9046, Adjusted R-squared: 0.899
## F-statistic: 161.2 on 2 and 34 DF, p-value: < 2.2e-16
# Compare actuals and predictions:
df_lag4 %>%
mutate(Predicted = ols_lag4$fitted.values) %>%
select(DATE, DR, Predicted) %>%
gather(a, b, -DATE) %>%
mutate(b = b / 100) %>%
ggplot(aes(DATE, b, color = a)) +
geom_line() +
theme_ft_rc() +
scale_y_continuous(labels = scales::percent) +
scale_colour_manual(values = c("orange", "purple"), name = "", labels = c("DR Actual", "DR Predicted")) +
labs(x = "Report Date", y = NULL,
title = "DR Actuals and Predictions, 2004 - 2013")

Step 3
#=======================================
# Perform Stage 3: calculate PD shift
#=======================================
# A portfolio made by 5 accounts:
my_port <- data.frame(ID = 1:5,
Segment = c(rep("Corporate", 3), rep("SME", 2)),
PD_0 = c(0.5, 2, 3, 3.5, 4))
# Data about macroeconomic scenario for next 5 quarters:
macro_scenario <- data.frame(DATE = df_lag4 %>% slice(which.max(DATE)) %>% pull(DATE) + (1:5)*90,
GDP_lag = c(-2.94, 1.05, 1.50, 1.75, 2),
UER = c(8.5, 9, 7.5, 7, 6.8))
# The last value:
last_value <- df_lag4 %>% slice(which.max(DATE)) %>% pull(DR)
#----------------------
# Propotional shift
#----------------------
# Calculate proportional variation by proportional shift (page 148):
prop_variation <- predict(ols_lag4, macro_scenario %>% slice(1)) / last_value
# Lifetime PD at t1 as presented in table 3.24, page 149:
my_port %>%
mutate(LifetimePD_t1 = round(PD_0*prop_variation, 2)) -> df_pd1
kable(df_pd1)
| 1 |
Corporate |
0.5 |
0.63 |
| 2 |
Corporate |
2.0 |
2.52 |
| 3 |
Corporate |
3.0 |
3.78 |
| 4 |
SME |
3.5 |
4.41 |
| 5 |
SME |
4.0 |
5.04 |
LS0tDQp0aXRsZTogIklGUlMgOSBhbmQgQ0VDTCBDcmVkaXQgUmlzayBNb2RlbGxpbmcgKENoYXB0ZXIgMywgUGFydCAxKSINCmF1dGhvcjogIk5ndXllbiBDaGkgRHVuZyINCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCINCnN1YnRpdGxlOiAiVHJhaW5pbmcgQ291cnNlIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgICMgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgaGlnaGxpZ2h0OiB6ZW5idXJuDQogICAgdGhlbWU6IGZsYXRseQ0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBmaWcucmV0aW5hPTIpDQpgYGANCg0KIVtdKEM6XFxVc2Vyc1xcWmJvb2tcXERlc2t0b3BcXGlmcnM5X0JlbGxpbmlcXGNoYXAyX3AxLkpQRykNCg0KIyBJbnRyb2R1Y3Rpb24NCg0KT25lIG9mIHRoZSBrZXkgaW5ub3ZhdGlvbnMgaW50cm9kdWNlZCBieSB0aGUgbmV3IGFjY291bnRpbmcgc3RhbmRhcmRzIHJlZmVyIHRvIGxpZmV0aW1lIGxvc3Nlcy4gVGhvdWdoIHRoaXMgY29uY2VwdCBpcyBub3QgbmV3IGluIHJpc2sgbWFuYWdlbWVudCwgaXRzIGltcGxlbWVudGF0aW9uIGluIHRoZSBmaW5hbmNpYWwgaW5kdXN0cnkgaXMgZXh0cmVtZWx5IGNvbnRlbXBvcmFyeS4NCg0KQWNjb3VudC1sZXZlbCBkYXRhIGlzIHVzdWFsbHkgcmVxdWlyZWQgdG8gZGV2ZWxvcCBhIGxpZmV0aW1lIFBELiBCYXNlZCBvbiBkYXRhIGF2YWlsYWJpbGl0eSwgb25lIG1heSBjb25zaWRlciB0aGUgbGlmZXRpbWUgUEQgYmFzZWQgb24gcG9yZm9saW8tbGV2ZWwgZGF0YSB3aGVuIGFjY291bnQtbGV2ZWwgZGF0YSBpcyBub3QgYXZhaWxhYmxlLiANCg0KDQpJRlJTIDkgcmVxdWlyZXMgYmFua3MgdG8gY29tcHV0ZSBFQ0wsIGJhc2VkIG9uIHBvaW50LWluLXRpbWUgKFBJVCBvciBPbmV5ZWFyIFBEKSwgdW5iaWFzZWQsIGZvcndhcmRsb29raW5nLCBhbmQgbGlmZXRpbWUgZXN0aW1hdGVzLiBbVGhlIHByZXZpb3VzIHBvc3RdKGh0dHA6Ly9ycHVicy5jb20vY2hpZHVuZ2t0LzQ5NjA2OCkgZm9jdXNlZCBvbiBvbmUteWVhciBQSVQgUEQsIHRoZSBhaW0gb2YgdGhpcyBwb3N0IGlzIHRvIGVtYmVkIGEgZm9yd2FyZC1sb29raW5nIHBlcnNwZWN0aXZlLCBhbmQgZXh0ZW5kIG92ZXIgYSBsaWZldGltZSBQRCBtb2RlbGxpbmcgZm9yIHBvcnRmb2xpby1sZXZlbCBkYXRhLiBGZXcgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcyBjYW4gYmUgYXMgZm9sbG93czogDQoNCg0KIVtdKEM6XFxVc2Vyc1xcWmJvb2tcXERlc2t0b3BcXGlmcnM5X0JlbGxpbmlcXGNoYXAzX3AyLnBuZykNCg0KIyBMaWZldGltZSBQRCBNb2RlbGxpbmcgZm9yIFBvcnRmb2xpby1sZXZlbA0KDQpXaGVuIGRhdGEgYXJlIG5vdCBhdmFpbGFibGUgYXQgYWNjb3VudC1sZXZlbCwgb3IgbWljcm8tZ3JhbnVsYXJpdHkgaXMgbm90IG5lZWRlZCwgb25lIG1heSBjb25kdWN0IHRoZSBzdHVkeSBhdCBwb3J0Zm9saW8tbGV2ZWwuIFRoZSBpZGVhIGlzIHRvIGZpdCBhIGNyZWRpdHdvcnRoaW5lc3MgaW5kZXggYWdhaW5zdCBNVnMgKEJlbGxpbmksIDIwMTcpLiBBIFBEIHNoaWZ0LCBiYXNlZCBvbiBtYWNyb2Vjb25vbWljIHByb2plY3Rpb25zLCBpcyBhcHBsaWVkIG9uIHRvcCBvZiBvbmUteWVhciBQSVQgUERzIHRvIGRlcml2ZSBmb3J3YXJkLWxvb2tpbmcgUERzLiBGaW5hbGx5LCBhIGxpZmV0aW1lIHRlcm0gc3RydWN0dXJlIGlzIGNvbXB1dGVkIGZvciBlYWNoIGFjY291bnQsIGJhc2VkIG9uIEVxdWF0aW9uIDMuNSAocGFnZSA5OSkuIA0KDQpMaWZldGltZSBQRCBtb2RlbGxpbmcgYmFzZWQgb24gcG9ydGZvbGlvLWxldmVsIGRhdGEgY2FuIGJlIGltcGxlbWVudGVkIGJ5IGEgZm91ci1zdGVwIHByb2NlZHVyZSBkZXNjcmliZWQgYXMgZm9sbG93czogDQoNCi0gKipTdGVwIDEqKjogTW9kZWxsaW5nIE9uZXllYXIgUEQgYXMgcHJlc2VudGVkIGluIFtwcmV2aW91cyBwb3N0XSgoaHR0cDovL3JwdWJzLmNvbS9jaGlkdW5na3QvNDk2MDY4KSkuIA0KLSAqKlN0ZXAgMioqOiBEZXZlbG9wIGEgKipsaW5rIGZ1bmN0aW9uKiogcmVseSBvbiBkZWZhdWx0IHJhdGVzIChEUnMpLiANCi0gKipTdGVwIDMqKjogQ2FsY3VsYXRlICoqUEQgc2hpZnQqKiBiYXNlZCBvbiBtYWNyb2Vjb25vbWljIHByb2plY3Rpb25zIGZlZWRpbmcgdGhlIGxpbmsgZnVuY3Rpb24gaW52ZXN0aWdhdGVkIGFib3ZlLg0KLSAqKlN0ZXAgNCoqOiBDYWxjdWxhdGUgKipsaWZldGltZSBQRCoqLiANCg0KVGhpcyBwb3N0IHByZXNlbnRzIHByb2Nlc3Mgb2YgbW9kZWxsaW5nIGxpZmV0aW1lIFBEIGZvciBwb3J0Zm9saW8tbGV2ZWwgZGF0YSBieSB1c2luZyBSIGxhbmd1YWdlLiANCg0KIyBTdGVwIDINCg0KDQpgYGB7cn0NCiMgSW1wb3J0IHNvbWUgUiBwYWNrYWdlczogDQoNCnJtKGxpc3QgPSBscygpKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoaHJicnRoZW1lcykNCmxpYnJhcnkodHNlcmllcykNCmxpYnJhcnkoa25pdHIpDQoNCiMgSW1wb3J0IGRhdGE6IA0KZGZfbWFjcm8gPC0gcmVhZHhsOjpyZWFkX2V4Y2VsKCJDOlxcVXNlcnNcXFpib29rXFxEZXNrdG9wXFxpZnJzOV9CZWxsaW5pXFxjaGFwM1xcY2hhcDNkcnRzLnhsc3giKQ0KbmFtZXMoZGZfbWFjcm8pIDwtIHN0cl90b191cHBlcihuYW1lcyhkZl9tYWNybykpDQpkZl9tYWNybyA8LSBkZl9tYWNybyAlPiUgbXV0YXRlKERBVEUgPSB5bWQoREFURSkpDQoNCg0KIyBNYWNyb2Vjb25vbWljIEluZGljYXRvcnMgYW5kIFBEIGZyb20gMjAwNCB0byAzMDEzIChhcyBwcmVzZW50ZWQgaW4gcGFnZSAxMDEpOiANCmRmX21hY3JvICU+JSANCiAgZ2F0aGVyKGEsIGIsIC1EQVRFKSAlPiUgDQogIG11dGF0ZShiID0gYiAvIDEwMCkgJT4lIA0KICBnZ3Bsb3QoYWVzKERBVEUsIGIpKSArIA0KICBnZW9tX2xpbmUoY29sb3IgPSAib3JhbmdlIikgKyANCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6cGVyY2VudCkgKyANCiAgZmFjZXRfd3JhcCh+IGEsIHNjYWxlcyA9ICJmcmVlIikgKyANCiAgdGhlbWVfZnRfcmMoKSArIA0KICBsYWJzKHggPSAiUmVwb3J0IERhdGUiLCB5ID0gTlVMTCwgDQogICAgICAgdGl0bGUgPSAiRmx1Y3R1YXRpb24gb2YgU29tZSBNYWNyb2Vjb25vbWljIEluZGljYXRvcnMsIDIwMDQgLSAyMDEzIikgDQoNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyAgUGVyZm9ybSBTdGFnZSAyOiBsaW5rIGZ1bmN0aW9uDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KIyBGdW50aW9uIGZvciBjb25kdWN0IEtQU1MgdGVzdCBmb3IgdGltZSBzZXJpZXM6IA0KDQprcHNzVGVzdF9UcmVuZCA8LSBmdW5jdGlvbih4KSB7DQogIG0gPC0ga3Bzcy50ZXN0KHgsIG51bGwgPSAiVHJlbmQiLCBsc2hvcnQgPSBUUlVFKQ0KICByZXR1cm4oZGF0YS5mcmFtZShLUFNTX0xldmVsID0gbSRzdGF0aXN0aWMsIFBfVmFsdWUgPSBtJHAudmFsdWUsIEh5cG90aGVzaXMgPSAiVHJlbmQiKSkNCiAgDQp9DQoNCg0KbGFwcGx5KGRmX21hY3JvICU+JSBzZWxlY3RfaWYoaXMubnVtZXJpYyksIGtwc3NUZXN0X1RyZW5kKSAtPiBtMQ0KDQojIFNob3cgcmVzdWx0czogDQpkby5jYWxsKCJiaW5kX3Jvd3MiLCBtMSkgJT4lIA0KICBtdXRhdGUoVmFyaWFibGUgPSBuYW1lcyhtMSkpICU+JSANCiAgbXV0YXRlX2lmKGlzLm51bWVyaWMsIGZ1bmN0aW9uKHgpIHtyb3VuZCh4LCAzKX0pICU+JSANCiAgc2VsZWN0KFZhcmlhYmxlLCBldmVyeXRoaW5nKCkpICU+JSANCiAga2FibGUoKQ0KDQoNCg0Ka3Bzc1Rlc3RfTGV2ZWwgPC0gZnVuY3Rpb24oeCkgew0KICBtIDwtIGtwc3MudGVzdCh4LCBudWxsID0gIkxldmVsIiwgbHNob3J0ID0gVFJVRSkNCiAgcmV0dXJuKGRhdGEuZnJhbWUoS1BTU19MZXZlbCA9IG0kc3RhdGlzdGljLCBQX1ZhbHVlID0gbSRwLnZhbHVlLCBIeXBvdGhlc2lzID0gIkxldmVsIikpDQogIA0KfQ0KDQoNCmxhcHBseShkZl9tYWNybyAlPiUgc2VsZWN0X2lmKGlzLm51bWVyaWMpLCBrcHNzVGVzdF9MZXZlbCkgLT4gbTINCg0KIyBTaG93IHJlc3VsdHM6IA0KZG8uY2FsbCgiYmluZF9yb3dzIiwgbTIpICU+JSANCiAgbXV0YXRlKFZhcmlhYmxlID0gbmFtZXMobTIpKSAlPiUgDQogIG11dGF0ZV9pZihpcy5udW1lcmljLCBmdW5jdGlvbih4KSB7cm91bmQoeCwgMyl9KSAlPiUgDQogIHNlbGVjdChWYXJpYWJsZSwgZXZlcnl0aGluZygpKSAlPiUgDQogIGthYmxlKCkNCg0KDQojIENvbmR1Y3QgcmVncmVzc2lvbiBmb3IgRGVmYXVsdCBSYXRlIChEUikgYnkgbWVhbnMgb2YgTGFnIDQgZm9yIEdEUCBhbmQgVUVSIGFzIA0KIyBkZXNjcmliZWQgaW4gcGFnZSAxMDI6IA0KDQpkZl9tYWNybyAlPiUgDQogIG11dGF0ZShHRFBfbGFnID0gbGFnKEdEUCwgbiA9IDQpKSAlPiUgDQogIG5hLm9taXQoKSAtPiBkZl9sYWc0DQoNCg0KZGZfbGFnNCAlPiUgDQogIGxtKERSIH4gR0RQX2xhZyArIFVFUiwgZGF0YSA9IC4pIC0+IG9sc19sYWc0DQoNCiMgUmVzdWx0czogDQpvbHNfbGFnNCAlPiUgc3VtbWFyeSgpDQoNCiMgQ29tcGFyZSBhY3R1YWxzIGFuZCBwcmVkaWN0aW9uczogDQoNCmRmX2xhZzQgJT4lDQogIG11dGF0ZShQcmVkaWN0ZWQgPSBvbHNfbGFnNCRmaXR0ZWQudmFsdWVzKSAlPiUgDQogIHNlbGVjdChEQVRFLCBEUiwgUHJlZGljdGVkKSAlPiUgDQogIGdhdGhlcihhLCBiLCAtREFURSkgJT4lIA0KICBtdXRhdGUoYiA9IGIgLyAxMDApICU+JSANCiAgZ2dwbG90KGFlcyhEQVRFLCBiLCBjb2xvciA9IGEpKSArIA0KICBnZW9tX2xpbmUoKSArIA0KICB0aGVtZV9mdF9yYygpICsgDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsgDQogIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygib3JhbmdlIiwgInB1cnBsZSIpLCBuYW1lID0gIiIsIGxhYmVscyA9IGMoIkRSIEFjdHVhbCIsICJEUiBQcmVkaWN0ZWQiKSkgKyANCiAgbGFicyh4ID0gIlJlcG9ydCBEYXRlIiwgeSA9IE5VTEwsIA0KICAgICAgIHRpdGxlID0gIkRSIEFjdHVhbHMgYW5kIFByZWRpY3Rpb25zLCAyMDA0IC0gMjAxMyIpIA0KDQpgYGANCg0KDQojIFN0ZXAgMw0KDQpgYGB7cn0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgIFBlcmZvcm0gU3RhZ2UgMzogY2FsY3VsYXRlIFBEIHNoaWZ0DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgQSBwb3J0Zm9saW8gbWFkZSBieSA1IGFjY291bnRzOiANCg0KbXlfcG9ydCA8LSBkYXRhLmZyYW1lKElEID0gMTo1LCANCiAgICAgICAgICAgICAgICAgICAgICBTZWdtZW50ID0gYyhyZXAoIkNvcnBvcmF0ZSIsIDMpLCByZXAoIlNNRSIsIDIpKSwgDQogICAgICAgICAgICAgICAgICAgICAgUERfMCA9IGMoMC41LCAyLCAzLCAzLjUsIDQpKQ0KDQojIERhdGEgYWJvdXQgbWFjcm9lY29ub21pYyBzY2VuYXJpbyBmb3IgbmV4dCA1IHF1YXJ0ZXJzOiANCm1hY3JvX3NjZW5hcmlvIDwtIGRhdGEuZnJhbWUoREFURSA9IGRmX2xhZzQgJT4lIHNsaWNlKHdoaWNoLm1heChEQVRFKSkgJT4lIHB1bGwoREFURSkgKyAoMTo1KSo5MCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEUF9sYWcgPSBjKC0yLjk0LCAxLjA1LCAxLjUwLCAxLjc1LCAyKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFUiA9IGMoOC41LCA5LCA3LjUsIDcsIDYuOCkpDQoNCiMgVGhlIGxhc3QgdmFsdWU6IA0KbGFzdF92YWx1ZSA8LSBkZl9sYWc0ICU+JSBzbGljZSh3aGljaC5tYXgoREFURSkpICU+JSBwdWxsKERSKQ0KDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojICBQcm9wb3Rpb25hbCBzaGlmdA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBDYWxjdWxhdGUgcHJvcG9ydGlvbmFsIHZhcmlhdGlvbiBieSBwcm9wb3J0aW9uYWwgc2hpZnQgKHBhZ2UgMTQ4KTogDQpwcm9wX3ZhcmlhdGlvbiA8LSBwcmVkaWN0KG9sc19sYWc0LCBtYWNyb19zY2VuYXJpbyAlPiUgc2xpY2UoMSkpIC8gbGFzdF92YWx1ZQ0KDQojIExpZmV0aW1lIFBEIGF0IHQxIGFzIHByZXNlbnRlZCBpbiB0YWJsZSAzLjI0LCBwYWdlIDE0OTogDQpteV9wb3J0ICU+JSANCiAgbXV0YXRlKExpZmV0aW1lUERfdDEgPSByb3VuZChQRF8wKnByb3BfdmFyaWF0aW9uLCAyKSkgLT4gZGZfcGQxDQoNCmthYmxlKGRmX3BkMSkNCg0KIy0tLS0tLS0tLS0tLS0tLS0tDQojICBMb2dpdCBzaGlmdA0KIy0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KDQpgYGANCg0KDQoNCg0KDQoNCg0KDQoNCg0K