Mercredi 25 février 2009 3 25 /02 /2009 23:05
Cette article fait partie d'une series de pré-requis nécessaire à la programmation d'un Pricer d'Option

Dans la formule de BS avec dividende continue on note N la fonction de répartition de la loi normale:


L'implémentation peut être faite de 2 manière. La 1ère, approximative, est présentée en commentaire. La seconde est celle de la fonction de répartition.

package fx.bidesign.maths
{
    import fx.bidesign.maths.Factorial;
    import fx.bidesign.maths.GammaEuler;
   
    public class ProbabilityTools
    {
        public function ProbabilityTools()
        {

        }

        public static function normalDistribution( p:Number ):Number
        {
            var f:Number;
            var u:Number;
            var s:Number;
            var t:Number;
            var s1:Number;

            u = p * p;

            if (u > 55.5)
            {
                if (p > 0) return 1;
                else return 0;
            }
            else
            {
                s = 0;
                t = 1;
                f = 3;
               
                while ( s != s1 )
                {
                    s1 = s;
                    s = s + t;
                    t = t * u / f;
                    f = f + 2;
                }
                return p * s / ( Math.sqrt( 8 * Math.atan(1) * Math.exp(u) ) ) + 0.5;
            }
        }
        public static function normalDensity( p:Number ):Number
        {
            return ( 1 / 2 * Math.PI ) * Math.exp( - ( p * p / 2 ) );
        }
        public static function chiDistribution( p:Number, deg:int )
        {
           
        }
        public static function chiDensity( p:Number, deg:int )
        {
            /*var result:Number = Math.pow( 0.5, deg/ 2 ) / GammaEuler( deg / 2 );
           
            result *= Math.pow( p, ( deg / 2 ) - 1 ) * Math.exp( - p / 2 );
           
            return result;*/
        }
        public static function tDistribution( p:Number, deg:int )
        {
           
        }
        public static function tDensity( p:Number, deg:int )
        {
            /*var result:Number = 1 / Math.sqrt( deg * Math.PI );
           
            result *= GammaEuler( ( deg + 1 ) / 2 ) / GammaEuler( deg / 2 );
           
            result *= 1 / Math.pow( 1 + ( p * p / deg ), ( deg + 1 ) / 2 );
           
            return result;*/
        }
    }
}

Cette classe appartient au package fx.bidesign.maths. Les sources seront mises à dispositions lorsques l'ensemble des tutoriaux concernant le pricer seront publiés
Par Gilles De Truchis - Publié dans : Programmation AS3
Ecrire un commentaire - Voir les commentaires - Recommander
Retour à l'accueil

Un problème d'affichage...?

Certaines pages de ce site contiennent des animations Flash qui nécessitent la dernière version du flash player.

haut de page

Présentation

Recherche

Music Player

Calendrier

Mars 2010
L M M J V S D
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
<< < > >>
 
Créer un blog sur over-blog.com - Contact - C.G.U. - Signaler un abus