ProRealTime
On y parle Livres et Outils de Trading, Station de Trading, des livres lus sur le trading, de notre vision du trader et de son métier

Cotation des options sur IG Market

par maroxe » 31 Déc 2014 23:41

Bonjour,

J'ai découvert aujoud'hui que IG Market permet de trader les options. Voici un exemple des call et put proposés à échéance journalières aujourd'hui à midi:


A l'aide d'un programme python j'essaye de calculer la volatilité implicite utilisé par IG pour faire son calcul, que je trace en fonction du strike:

Je n'arrive pas à expliquer la forme de cette courbe, tout indice est le bienvenu.
J'utilise le modèle de BlackScholes classique, et voici les paramètres du modèle:
  • taux d'interêt nul (ça ne change pas grand chose pour une période aussi courte, si?)
  • temps avant l'échéance égale à 1 / (365*2) (une demi journée)
  • cours de l'actif égale à S0=12125.6

Cordialement

Re: Cotation des options sur IG Market

par adibool » 01 Jan 2015 10:09

C'est pour cela qu'on a tant de mal à pricer les options IG . Le "smile" de volatilité n'en ai pas vraiment un .

Quel programme Python utilises tu ? Home made ou internet?

Ca serait intéressant de reporter le graphique a différent moment pour voir si le "smile" change de forme.

Re: Cotation des options sur IG Market

par Bella Swan » 01 Jan 2015 15:22

maroxe a écrit:Je n'arrive pas à expliquer la forme de cette courbe, tout indice est le bienvenu.
J'utilise le modèle de BlackScholes classique,

Les travaux de Peter Tankov ?

Re: Cotation des options sur IG Market

par maroxe » 01 Jan 2015 18:58

adibool a écrit:C'est pour cela qu'on a tant de mal à pricer les options IG . Le "smile" de volatilité n'en ai pas vraiment un .

Quel programme Python utilises tu ? Home made ou internet?

Ca serait intéressant de reporter le graphique a différent moment pour voir si le "smile" change de forme.

J'utlise un petit scipt fait maison:
Code: Tout sélectionner
import numpy as np
# Strike
K = np.ar ([12020, 12040, 12060, 12080, 12100, 12120, 12130, 12140, 12150, 12160, 12170, 12180, 12190, 12200, 12220, 12240, 12260, 12280, 12300])

# Pris du call correspondant (bid+ask / 2)
p_call = np.ar ([105.6, 85.6, 65.7, 46.1, 28.2, 13.9, 8.7, 5.2, 19.1, 26.7, 35.3, 44.5, 54.1, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5] )


S0 = 12125.6 # cours actuel
r = 0.0 # taux d'interet
t = 1./365 # temps avant l'echeance
div = 0 # dividende


Vol = [] # Vol implicite
# On teste toutes les valeurs de 0 a 100% avec un pas de 1
# On garde celle qui minimise l'ecart entre le prix reel et le prix de IG
for i, c in enumerate(p_call):
    X = np.arange(0., 1., 0.01)
    Y = [  abs(call(S0, K[i], v, r, t, div) - c) for v in X]
    Vol += [np.argmin(Y)]

# tracer
import matplotlib.pyplot as plt   
plt.plot(K, Vol, 'ro-')
plt.show()

La fonction call est presente dans le fichier blackscholes.py que j'ai récupérer sur internet (la flemme de retaper la formule)
Code: Tout sélectionner
import scipy
import math
from scipy import stats

""" Price an option using the Black-Scholes model.
s: initial stock price
k: strike price
t: expiration time
v: volatility
r: risk-free rate
div: dividend
cp: +1/-1 for call/put
"""

d1 = lambda s,k,v,r,t,div : (scipy.log(s/k)+(r-div+0.5*math.pow(v,2))*t)/(v*scipy.sqrt(t))
d2 = lambda s,k,v,r,t,div : d1(s,k,v,r,t,div) - v*scipy.sqrt(t)
call = lambda s,k,v,r,t,div : (s*math.exp(-div*t)*stats.norm.cdf(d1(s,k,v,r,t,div))) - (k*scipy.exp(-r*t)*stats.norm.cdf(d2(s,k,v,r,t,div)))


Je vais essayer de récupérer les cotes pour d'autres périodes pour voir si ça change. (Ceci dit, vous connaisez une méthode pour récupérer les prix de IG sous forme texte sans avoir a les rentrer un à un comme je l'ai fait ici? )

Bella Swan a écrit:
maroxe a écrit:Je n'arrive pas à expliquer la forme de cette courbe, tout indice est le bienvenu.
J'utilise le modèle de BlackScholes classique,

Les travaux de Peter Tankov ?
C'est possible, c'était mon prof de TD, mais il a jamais dit que le modèle était basé sur ses travaux.
Ceci dit, le modèle est simple pour les options vanilles comme ici, comme les options call européennes ont le même prix que les américaines, le prix est donné par:
Image

Re: Cotation des options sur IG Market

par ladefense92800 » 01 Jan 2015 19:40

c est rogue le specialiste des options ici .

Re: Cotation des options sur IG Market

par Bella Swan » 01 Jan 2015 19:44

maroxe a écrit:C'est possible, c'était mon prof de TD, mais il a jamais dit que le modèle était basé sur ses travaux

Je ne disais pas ça évidemment !!! Je sous-entendais que Tankov et le labo de probas de Jussieu avaient avancé sur ce problème. Peut-être y trouverais-tu des pistes nouvelles ?

Re: Cotation des options sur IG Market

par adibool » 01 Jan 2015 20:00

maroxe a écrit:
adibool a écrit:C'est pour cela qu'on a tant de mal à pricer les options IG . Le "smile" de volatilité n'en ai pas vraiment un .

Quel programme Python utilises tu ? Home made ou internet?

Ca serait intéressant de reporter le graphique a différent moment pour voir si le "smile" change de forme.

J'utlise un petit scipt fait maison:
Code: Tout sélectionner
import numpy as np
# Strike
K = np.ar ([12020, 12040, 12060, 12080, 12100, 12120, 12130, 12140, 12150, 12160, 12170, 12180, 12190, 12200, 12220, 12240, 12260, 12280, 12300])

# Pris du call correspondant (bid+ask / 2)
p_call = np.ar ([105.6, 85.6, 65.7, 46.1, 28.2, 13.9, 8.7, 5.2, 19.1, 26.7, 35.3, 44.5, 54.1, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5] )


S0 = 12125.6 # cours actuel
r = 0.0 # taux d'interet
t = 1./365 # temps avant l'echeance
div = 0 # dividende


Vol = [] # Vol implicite
# On teste toutes les valeurs de 0 a 100% avec un pas de 1
# On garde celle qui minimise l'ecart entre le prix reel et le prix de IG
for i, c in enumerate(p_call):
    X = np.arange(0., 1., 0.01)
    Y = [  abs(call(S0, K[i], v, r, t, div) - c) for v in X]
    Vol += [np.argmin(Y)]

# tracer
import matplotlib.pyplot as plt   
plt.plot(K, Vol, 'ro-')
plt.show()

La fonction call est presente dans le fichier blackscholes.py que j'ai récupérer sur internet (la flemme de retaper la formule)
Code: Tout sélectionner
import scipy
import math
from scipy import stats

""" Price an option using the Black-Scholes model.
s: initial stock price
k: strike price
t: expiration time
v: volatility
r: risk-free rate
div: dividend
cp: +1/-1 for call/put
"""

d1 = lambda s,k,v,r,t,div : (scipy.log(s/k)+(r-div+0.5*math.pow(v,2))*t)/(v*scipy.sqrt(t))
d2 = lambda s,k,v,r,t,div : d1(s,k,v,r,t,div) - v*scipy.sqrt(t)
call = lambda s,k,v,r,t,div : (s*math.exp(-div*t)*stats.norm.cdf(d1(s,k,v,r,t,div))) - (k*scipy.exp(-r*t)*stats.norm.cdf(d2(s,k,v,r,t,div)))


Je vais essayer de récupérer les cotes pour d'autres périodes pour voir si ça change. (Ceci dit, vous connaisez une méthode pour récupérer les prix de IG sous forme texte sans avoir a les rentrer un à un comme je l'ai fait ici? )

Bella Swan a écrit:
maroxe a écrit:Je n'arrive pas à expliquer la forme de cette courbe, tout indice est le bienvenu.
J'utilise le modèle de BlackScholes classique,

Les travaux de Peter Tankov ?
C'est possible, c'était mon prof de TD, mais il a jamais dit que le modèle était basé sur ses travaux.
Ceci dit, le modèle est simple pour les options vanilles comme ici, comme les options call européennes ont le même prix que les américaines, le prix est donné par:
Image



Merci pour le code , j'ai à peu près la meme chose en matlab .

Pour récupérer les données automatiquement j'aurais bien fait du web scrapping mais le HTML de la page ne donne rien.

Donc je pense que le seul moyen à ma connaissance est d'utiliser leur API mais il y a des problème de compatibilité entre les 64 et 32 bits + des bugs donc un peu ennuyeux à gérer.

Je pense qu'en monitorant le smile d'IG , je suis sur qu'il y a des anomalies exploitables :musique:

Re: Cotation des options sur IG Market

par maroxe » 01 Jan 2015 23:25

Bella Swan a écrit:
maroxe a écrit:C'est possible, c'était mon prof de TD, mais il a jamais dit que le modèle était basé sur ses travaux

Je ne disais pas ça évidemment !!! Je sous-entendais que Tankov et le labo de probas de Jussieu avaient avancé sur ce problème. Peut-être y trouverais-tu des pistes nouvelles ?


Mais j'étais tout à fait sérieux, il était vraiment mon prof de TD ;) D'ailleurs, j'essaye de retrouver ce que j'ai appris dans son cours dans la vrai vie sans grand succès pour l'instant :mrgreen:


@adibool, Je n'ai pas moyen de tester l'API, il faut un compte en réel pour ça, non?
Sinon, connaissez vous d'autres sites (gratuits de préférence) qui fournissent les prix de marché des options?

Je vais continuer à chercher de mon côté, et je vous tiens au courant. Ceci dit, ça m'étonnerait qu'il existe une opportunité d'arbitrage avec IG, rien que les frais de transaction sont prohibitifs, mais restons optimisite. ^^

Re: Cotation des options sur IG Market

par adibool » 01 Jan 2015 23:55

oui il faut un compte réel.

Pour le prix des options celles fournit par IG ne cotent pas pareil que les autres c'est pour ca que c'est spécial à gérer sur IG.

Quant à l'arbitrage je me dis pourquoi pas , créer un programme qui détecte les anomalies et qui joue sur la correction! je pense que ces "anomalies" n'arrivent pas souvent mais ca vaut la peine d'essayer à mon humble avis

Re: Cotation des options sur IG Market

par maroxe » 02 Jan 2015 00:22

J'ai utilisé chrome (F12 pour accéder aux outils dev) pour télécharger la page html que j'ai ensuite parsé avec python (d'une façon dégoutant, je vous épargne le code) , cette fois l'échéance est pour le 17 juin, voici ce que j'obtient (call et put je trouve pareil) :


C'est déjà plus régulier. Le fait que la courbe soit constant par morceau est peut une anomalie? L

Articles en relation
Cotation des droits
par Eversa » 26 Nov 2012 18:30 (3 Réponses)
L’Esma va adapter le régime des pas de cotation
par Benoist Rousseau » 17 Juil 2018 05:40 (3 Réponses)
un market replay
Fichier(s) joint(s) par ChristelleP » 25 Sep 2018 13:38 (10 Réponses)
[Livres] Market Wizards
Fichier(s) joint(s) par Deejay87 » 10 Juil 2013 23:56 (27 Réponses)
Politique de stop loss d'IG Market
par AlgoFlex » 23 Fév 2017 14:41 (7 Réponses)
Recherches sur Options
par Rogue » 12 Nov 2012 21:55 (12 Réponses)
Axial Options Trader
Fichier(s) joint(s) par Rogue » 13 Jan 2014 19:18 (39 Réponses)

ProRealTime