How to solve a equation iteratively?

I am currently replicating the Synthetic Put Strategy in MATLAB according to Dichtl and Drobetz (2010) "Portfolio Insurance and Prospect Theory Investors", page 3. They say that
w_risky = (S*N(d1))/(S*N(d1)+K*exp(-r*T)*N(-d2)
where
S = Share Price
K = Strike Price
r = risk free rate
T = Time to Maturity
N(.) = standard normal cumulative distribution function
d1 = (ln(S/K)+(r+0,5*sig^2)*T)/(sig*sqrt(T))
d2 = d1-sig*sqrt(T)
So far everything is fine. and also works pretty good.
However, they say that the Stike Price K must be set such that the following holds:
K = F/W0*(S+P(K))
where
(F/W0) is the percentage floor and P(K) is the price of a put with K. This should be solved interatively and I dont know which command I could use or how to even start solving such a problem? Couldnt find anything that helped so far.
Many thanks in advance

2 commentaires

Try
fsolve(@(x) K-F/W0*(S+P(K)),x0)
You've still got undefined terms you'll have to have defined, though...particularly P(K) if it is a function.
Andi
Andi le 24 Nov 2020
thank you

Connectez-vous pour commenter.

 Réponse acceptée

Alan Stevens
Alan Stevens le 23 Nov 2020
Look at the fzero function.
Assuming you know P as a function of K, then with an initial guess for K
K0 = ...' % initial guess
K = fzero(fn,K0);
and
function Z = fn(K)
P = ...; % Calculated using K
Z = F/W0*(S + P) - K;
end
fzero will adjust K until it gets Z as close to zero as possible.

1 commentaire

Andi
Andi le 24 Nov 2020
thank you very much, that works perfectly
The only thing I had to change was adding a "@" sign
"K = fzero(@fn,K0);"

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Portfolio Optimization and Asset Allocation dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by