IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

delta hedging black scholes en finance


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Par défaut delta hedging black scholes en finance
    ** Bonjour **

    J'aurais besoin de votre aide car j'ai le code suivant et je ne sais comment le compléter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
     
    ########################
    # Parametres du modele #
    ########################
    S0=100 #prix initial du sous-jacent
    K=100 #prix d'exercice de l'option
    sigma=0.15 #volatilite annualisee
    mu=0.1 #rendement moyen annualise
    r=0.03 #taux d'interet annuel
    T=1 #echeance de l'option (en annees)
     
     
    ############################
    # Formule de Black-Scholes #
    ############################
    d1=function(S,K,T,r,sigma) { (log(S/K)+(r+0.5*sigma^2)*T)/(sigma*sqrt(T)) }
    d2=function(S,K,T,r,sigma) { d1(S,K,T,r,sigma)-sigma*sqrt(T) }
    FormuleBlackScholes=function(S,K,T,r,sigma) {S*pnorm(d1(S,K,T,r,sigma))-K*exp(-r*T)*pnorm(d2(S,K,T,r,sigma))}
     
     
    ###############################
    # Parametres de la couverture #
    ###############################
    nbrebalancements=seq(2,250,1) #nombre de rebalancements
    nbtraj=100 #nombre de trajectoires simulees pour chaque nombre de rebalancements fixe
     
    ErreurReplication=numeric(length(nbrebalancements)) #erreur de replication qui apparaitra dans le graphique
    erreur_par_trajectoire=numeric(nbtraj) #erreur trajectoire par trajectoire
    entree=1 #variable temporaire
     
    for(N in nbrebalancements) {
    	A COMPLETER
    	for(j in 1:nbtraj){
    		A COMPLETER
    	}
    	ErreurReplication[entree]=mean(erreur_par_trajectoire)
    	entree=entree+1
    }
    ** Merci d'avance **

  2. #2
    Membre chevronné
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Par défaut
    Citation Envoyé par damo1977 Voir le message
    svp j ai besoin de votre aide ,j ai le code suivant et je ne sais comment le completer :

    for(N in nbrebalancements) {
    A COMPLETER
    for(j in 1:nbtraj){
    A COMPLETER
    }
    ErreurReplication[entree]=mean(erreur_par_trajectoire)
    entree=entree+1
    }
    Le delta du call sur un petit intervalle de temps c'est la différence entre le prix du call donné par BS avec S=S0 et le prix du call donné par la même formule mais où S =S0 + une petite variation du prix, le tout divisé par la petite variation.

    Tu dois probablement simuler plusieurs réalisations de cette petite variation (en utilisant le fait que le prix de l'actif suit un mouvement brownien).


    Par contre comme tu n'as rien expliqué je comprend pas trop la finalité du code et ce que tu veux avoir en sortie comme graphe.

    Disons juste pour te donner une piste de départ:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    trajectoire<-c()
     
    for(N in nbrebalancements) {
    		for(j in 1:nbtraj){
     
    # sauvegarde des prix à t-1
    tampon<-trajectoire 
     
    #simulation de prix à t
    trajectoire<-trajectoire+rnorm(rentabilitepetiteperiode,sigmapetiteperiode,100)
     
    #calcul des delta
    delta_call<-(BS(S=tampon)-BS(S=trajectoire))/(trajectoire-tampon)
     
    	}
     
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Par défaut erreur de repliquation
    Pour le graphique, c'est cela qu'on cherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #############
    # Graphique #
    #############
    plot(nbrebalancements,ErreurReplication,ylim=c(-0.1,0.5),type="l",lwd=2,col="black",xlab="Nombre de rebalancements",ylab="",main="Erreur (en valeur absolue) moyenne de la delta-couverture")
    abline(h=0,col="red")
     
    pour le prix de l action on peut faire comme ça
     for( j in 1:nbSim ){
    W0 = 0;
    W = cumsum(rnorm(nbPas,0,sqrt(dt)));
    S[j,1] = S0*exp((r-0.5*sigma^2)*dt+sigma*(W[1]-W0));
    for(i in 2:nbPas){
    S[j,i] = S[j,i-1]*exp((r-0.5*sigma^2)*dt+sigma*(W[i]-W[i-1]));
    Pour cette erreur, ce qu'on cherche est la différence entre le prix du portefeuille à l'écheance qu'on calcule à l'aide de black scholes et la payoff du call : Payoff = pmax(ST-K,0);, et celui-ci pour chaque trajectoire donc on a à chaque fois une erreur.
    Mon but est d'écrire la boucle qui va me donner l'erreur pour chaque trajectoire et merci.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Par défaut erreur
    Pour le delta du call c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xt= N(d1)  # pour l'actif risque
    yt = -Kexp(-r*T)N(d2)
    donc on calcule d1 et d2 pour chaque valeur de St et après on calcule Xt la valeur du PF à l'échéance,

    et on fait la différence avec le payoff, donc pour chaque trajectoire on a une erreur de repliquation.

Discussions similaires

  1. volatilité implicite de black and scholes
    Par kaysersuze dans le forum Débutez
    Réponses: 2
    Dernier message: 04/07/2011, 14h52
  2. Réponses: 8
    Dernier message: 09/04/2004, 14h03
  3. Comment est financé developpez.com ?
    Par BuG dans le forum Evolutions du club
    Réponses: 9
    Dernier message: 19/06/2003, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo