syms omega j theta sigma
k=[90 94 98 102 106 110]; % Strike prices
putprices=[.1606 .2806 .9285 2.8801 6.1523 10.0147]; % Put prices at each strike
mustar = log(100)-sigma.^2/2-omega.*(exp(-theta)-1); % risk-neutral mean
Es1j=exp(mustar-theta.*j+sigma.^2./2); % Expected value of stock price at state j 1 period from now
x1=(log(k)-(mustar-theta.*j))./sigma; % the first normcdf value
x2=(log(k)-(mustar-theta.*j)-sigma.^2)./sigma; % the second normcdf value
qpkandj = k.*normcdf(x1)-Es1j.*normcdf(x2); % combination of normcdfs and strike prices and expected value of stock price 1 peroid from now
qpk=exp(-omega).*omega.^j./factorial(j).*qpkandj; % Poisson formula
eqns = symsum(qpk,j,0,inf)== putprices % Continuation of Poisson formula
assume(omega > 0)
assume(theta, 'real') 
assume(sigma, 'real')
S = solve(eqns, [omega theta sigma], 'Real', true, 'ReturnConditions', true)
S.omega
S.theta
S.sigma

Попытка работать над моделью смеси Пуассона, чтобы найти значения трех параметров (омега, тета и сигма), которые соответствуют выходным данным уравнения Пуассона для цен на путы в третьей строке. Всякий раз, когда я запускаю это, я получаю очень, очень длинный список условий, и я пытался поместить все это в условие предположения, и это не имело никакого значения. У кого-нибудь есть идеи, что происходит или как мне это сделать?

0
Khalid 19 Ноя 2019 в 01:01

1 ответ

Matlab напечатает список условий, потому что вы не добавляете точку с запятой. Чтобы не печатать список условий, просто добавьте точку с запятой следующим образом:

eqns = symsum(qpk,j,0,inf) == putprices; % Continuation of Poisson formula
0
Mohammad nagdawi 19 Ноя 2019 в 04:33