Mercredi 8 avril 2009 3 08 /04 /Avr /2009 17:41
- Publié dans : Les Options

Présentons pour commencer les différents profils de gain des options. Les options sont le droit et non l'obligation d'acheter ou de vendre à échéance un sous-jacent. On peut donc acheter le droit d'acheter à échéance (nous nommerons cette opération LONG CALL et C0 la prime en t = 0), acheter le droit vendre à échéance (nous nommerons cette opération LONG PUT et P0 la prime en t  = 0), et inversement vendre le droit d'acheter à terme (nous nommerons cette opération SHORT CALL), ainsi  que vendre le droit de vendre à terme (nous nommerons cette opération SHORT PUT).

On peut combiner ces profils de gain pour chercher à minimiser les pertes. 

 

LONG Straddle

Cette stratégie se compose d'un LONG CALL et d'un LONG PUT de même strike price (K) et de même échéance. On monte cette stratégie lorsqu'on anticipe une forte variation à la hausse ou à la baisse du cours du sous-jacent. Si le spot price s'écarte suffisamment de K on enregistre un gain et si le spot price se rapproche de K la perte tend vers -C0-P0.



SHORT Straddle

Cette stratégie se compose d'un SHORT CALL et d'un SHORT PUT de même strike price (K) et de même échéance. Elle correspond aux anticipations inverses du LONG Straddle


 

LONG Strangle (ou bottom vertical combination)

Cette stratégie se compose d'un LONG CALL (OTM) et d'un LONG PUT (OTM) de strike price

(K2, 1) différent mais de même échéance avec K1 < K2. L'investisseur va ici limiter ses pertes mais anticipe une variation plus important encore que dans le cas du Straddle.

SHORT Strangle (ou top vertical combination)

Cette stratégie se compose d'un SHORT CALL (OTM) et d'un SHORT PUT (OTM) de strike price (K2, 1) différent mais de même échéance avec K1 < K2. Elle correspond aux anticipations inverses du LONG Strangle.

Strip

Cette stratégie se compose d'un LONG CALL et deux LONG PUT de même strike price (K) et de même échéance. Elle correspond aux anticipations d'une forte variation du cours à la hausse ou à la baisse mais avec une préférence à la baisse.

Strap

Cette stratégie se compose d'un LONG PUT et deux LONG CALL de même strike price (K) et de même échéance. Elle correspond aux anticipations d'une forte variation du cours à la hausse ou à la baisse mais avec une préférence à la hausse.

Bull Call Spread

Le bull spread est l'un des spreads les plus populaires. Il est composé d'un LONG CALL (ITM) à un prix d'exercice donné et d'un SHORT CALL (OTM) à un prix d'exercice supérieur, les deux portant sur le même sous-jacent et la même date d'échéance. L'agent anticipe une hausse modérée. Cette stratégie limite les avantages en cas de hausse  et les pertes en cas de baisse.

Remarque: Il existe aussi un Bull Put Spread créé  à partir d'un LONG PUT (OTM) avec un prix d'exercice faible et d'un SHORT PUT (ITM) à un prix d'exercice supérieur. Contrairement au Bull Call Spread, il engendre un flux initial positif (en ignorant les dépôts de garantie) et un flux final négatif ou nul. C'est pourquoi, il est aussi appelé Bull Put Credit Spread.

 

Bear Call Spread 

Le bear spread est un des spreads les plus populaires également. Il est composé d'un LONG CALL (OTM) à un prix d'exercice donné et d'un SHORT CALL (ITM) à un prix d'exercice inférieur, les deux portant sur le même sous-jacent et la même date d'échéance. L'agent anticipe une baisse modérée. Cette stratégie limite les avantages en cas de baisse  et les pertes en cas de hausse.

Remarque: Il existe aussi un Bear Put Spread créé  à partir d'un LONG PUT (ITM) avec un prix d'exercice faible et d'un SHORT PUT (OTM) à un prix d'exercice inférieur. Contrairement aux Bear Call Spread, ils engendrent un flux initial positif (en ignorant les dépôts de garantie) et un flux final négatif ou nul. C'est pourquoi, il est aussi appelé Bear Put Credit Spread.

 

LONG CALL Butterfly Spread

Cette stratégie va impliquer 4 options et 3 strike price différents (K1< K2< K3):

  • C0,1: Un LONG CALL (ITM) pour K1
  • C0,2 = C0,3:Deux SHORT CALL (ATM) pour K2 (K2 = (K1 + K3) / 2)
  • C0,4: Un LONG CALL (OTM) pour K3

Le bénéfice est d'autant plus grand que le cours tend vers K2 mais les pertes restent limitées si le cours s'écarte même fortement. L'investisseur anticipe donc une faible variation du cours.

 

De même il existe une stratégie LONG PUT Butterfly Spread composée d'un LONG PUT (OTM), de deux SHORT PUT (ATM) et d'un LONG PUT (ITM).

 

SHORT CALL Butterfly Spread 

Cette stratégie va impliquer 4 options et 3 strike price différents (K1< K2< K3):

  • C0,1: Un SHORT CALL (ITM) pour K1
  • C0,2 = C0,3:Deux LONG CALL (ATM) pour K2 (K2 = (K1 + K3) / 2)
  • C0,4: Un SHORT CALL (OTM) pour K3

Le bénéfice est d'autant plus grand que le cours tend vers K2 mais les pertes restent limitées si le cours s'écarte même fortement. L'acheteur anticipe donc une faible variation du cours.

 

De même il existe une stratégie SHORT PUT Butterfly Spread composée d'un SHORT PUT (ITM), de deux LONG PUT (ATM) et d'un SHORT PUT (OTM).

 

LONG Condor 

Une stratégie LONG Condor va se composer ainsi:

1.       SHORT CALL (ITM)

2.       LONG CALL (ITM)

3.       SHORT CALL (OTM)

4.       LONG CALL (OTM)

Avec K2 < K1 < K3 < K4

C'est en fait la combinaison d'un Bull Call Spread et d'un Bear Call Spread

SHORT Condor 

Une stratégie SHORT Condor va se composer ainsi:

1.       LONG CALL (ITM)

2.       SHORT CALL (ITM)

3.       LONG CALL (OTM)

4.       SHORT CALL (OTM)

Avec K2 < K1 < K3 < K4

C'est en fait la combinaison d'un Bear Put Spread  et d'un Bull Put Spread 

 

Conclusion 

Les stratégies d'options peuvent se décomposer en diverses catégories. Les stratégies Spread sont des options pour lesquelles on prend des positions sur au moins deux options de même type (Bull Spread, Bear Spread, Butterfly Spread...). Les stratégies de combinaison consistent à prendre position sur les deux types d'options, Call et Put (Strangle, Straddle, Strip, Strap...). Il existe d'autres types de stratégies, d'autres classifications de stratégies et surtout d'autres stratégies plus complexes. Les Calendar Spread, par exemple,  désignent des stratégies sur des options dont les échéances sont différentes mais le Strike price est identique. Les Calendar Spread peuvent donc être neutres (neutral) si les options sont ATM, haussiers (bullish) si les options ont un strike price au dessus du cours, et baissiers (bearish) si les options ont un strike price au dessous du cours. On peut complexifier encore en montant des stratégies où les strike price sont différents ainsi que les dates d'échéance: C'est le cas des Diagonal Spread.

 

 

Sources:

R. Portait and Patrice Poncet, Finance de marché, intruments base, produits dérivés, portefeuilles et riques, Dalloz (08)
John Hull, Options, Futures et autres actifs dérivés, Pearson Education, (07)

Par Gilles De Truchis
Ecrire un commentaire - Voir les 1 commentaires
Dimanche 5 avril 2009 7 05 /04 /Avr /2009 15:29
- Publié dans : Programmation AS3

Qu'il me soit permis de m'éloigner un peu de la finance et de présenter, dans un registre bien plus léger, un tutoriel sur l'utilisation des nouvelles fonctionnalités de la classe Sound sous le flash player 10.

Les développeurs AS3 que vous êtes auront bien-sûr constaté que la classe Sound diffuse, depuis la sortie de flash player 10, un nouvel événement: SampleData. Cet événement est distribué lorsque le lecteur demande de nouvelles données audio et permet de gérer le son généré dynamiquement ou lu. Dans cet environnement, l'objet Sound ne contient pas vraiment de données audio. Il agit en fait en tant que socket pour les données audio qui lui sont distribuées en continu par l'intermédiaire de la fonction écouteur. On va ainsi être en mesure de collecter, via des BytesArray, des échantillons du son généré ou lu. Le flash player 10 inclus parmi ses nouveautés une nouvelle fonctionnalité qui manquait cruellement aux anciennes versions: la méthode FileReference.save( data:*, defaultFileName:String = null). Les données collectées, qui en cet instant sont au format RAW (Real Audio Wrapper), vont alors pouvoir être encodées puis écrites en dur, via cette méthode, sur le disque. Pour plus de précision sur le format des données, on pourra se tourner vers les PCM (Modulation d'impulsion codée). Enfin présentons la méthode star de ce tutoriel: Sound.extract(target:ByteArray, length:Number, startPosition:Number = -1):Number. Cette méthode doit être employée lorsque l'on gére un son généré dynamiquement ou lu, à l'aide d'une fonction que l'on affecte à l'événement SampleData pour un autre objet Sound. En d'autres termes, on va utiliser cette méthode pour extraire les données audio d'un objet Sound. Le flash player autorise un fourchette pour le nombre d'échantillons à fournir: [2048, 8192]. La qualité sera bien-sûr maximal avec 8192.


Pour commencer, nous allons déclarer les objets dont nous avons besoins:


var sound:Sound = new Sound();
var dynamicSound:Sound = new Sound();
var soundChannel:SoundChannel = new SoundChannel();
var samples:ByteArray = new ByteArray();
var sndBytes:ByteArray = new ByteArray();
var myFileRefSave:FileReference = new FileReference();


Sur la scène nous disposons de 2 boutons, l'un de label "Record" et d'occurence "record" sert à lancer le son et collecter les échantillons et l'autre de label "Save" et d'occurence "save" sert à appeler la méthode save de FileReference.


record.addEventListener( MouseEvent.MOUSE_DOWN, startRecord );

function startRecord( pEvt:MouseEvent )
{
    sound = new Track();
   
    dynamicSound.addEventListener( SampleDataEvent.SAMPLE_DATA, sampleData );
    soundChannel = dynamicSound.play();
   
    save.addEventListener( MouseEvent.MOUSE_DOWN, stopRecord );
}

function sampleData( pEvt:SampleDataEvent ):void
{
    samples.position = 0;
   
    var len:Number = sound.extract( samples, 8192 );
   
    var left:Number;
    var right:Number;
   
    samples.position = 0;
   
    sndBytes.writeBytes( samples );
   
    for ( var c:int=0; c < len; c++ )
    {
        left = samples.readFloat();
        right = samples.readFloat();
       
        pEvt.data.writeFloat( left );
        pEvt.data.writeFloat( right );
    }
}

function stopRecord( pEvt:MouseEvent )
{
    myFileRefSave.save( FxWaveEncoder.encoder( sndBytes ), "snd.wav" );
}


Notons que Track est le nom de classe (ou liaison pour les anciens d'AS2) d'un son placé dans la librairie.
Avant d'être écrit on converti le son via la méthode static:
FxWaveEncoder.encoder( pSamples:ByteArray, channels:int = 2, bits:int = 16, rate:int = 44100 ):ByteArray

Voici la classe FxWaveEncoder qui permet d'encoder le format. Je remercie les membres de Médiabox qui m'ont aidé à calibrer cette classe:


package
{
    import flash.utils.Endian;
    import flash.utils.ByteArray;
   
    import flash.events.Event;

    public class FxWaveEncoder
    {
       
        // writeHeader ( 2, 16, 44100 )
        static public function encoder( pSamples:ByteArray, channels:int = 2, bits:int = 16, rate:int = 44100 ):ByteArray
        {
            var samples:ByteArray = new ByteArray();
           
            samples.writeBytes( FxWaveEncoder.convert( pSamples ) );
           
            var bytes: ByteArray = new ByteArray();
           
            bytes.endian = Endian.LITTLE_ENDIAN;
           
            bytes.writeUTFBytes( 'RIFF' );
           
            bytes.writeInt( samples.length - 8 );
           
            bytes.writeUTFBytes( 'WAVE' );
           
            bytes.writeUTFBytes( 'fmt ' );
           
            bytes.writeInt( int( 16 ) );
           
            bytes.writeShort( int( 1 ) );
           
            bytes.writeShort( channels );
           
            bytes.writeInt( rate );
           
            bytes.writeInt( int( rate * channels * ( bits / 8 ) ) );
           
            bytes.writeShort( int( channels * ( bits / 8 ) ) );
           
            bytes.writeShort( bits );
           
            bytes.writeUTFBytes( 'data' );
           
            bytes.writeInt( samples.length - 44 );
           
            bytes.writeBytes( samples );
           
            bytes.position = 0;
           
            return bytes;
        }
        static private function convert( pBytes:ByteArray ):ByteArray
        {
            var ba:ByteArray = new ByteArray ( ) ;
           
            ba.endian = Endian.LITTLE_ENDIAN;
           
            pBytes.position = 0;
           
            while( pBytes.position < pBytes.length ) ba.writeShort( pBytes.readFloat() * 32767 );
           
            return ba;
        }
    }
}


Pour les détails des chunks on pourra se référer aux liens de bas de page de cette article: WAVE
Ce n'est pas très sexy mais bien pratique.

Et voici le résultat:

Par Gilles De Truchis
Ecrire un commentaire - Voir les 0 commentaires

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

Varennes EcoFin

Mon site internet migre vers une nouvelle adresse: Varennes EcoFin. Il s'agit d'un site en flash recentré sur mes travaux de recherches, ma thèse et des resources pour les étudiants (programmes, bases de données etc.). Pour accéder à la version sans flash (HTML5): Varennes EcoFin Sky.

Présentation

Bienvenue

Bienvenue sur Ceteris Paribus... Ce site traite d'actualité économique, d'économétrie,  de macroéconomie, de finance, mais également de programmation Flash (actionscript 3). Vous y trouverez donc, entre autres, des ressources informatiques pour des applications financières, mais également des articles techniques sur divers modèles économétriques, financiers et macroéconomiques.

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

En préparation...

Modèle de regime-switching: Volatility-switching et non-linearité.
VAR structurels et restriction par hétéroscedasticité.
Modèle Markov-Switching ARFIMA

Recherche

 
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Signaler un abus - Articles les plus commentés