Здравствуйте, помогите, пожалуйста, разобраться с реализацией модели Мертона. Оценивается вероятность дефолта фирмы, торгующей акциями в рублях и выпустившей долговое обязательство в долларах. На одном из этапов оценки возникает следующая оптимизационная задача: нужно оценить параметры
![$\mu_V$ $\mu_V$](https://dxdy-04.korotkov.co.uk/f/f/f/7/ff7608570a1f6f083f711d0c014489c382.png)
и
![$\sigma_V$ $\sigma_V$](https://dxdy-04.korotkov.co.uk/f/3/6/0/360ad1568e2475c2417dd5611f60881982.png)
с помощью ММП. Функция правдоподобия выглядит следующим образом:
![$$L = \sum_{t=1}^T\ln[\frac {1}{\sqrt{\sigma_V^2\Delta}}e^{-\frac {(r_t^V-(\mu_V-\sigma_V^2/2))^2}{2\sigma_V^2\Delta}}]$$ $$L = \sum_{t=1}^T\ln[\frac {1}{\sqrt{\sigma_V^2\Delta}}e^{-\frac {(r_t^V-(\mu_V-\sigma_V^2/2))^2}{2\sigma_V^2\Delta}}]$$](https://dxdy-03.korotkov.co.uk/f/e/2/0/e20de2eb78fcd4154f3c87f0e01e6e2a82.png)
Здесь
![$\Delta$ $\Delta$](https://dxdy-04.korotkov.co.uk/f/7/e/9/7e9fe18dc67705c858c077c5ee292ab482.png)
- это заданный интервал, через который происходят наблюдения (1/365 или 1/260).
![$r_t^V=\ln(\frac{V_t}{V_{t-1}})$ $r_t^V=\ln(\frac{V_t}{V_{t-1}})$](https://dxdy-03.korotkov.co.uk/f/e/e/1/ee15c8b75ba82c9a4d0e5bbb7ccc011c82.png)
- это непрерывная доходность активов фирмы, в ней, в общем-то, и заключаются мои проблемы. Стоимость активов является не наблюдаемым параметром. Его необходимо оценивать с помощью котировок акций (обозначим из через
![$E_t$ $E_t$](https://dxdy-04.korotkov.co.uk/f/f/3/2/f32d02b49d314974b51b17b35cbf7fc082.png)
). Предполагается, что стоимость акций
![$E_t$ $E_t$](https://dxdy-04.korotkov.co.uk/f/f/3/2/f32d02b49d314974b51b17b35cbf7fc082.png)
и активов фирмы
![$V_t$ $V_t$](https://dxdy-04.korotkov.co.uk/f/7/c/0/7c0bd77fe526a89b6011bf8ab3e2131182.png)
связаны следующим соотношением (это опцион на обмен активами):
![$$E_t=V_tN(d_1)-L_te^{-(r-r_f)(T-t)}N(d_2)$$ $$E_t=V_tN(d_1)-L_te^{-(r-r_f)(T-t)}N(d_2)$$](https://dxdy-04.korotkov.co.uk/f/f/f/d/ffdca56a624732db0945f554fb4e09f682.png)
где
![$d_1=\frac{\ln(V_t/L_t)-(r-r_f-\sigma_Y^2/2)(T-t)}{\sigma_Y\sqrt{T-t}}$ $d_1=\frac{\ln(V_t/L_t)-(r-r_f-\sigma_Y^2/2)(T-t)}{\sigma_Y\sqrt{T-t}}$](https://dxdy-02.korotkov.co.uk/f/5/c/a/5caf5a664658fb97e5e247bb2a45667782.png)
,
![$d_2=d_1-\sigma_Y\sqrt{T-t}$ $d_2=d_1-\sigma_Y\sqrt{T-t}$](https://dxdy-03.korotkov.co.uk/f/2/f/9/2f9d67e200e3a7d3b28aca13201f06b182.png)
,
![$\sigma_Y^2=\sigma_V^2+\sigma_L^2$ $\sigma_Y^2=\sigma_V^2+\sigma_L^2$](https://dxdy-03.korotkov.co.uk/f/a/8/1/a8119ee1e74e926c5b63e9e0d9c845f582.png)
.
![$\sigma_L^2$ $\sigma_L^2$](https://dxdy-03.korotkov.co.uk/f/a/d/0/ad024eb672fb7d5a1d5b2ada29e1ab4a82.png)
и
![$L_t$ $L_t$](https://dxdy-04.korotkov.co.uk/f/b/c/d/bcd81920696e26093495d90eb4cd7b1b82.png)
известны (они были оценены на предыдущем этапе), это волатильность обменного курса и номинал облигации, умноженный на обменный курс.
![$r$ $r$](https://dxdy-01.korotkov.co.uk/f/8/9/f/89f2e0d2d24bcf44db73aab8fc03252c82.png)
и
![$r_f$ $r_f$](https://dxdy-02.korotkov.co.uk/f/9/c/e/9ce9e8495977b74d8c09d327001d30cc82.png)
- безрисковые ставки в России и США.
Итак, проблема в том, что, как я понимаю, выразить напрямую
![$V_t$ $V_t$](https://dxdy-04.korotkov.co.uk/f/7/c/0/7c0bd77fe526a89b6011bf8ab3e2131182.png)
через
![$\sigma_V$ $\sigma_V$](https://dxdy-04.korotkov.co.uk/f/3/6/0/360ad1568e2475c2417dd5611f60881982.png)
и подставить её в функцию правдоподобия я не могу. А значит, как мне видится, есть задача, где функционал стремится к максимуму, и есть большое число ограничений (сколько наблюдений, столько и ограничений). Я пробовала посчитать эту задачу в GAUSSе, но он выдал ошибку, excel тоже сказал, что параметров слишком много.
Код в GAUSSе выглядел следующим образом:
Код:
new;cls;
library maxlik;
S = loadd("C:\\Data\\Raspadskaya.dat");
USD = loadd("C:\\Data\\USDRaspadskaya.dat");
retX = ln(USD[1:rows(USD)-1,1])-ln(USD[2:rows(USD),1]);
r = 0.070301;
rf = 0.0039;
K = 300000000;
NumShares = 780799808;
E = S*NumShares;
L = K*USD;
T = 2.8189;
del = 1/365;
start = ones(rows(E)+2,1);
_sqp_EqProc = &eqproc;
{parV,fV,lagrV,retcodeV} = sqpSolve(&fct,start);
muV = parV[1];
sigmaV = parV[2];
proc fct(_muV,_sigmaV,_V);
local _retV,_aux,_aux1;
_retV = ln(_V[1:rows(_V)-1,1])-ln(_V[2:rows(_V),1]);
_aux = ln(1/(_sigmaV^2*del)^0.5*exp(-((_retV-(_muV-(_sigmaV^2)/2))^2)/(2*_sigmaV^2*del)));
_aux1 = -sumc(_aux);
retp(_aux1);
endp;
proc eqproc(_sigmaV,_V);
local _sigmaY,_d1,_d2,f1;
_sigmaY = (_sigmaV^2 + sigmaL^2)^0.5;
_d1 = (ln(_V./L)-T*(r-rf-(_sigmaY^2/2)))/(_sigmaY*(T^0.5));
_d2 = _d1 - _sigmaY*(T^0.5);
f1 = E - _V.*cdfn(_d1)+(L.*cdfn(_d2))*exp(-(r-rf)*T);
retp(f1);
endp;
Отмечу, что в GAUSSе есть библиотека maxlik, но как её использовать в данном случае, я не понимаю(((
Вот что не так???(((