Risk-loaded prices from simulated losses
risk_loaded_price.Rdrisk_loaded_price() prices one cover from its loss draws;
price_portfolio() prices a portfolio and allocates the price to its
components. The assets backing the loss are the distortion risk measure
assets of it. The premium is either the pricing distortion
distortion of the loss, or set by a constant cost of capital r on
the capital a - P, which gives P = (E[X] + r a) / (1 + r).
Usage
risk_loaded_price(x, assets, cost_of_capital = NULL, distortion = NULL)
price_portfolio(x, assets, cost_of_capital = NULL, distortion = NULL)Arguments
- x
A sampled or a predictive_distribution (its total) for
risk_loaded_price(); a predictive_distribution whose components add up to the portfolio (segments or covers, not gross, ceded and net side by side) forprice_portfolio().- assets
A distortion that sets the assets, for example
distortion("tvar", 0.99).- cost_of_capital
A positive rate, or
NULL.- distortion
A pricing distortion, or
NULL; it must load less thanassets. Give exactly one ofcost_of_capitalanddistortion.
Value
risk_loaded_price(): a list with expected_loss, premium,
assets, margin (P - E[X]), capital (a - P), loss_ratio and
return_on_capital. price_portfolio(): a list with total (the
portfolio's price, as above), diversification (the sum of standalone
premiums less the portfolio premium) and by_component, the keys
data frame of x with the allocated expected_loss, premium,
assets, margin, capital and return_on_capital, and
standalone_premium.
Details
In a portfolio, premium and assets are each allocated by co-measure (the natural allocation of Mildenhall and Major, 2022): component prices add up to the portfolio's, a component that diversifies the portfolio is priced below its standalone price, and with a cost of capital every component earns the rate on its allocated capital.
Examples
risk_loaded_price(sampled(c(0, 0, 2, 6)), distortion("tvar", 0.5),
cost_of_capital = 0.25)$premium
#> [1] 2.4
pd <- predictive_distribution(
matrix(c(0, 1, 4, 8, 2, 1, 0, 0), ncol = 2),
data.frame(cover = c("a", "b"))
)
p <- price_portfolio(pd, distortion("tvar", 0.5), cost_of_capital = 0.1)
p$by_component
#> cover expected_loss premium assets margin capital return_on_capital
#> 1 a 3.25 3.5000000 6 0.25000000 2.5000000 0.1
#> 2 b 0.75 0.6818182 0 -0.06818182 -0.6818182 0.1
#> standalone_premium
#> 1 3.5000000
#> 2 0.8181818
p$diversification
#> [1] 0.1363636