% This is material illustrating the methods from the book
% Financial Modelling  - Theory, Implementation and Practice with Matlab
% source
% Wiley Finance Series
% ISBN 978-0-470-74489-5
%
% Date: 02.05.2012
%
% Authors:  Joerg Kienitz
%           Daniel Wetterau
%
% Please send comments, suggestions, bugs, code etc. to
% kienitzwetterau_FinModelling@gmx.de
%
% (C) Joerg Kienitz, Daniel Wetterau
% 
% Since this piece of code is distributed via the mathworks file-exchange
% it is covered by the BSD license 
%
% This code is being provided solely for information and general 
% illustrative purposes. The authors will not be responsible for the 
% consequences of reliance upon using the code or for numbers produced 
% from using the code. 



function y = pcev(t,f,f0,sigma, beta)
%Probability Distribution from CEV dynamics
%   dS(t) = sigma S(t)^beta dW(t)
%   t = maturity
%   f0 = spot 
%   f = forward
%   sigma = volatility
%   beta = CEV exponent

nu = sigma^2*t;
k = 2 ./(nu * (2-beta)^2);
x = k.*f0^(2-beta);
w = k.*f.^(2-beta); 

q = 1 / ( 2 - beta);

wbess = (2-beta) .* (x .* w.^(1-2.*beta)).^(1/(4-2*beta)) ...
    .* exp(-x-w) .*k .^(1 ./(2-beta));
   
Z = 2 * sqrt(x.*w);

bess = besseli(q,Z);

y= wbess.* bess;


end

