schema d'euler d'une equation différentiel stochastique - C++ - Programmation
Marsh Posté le 27-01-2008 à 13:28:57
As-tu un souci avec l'algorithme ?
Ou bien une difficulté pour le retranscrire sous forme de code C++ ?
Merci de préciser ta demande. Par contre, ici on ne donne pas de source toute faite, on aide juste les intervenants à trouver la solution à leurs problèmes.
Marsh Posté le 27-01-2008 à 13:37:40
en faite j'ai implémenté moi même l'algo mais ça en marche pas
Code :
|
je veux coder cette équation: dST=rdt+sigdWt
Marsh Posté le 27-01-2008 à 13:39:22
pour générer la loi normal j'utilise le code ci-dessous :
Code :
|
Marsh Posté le 27-01-2008 à 19:23:37
correction :
Code :
|
Marsh Posté le 30-01-2008 à 13:18:10
up
Marsh Posté le 30-01-2008 à 21:04:56
Tu cherches "Euler integration" dans gogol, tu devrais pouvoir trouver ça.
Marsh Posté le 30-01-2008 à 21:55:45
euh là je parle d'équation différentielle stochastique, pas d'équa diff de base
Marsh Posté le 01-02-2008 à 20:21:41
Gogol "Numerical Solution of Stochastic Differential Equations"
Marsh Posté le 01-02-2008 à 21:04:04
merci , mais déjà fait
Marsh Posté le 02-02-2008 à 13:23:22
Bah c'est très spécifique comme question, ca m'etonnerait que quelqu'un ici puisse t'aider à résoudre ton probleme (on est en catégorie programmation, pas mathematiques ).
Tu as essayé de contacter un chercheur ou un laboratoire qui pourrait t'aider ? Généralement ils n'hésitent pas à te répondre, ne serait-ce que pour te conseiller des lectures ou des personnes à joindre.
Marsh Posté le 08-02-2008 à 10:44:51
Bon je suis une bonne âme donc on reprend:
ton EDS est:
dS=rdt + sigmadW
donc ST=S0+rT+sigmaWT.
En plus un mouvement brownien ca commence à 0, donc l'initialisation de ton VA c'est 0. (3 erreurs de corrigées)
donc pour ta boucle c'est
Code :
|
Ensuite puisque tu utilise une volatilité constante (sigma) il est absolument inutile de faire une boucle il suffit de faire un pas. Ensuite au vu des noms de fonction, je pense que tu t'es planté dans la définition de ton EDS, ca ne m'étonnerait pas que ce soit plutôt:
dS/S=rdt+sigmadW (bref une diffusion lognormale)
et donc en utilisant le lemme d'Itô etc...
ST=S0*exp((r-0.5*sigma^2)*T+sigma*WT)
et là encore tu as seulement besoin d'un seul saut, je te laisse le soin d'écrire la relation dans ton algo. Enfin bref il faudrait sans doute revoir tes définitions...
Quoiqu'il en soit tu as besoin de faire une boucle pour l'algo d'Euler si ta volatilité dépend du temps i.e. sigma=sigma_t, et qu'elle a le bon goût d'être constante par morceaux. Si ta volatilité est "path-dependent" tu dois utilisé un algorithme plus performant afin de réduire l'erreur systématique, style Milstein.
Voilà ce devrait être tout, quoiqu'il en soit revoit ton cours de calcul sto...
Marsh Posté le 15-02-2008 à 13:10:39
merci non
Marsh Posté le 27-01-2008 à 13:11:03
hello,
quelqu'un aurait un lien où je pourrais trouver le source en C++ de la méthode indiqué dans le titre
Merci.
Message édité par frenchtoucco le 27-01-2008 à 13:11:22
---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.