σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップ
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップ
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Python ロードマップ›モジュール 4 · 債券とオプションの価格計算›トピック 4.6·~40 分中級

オプションのペイオフ

ロードマップ上の位置モジュール 4/11 · トピック 6/16
4.6 オプションのペイオフ
—ラボスコア— / 100合計XP—連続日数—

権利であって義務ではない

オプションは、保有者に、ある日(満期)まで、またはその日に、固定価格(権利行使価格)で資産を取引する権利(義務ではない)を与えます。コールは買う権利、プットは売る権利です。満期に保有者は、得になるときだけ権利を使います。行使価格100のコールで株が110なら、110の価値のものを100で買えるのでペイオフは10です。株が90なら何もせず、ペイオフは0で、負にはなりません。この片側性がオプションに価値を与えます。

call payoff = max(S - K, 0) put payoff = max(K - S, 0)
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]

損益はペイオフからプレミアムを引いたもの

オプションには今日の価格、つまりプレミアムがあるので、利益はペイオフから支払った額を引いたものです。6で買ったコールは、株が行使価格を下回って終われば6を失い、行使価格 + プレミアム = 106 で損益ゼロになります。オプションを組み合わせると別の形ができます。ロング・ストラドル(同じ行使価格のコールとプット)は、どちらへの大きな動きでも利益になり、株が動かなければ両方のプレミアムを失います。ブル・コール・スプレッド(100のコール買いと110のコール売り)はコストが小さい代わりに、利益は行使価格の差で頭打ちになります。コストを下げるために110超の上昇分を手放すのです。

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 capped
short_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 gain
print(float(np.maximum(112 - 100, 0)))      # 12.0   a single price works as well as an array
ペイオフは価格ではないペイオフ図は満期時点の価値だけを示します。満期前の今日の価格は、株がまだ有利に動く可能性があるため、ペイオフより高くなります。この上乗せが時間価値で、次のトピックで価格付けします。ペイオフは保有者の立場で書かれており、オプションの売り手の損益はちょうど逆になります。
  • コールのペイオフ max(S - K, 0)、プットのペイオフ max(K - S, 0)。np.maximum(..., 0) で配列全体に適用できる
  • 損益 = ペイオフ - プレミアム。ストラドル(コール+プット)は大きな動きに賭け、ブル・コール・スプレッドはコストと利益に上限を付ける
  • ペイオフは満期時点の価値。今日の価格は時間価値の分だけ高く、それは次のトピックで価格付けする

次はプット・コール・パリティです。コールの価格とプットの価格の厳密な関係を学びます。

ラボ:採点される内容

  • call_payoff で買う権利のペイオフを求める25点
  • put_payoff で売る権利のペイオフを求める25点
  • long_straddle_pnl でどちらへの大きな動きにも賭ける25点
  • bull_call_spread_pnl でコストと利益に上限を付ける25点
エクスプローラー · lab-71-1
▾ lab-71-1
…
bash · ブラウザ内
learner@quantcraft:~/lab-71-1$
Pythonは未読み込みPythonLn 1, Col 1Spaces: 4UTF-8

このトピックをリセットしますか?

lab-71-1 の内容はすべてスターターファイルに戻り、ターミナルも消去されます。現在の解答は失われ、元に戻せません。

リセットされるもの
  • main.py → スターターコード
  • ターミナル履歴とテスト出力
  • 未提出の変更
保持されるもの
  • ラボの最高スコア
  • XPと連続日数
  • 講義の進捗とメモ

コードを実行するにはログインしてください。

レクチャーはすべて無料で読めます。コードの実行、テスト、ラボの提出にはアカウントの作成かログインが必要です。

  • ブラウザ内IDEとbashターミナル。インストール不要
  • 即時採点、XP、ロードマップでの現在地
アカウントを作成ログイン
または
GitHubで続ける