ALM of a non-life insurance company

From ThetaWiki

Jump to: navigation, search

Financial model

Model ALM
 
import EUR "Numeraire"
import S "Stock-price index"
import A "Asset value"
import C "Claims"
import Prem "Premium"
 
export Asset "Asset value"
export W "Portfolio weights"
export B "10y Bond"
export S_return "Stock return"
export B_1_return "1y Bond return"
export B_10_return "10y Bond return"
 
    type W float[2]
    type P float[2]
 
    Asset = A
 
    call bond_value
        export 10 to T
        export EUR to CUR
        import B_10 from P
 
    B = B_10
 
    loop 10
 
        S_0 = S/EUR
        B_1_0 = 1/EUR
        B_10_0 = B_10/EUR
 
        W = -Beta(P!, Asset_pre!)
 
        Theta 1
 
        call bond_value
            export 10 to T 
            export EUR to CUR
            import B_10 from P
 
        S_return = (S/EUR) / S_0
        B_1_return = (1/EUR) / B_1_0
        B_10_return =(B_10/EUR) / B_10_0
 
        P[1] = S
        P[2] = B_10
 
        Asset_pre = Asset + Prem/EUR - C/EUR
        Asset = (W[1] * S / EUR  + W[2]*B_10/EUR) + (Asset_pre - (W[1] * S_0 + W[2]*B_10_0))*B_1_return
 
        B = B_10
    end
end
 
Model bond_value
import T "Maturity time"
import CUR "Numeraire"
export P
 
    fork
        P = E(Bond!)/CUR
        Theta T
        Bond = 1 CUR
    end
end

Stochastic model

function state = Theta(dt, state)
 
if nargin == 0
 
    % return comments and dimensions for Theta variables
    state.S.comment = 'Stock price index';
    state.EUR.comment = 'Numeraire';
    state.sigma.comment = 'Volatility';
 
    state.r.comment = 'Risk-free rate';
    state.r_vola.comment = 'Volatility of interest-rate';
    state.r_alpha.comment = 'Mean-reversion speed of interest-rate';
    state.r_beta.comment = 'Mean-reversion level of interest-rate';
 
    state.C.coment = 'Claims';
    state.Prem.comment = 'Premium';
 
else
 
    index = round(state.time+1);
 
    % interest-rate model
    vola= state.r_vola(1);
    alpha= state.r_alpha(1);
    beta = state.r_beta(1);
 
    state.r= state.r  + vola*sqrt(dt).*randn(size(state.r));
    state.r= beta .* alpha*dt + (1-alpha*dt).*state.r;
    state.EUR = exp(-dt .* state.r) .* state.EUR ;
 
    % stock-price index model
    mu = 0.05;
    sigma = state.sigma(1);
    ret_s = exp( (mu-0.5*sigma^2)*dt + sqrt(dt)*sigma*randn(size(state.S)));
    state.S = state.S .* ret_s;
 
    % liability model
    state.C      = max(10+(0.8*randn(size(state.C))).^3,0);
    state.C      = state.C - 0.1 * 10 * (ret_s-1);
    state.Prem   = 11 - 0.3 * randn(size(state.C)).^2;           
end
Personal tools