Un droit, pas une obligation
Une option donne à son détenteur le droit, mais pas l'obligation, de négocier un actif à un prix fixe (le prix d'exercice) à une date ou avant (l'échéance). Un call est le droit d'acheter, un put le droit de vendre. À l'échéance, le détenteur n'utilise le droit que s'il rapporte. Un call de prix d'exercice 100 avec l'action à 110 permet d'acheter à 100 ce qui vaut 110 : un gain de 10. Avec l'action à 90, on ne fait rien et le gain est 0, jamais négatif. Cette asymétrie est ce qui donne de la valeur aux options.
import numpy as np
spot = np.array([80, 90, 100, 110, 120.0]) # possible prices of the stock at expiry
strike = 100
call = np.maximum(spot - strike, 0) # np.maximum works element by element: no loop, no if
put = np.maximum(strike - spot, 0)
print(call.tolist()) # [0.0, 0.0, 0.0, 10.0, 20.0]
print(put.tolist()) # [20.0, 10.0, 0.0, 0.0, 0.0]Le profit est le gain moins la prime
L'option a un prix aujourd'hui, la prime ; ce que vous gagnez est donc le gain moins ce que vous avez payé. Un call acheté 6 perd 6 chaque fois que l'action termine sous le prix d'exercice et atteint l'équilibre à exercice + prime = 106. En combinant les options on construit d'autres profils. Un straddle long (call plus put au même prix d'exercice) profite d'un grand mouvement dans un sens ou dans l'autre et perd les deux primes si l'action ne bouge pas. Un bull call spread (long un call à 100, short un call à 110) coûte moins mais plafonne le gain à l'écart entre les prix d'exercice : vous renoncez à la hausse au-delà de 110 pour réduire le coût.
call_pnl = call - 6 # bought for a premium of 6
print(call_pnl.tolist()) # [-6.0, -6.0, -6.0, 4.0, 14.0] break-even at 106
straddle = call + put - (4.0 + 3.5) # a call (4.0) and a put (3.5) at the same strike
print(straddle.tolist()) # [12.5, 2.5, -7.5, 2.5, 12.5] wins on a move up or down
spread = np.maximum(spot - 100, 0) - np.maximum(spot - 110, 0) - (6.0 - 2.0) # long the 100 call, short the 110 call
print(spread.tolist()) # [-4.0, -4.0, -4.0, 6.0, 6.0] loss and gain are both cappedshort_call = 6 - call # the seller of the call keeps the premium and pays the payoff
print(short_call.tolist()) # [6.0, 6.0, 6.0, -4.0, -14.0] the exact mirror of the buyer's loss and gainprint(float(np.maximum(112 - 100, 0))) # 12.0 a single price works as well as an array- Gain du call
max(S - K, 0), gain du putmax(K - S, 0):np.maximum(..., 0)le fait sur tout un tableau. - Profit = gain - prime ; un straddle (call + put) parie sur un grand mouvement, un bull call spread plafonne coût et gain.
- Les gains sont des valeurs à l'échéance ; le prix aujourd'hui est plus élevé de la valeur temps, que valorisent les sujets suivants.
À suivre : la parité call-put, le lien exact entre le prix d'un call et celui d'un put.
Lab : ce qui est noté
- Payer le droit d'acheter avec
call_payoff25 pts - Payer le droit de vendre avec
put_payoff25 pts - Parier sur un grand mouvement dans les deux sens avec
long_straddle_pnl25 pts - Plafonner le coût et le gain avec
bull_call_spread_pnl25 pts