【注意事項】 オプション v1.0(Python版)

記事ディレクトリ

オプション

証券取引は資源の実現であり、先物取引は勇気と幸運の実現であり、オプションは知識の実現です。

定義:オプションとは、18 世紀後半にアメリカとヨーロッパの市場で生まれた契約を指し、保有者にその日付またはその日付以前の任意の時点で固定価格でオプションを売買する権利を与えます。 。

ここに画像の説明を挿入します

オプション取引インターフェースはT字型気配値テーブルと呼ばれ、上記はOKEXのオプション契約インターフェースです。

で、

  1. 中央の列は権利行使価格です。つまり、オプションが満期日に約定される価格であり、両側で取引できます。
  2. 一番上の行は有効期限です。先物が特定の年と特定の月に満期となる先物に分かれているのと同じように、満期日の異なるさまざまなオプションがあります。
  3. 黒いボックスはコール オプションとプット オプションを表します。その中で売買操作を行うことができます。
  4. コールオプションとプットオプションの両方にビッド価格とアスク価格があります。つまり、行使価格でオプションを売買する場合でも、対応する買値または売値で行われます。

ここに画像の説明を挿入します
上の図は、オプションを購入するときに選択する一連の手順を示しています。最初に有効期限を選択し、次に行使価格を選択し、最後にコールまたはプット、買いまたは売りを選択します。

導入

場合

250 ドルで、2020 年 3 月 6 日に期限が切れ、行使価格が 8,750 のコール オプションを購入すると仮定します (データは前の図の 8 行目からのものです)。

これは、2020 年 3 月 6 日に 1 ビットコインを 8,750 米ドルで購入する権利があることを意味します。

最終価格 プロセス 最終収入
9000まで上がった (9000-8750)-250 0
10,000まで上昇 (10000-8750)-250 1000
8000まで下がった 権利を行使しない -250
500まで 権利を行使しない -250

2020 年 3 月 6 日に期限切れになる行使価格 8750 のプット オプションを 215 ドルで購入するとします。

これは、2020 年 3 月 6 日に、1 ビットコインを 8,750 米ドルの価格で販売する権利があることを意味します。

最終価格 プロセス 最終収入
9000まで上がった 権利を行使しない -215
10,000まで上昇 権利を行使しない -215
8000まで下がった (8750-8000)-215 535
500まで (8750-500)-215 8035

対応するコール オプションの売りとプット オプションの売りは、買いの逆です。たとえば、コール オプションを売却する場合、買い手は権利を行使すると損失が生じますが、最初のケースでは、価格が 10,000 に上昇した後、この価格で 1 ビットコインを 8,750 ドルで購入する権利を買い手に与える必要があります。 , したがって、8750-10000+250=-1000、つまり、売り手は 1,000 米ドルを失い、買い手はオプションを行使しなかった場合、250 米ドルのオプション プレミアムを獲得します。同じことがプット オプションの売りにも当てはまります。

【注】上記には手数料は含まれておりません。

4つの基本的なオプション取引

適用される市場条件 プレミアム 所得 損失
コールオプションを買う 大上昇 支払う 無限の プレミアム
プットオプションを買う 大きなドロップ 支払う 無限の プレミアム
コールオプションの販売 上がらない 充電 プレミアム 無限の
プットオプションの売り 落ちません 充電 プレミアム 無限の
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import norm
from pylab import mpl
# import seaborn
# seaborn.set()
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False
# 计算期权收益
def cal_profit(strike, price, fee, optype, position):
    if optype == 'C':
        if position == 'long':
            profit = np.where(-(strike - price) - fee < -fee, -fee, -(strike - price) - fee)
        else:
            profit = np.where(strike - price + fee > fee, fee, strike - price + fee)
    else:
        if position == 'long':
            profit = np.where(-(strike - price) - fee < -fee, strike - price - fee,  -fee)
        else:
            profit = np.where(strike - price + fee > fee, -(strike - price) + fee, fee)
    return profit

price_list = np.linspace(1.0, 15.0, 15)
long_call = cal_profit(6, price_list, 1, 'C', 'long')
short_call = cal_profit(6, price_list, 1, 'C', 'short')
long_put = cal_profit(6, price_list, 1, 'P', 'long')
short_put = cal_profit(6, price_list, 1, 'P', 'short')

plt.figure(figsize=(16, 10))
i = 1
type_list = ['买入看涨', '卖出看涨', '买入看跌', '卖出看跌']
for _ in [long_call, short_call, long_put, short_put]:
    plt.subplot(2, 2, i)
    plt.ylim(-8, 8)
    plt.xlim(1, 12)
    plt.plot(price_list, _, 'coral', label=type_list[i-1], lw=2.5)
    # 坐标轴设置
    ax = plt.gca()
    ax.spines['left'].set_position(('data',6))
    ax.spines['bottom'].set_position(('data',0))
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    plt.legend(fontsize=15)
    plt.text(6.3, 7, '收益', fontsize=15)
    plt.text(10.5, -2, '标的价格', fontsize=15)
    i += 1

plt.show()

ここに画像の説明を挿入します

今すぐ:

  • コールオプションの購入: 通貨価格が下落した場合、最大の損失はオプション手数料ですが、通貨価格が上昇した場合、利益は無限となり、それ自体が利益、つまりオプション手数料となります。
  • コールオプションの販売: 通貨価格が下落するとオプション手数料まで稼ぐことができますが、通貨価格が上昇すると無限に資金を失う可能性があります。
  • プット オプションの購入: 通貨価格が上昇すると、最大で損失となるのはオプション プレミアムですが、通貨価格が下落すると、下落すればするほど利益が大きくなります。
  • プット オプションを売る: 通貨価格が上昇すると、最も多くのオプション手数料を獲得できますが、通貨価格が下落すると、下落すればするほど損失が大きくなります。

基本用語

欧州オプション:オプションを購入する当事者がオプションの満了日にのみ行使できるオプションを指します。

アメリカン オプション:買い手は、満了日または取引前日に契約の実行を提案できます。

リアルバリュー、アウトオブザマネーバリュー、アットザマネーバリュー:リアルバリューとは、行使価格が市場価格よりも低いこと、つまり、プレミアムを考慮せずにオプションを行使することが有益なオプションであることを意味します。購入後、アウト・オブ・バリューとは、行使価格が実際の価値と逆のことを意味し、価格が市場価格より高い場合、購入後にプレミアムを考慮せずにオプションを行使すると、お金になります。オプションを失うこと。アット・ザ・マネーの場合、行使価格が市場価格と等しい場合、オプションをすぐに行使しても損益は生じません。

long_call_out = cal_profit(7, price_list, 0.5, 'C', 'long')
long_call_in = cal_profit(5, price_list, 1.5, 'C', 'long')
short_call_out = cal_profit(7, price_list, 0.5, 'C', 'short')
short_call_in = cal_profit(5, price_list, 1.5, 'C', 'short')
long_put_out = cal_profit(5, price_list, 0.5, 'P', 'long')
long_put_in = cal_profit(7, price_list, 1.5, 'P', 'long')
short_put_out = cal_profit(5, price_list, 0.5, 'P', 'short')
short_put_in = cal_profit(7, price_list, 1.5, 'P', 'short')

plt.figure(figsize=(16, 10))
i = 1
type_list = ['买入看涨', '卖出看涨', '买入看跌', '卖出看跌']
for _ in ['long_call', 'short_call', 'long_put', 'short_put']:
    plt.subplot(2, 2, i)
    plt.ylim(-8, 8)
    plt.xlim(1, 12)
    plt.plot(price_list, eval(_), 'coral', label=type_list[i-1] + '-平值', lw=2.5)  # eval将字符串变为变量名使用
    plt.plot(price_list, eval(_ + '_out'), 'cornflowerblue', label=type_list[i-1] + '-虚值', lw=2.5)
    plt.plot(price_list, eval(_ + '_in'), 'grey', label=type_list[i-1] + '-实值', lw=2.5)
    # 坐标轴设置
    ax = plt.gca()
    ax.spines['left'].set_position(('data',6))
    ax.spines['bottom'].set_position(('data',0))
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    plt.legend(fontsize=15)
    plt.text(6.3, 7, '收益', fontsize=15)
    plt.text(10.5, -2, '标的价格', fontsize=15)
    i += 1

plt.show()

ここに画像の説明を挿入します

本源的価値: オプションがイン・ザ・マネーの場合、コール オプションの本源的価値は (基礎価格 - 行使価格)、プット オプションの本源的価値は (権利行使価格 - 基礎価格) となります。アット・ザ・マネーであろうとアウト・オブ・ザ・マネーであろうと、本質的価値は0です。

時間価値: オプション契約の現在価格 – 本源的価値

レバレッジ: オプションプレミアムの変化率/原資産価格の変化率 = 原資産価格 × デルタ/プレミアム

モデルと理論

BSモデル

上で述べたように、オプションの価値は実際には満期の原価格、つまり行使価格、つまり c = S - K ですが、まだ満期になっていないオプションを必要とする場合は、満期時の S の確率を推測する必要があります。は N(d1) であり、同時に割引の場合、次のようになります。

c = S 0 N ( d 1 ) − K e − r TN ( d 2 ) p = K e − r TN ( − d 2 ) − S 0 N ( − d 1 ) d 1 = ln ⁡ ( S 0 / K ) + ( r + σ 2 / 2 ) T σ T d 2 = ln ⁡ ( S 0 / K ) + ( r − σ 2 / 2 ) T σ T = d 1 − σ T c = S_0N(d_1)-Ke ^{-rT}N(d_2)\\ p = Ke^{-rT}N(-d_2)-S_0N(-d_1)\\ d_1 = \frac{\ln(S_0/K)+(r+\sigma^ 2/2)T}{\sigma\sqrt T}\\ d_2 = \frac{\ln(S_0/K)+(r-\sigma^2/2)T}{\sigma\sqrt T} = d_1 - \sigma\sqrt Tc=S0N ( d1_r T N(d2p=_r T N(d2S0N ( d1d1=pT ln ( S0/ K )+( r+p2 /2)d2=pT ln ( S0/ K )+( rp2 /2)=d1pT

これらの変数は次のとおりです。

  • S0 = 価格設定日の原資産の株価。
  • K=行使価格。
  • T = オプション契約の残り期間 (年)、1 年に対する割合で表されます。
  • r = 現在のリスクフリー金利;
  • σ \シグマσ = 原資産価格(利回り)の変化率の年換算ボラティリティ。
  • ln=自然対数;
  • N(x)= 標準正規分布の累積正規密度関数。

このうち、年間ボラティリティ=各取引日のボラティリティ*年間取引日数、ボラティリティ*\sqrt{年間取引日数}となります。ボラティリティ_年間取引日数_ _ _ 、年間の取引日数は365日です。以下ではローリング計算を使用します。

def value_BSM(S, K, sigma, r, T0, T1, types):
    try:
        S, K, types = float(S), float(K), types.tolist()[0]
    except:
        pass
    T = (T1 - T0).apply(lambda x: x.days) / 365  # 计算期权的剩余期限
    d1 = (np.log(S/K) + (r + pow(sigma, 2) / 2) * T) / sigma * np.sqrt(T)
    d2 = d1 - sigma * np.sqrt(T)
    if types == 'C':
        value_call = S * norm.cdf(d1) - K * np.exp(-r*T) * norm.cdf(d2)  # norm.cdf(d1) 是指 N(d1)
        return value_call
    if types == 'P':
        value_put = K * np.exp(-r*T) * norm.cdf(-d2) - S * norm.cdf(-d1)
        return value_put
ビットコインオプションデータの照合

ここでは、株式データの処理から学び、まずすべてのオプション データを DataFrame にマージし、時間とオプション名の 2 つの列を並べ替えます。

import os

rule_type = '1H'  # 根据需求修改时间,如5T、30T、1H、1D等

# 导入某文件夹下所有期权的代码
def get_option_code_list_in_one_dir(path):
    """
    从指定文件夹下,导入所有csv文件的文件名
    :param path:
    :return:
    """
    option_list = []

    # 系统自带函数os.walk,用于遍历文件夹中的所有文件
    for root, dirs, files in os.walk(path):
        if files:  # 当files不为空的时候
            for f in files:
                if f.endswith('.csv'):
                    option_list.append(f[:-4])

    return sorted(option_list)

# ===读取所有期权代码的列表
path = r'BTC-USD'
option_code_list = get_option_code_list_in_one_dir(path)

# ===读取比特币价格
df_btc = pd.read_pickle(r'BTC-USDT.pkl')
df_btc = df_btc[['candle_begin_time', 'close']]
df_btc.columns = ['candle_begin_time', 'btc_price']
df_btc = df_btc.resample(rule_type, on='candle_begin_time', label='left', closed='left').agg({
    
    'btc_price': 'last'})
df_btc['btc_return'] = np.log(df_btc['btc_price'] / df_btc['btc_price'].shift())
df_btc['btc_volatility'] = np.sqrt(365) * df_btc['btc_return'].rolling(365).std()  # **计算年化波动率**

# 循环读取期权数据
all_option_data = pd.DataFrame()  # 用于存储数据
for code in option_code_list:
    print(code)
    # =读入数据
    df = pd.read_csv(path + '/%s.csv' % code, encoding='gbk', skiprows=1, parse_dates=['candle_begin_time'])
    agg_dict = {
    
    
        'open': 'first',
        'high': 'max',
        'low': 'min',
        'close': 'last',
        'volume': 'sum',
        'currency_volume': 'sum',
    }
    df = df.resample(rule_type, on='candle_begin_time', label='left', closed='left').agg(agg_dict)
    df['symbol'], df['T1'], df['K'], df['types'] = code, pd.to_datetime('20' + code.split('-')[2]), code.split('-')[3], code.split('-')[-1]
    df = pd.merge(left=df, right=df_btc, on='candle_begin_time', how='left', sort=True, indicator=True)
    df.reset_index(inplace=True)
    # 合并数据
    all_option_data = all_option_data.append(df, ignore_index=False)


all_option_data.sort_values(['candle_begin_time', 'symbol'], inplace=True)
all_option_data.reset_index(inplace=True, drop=True)
all_option_data.to_pickle('option_btc_%s.pkl' % rule_type)
all_option_data

上記のコードを実行した後、対応する場所にあるデータ ファイルを直接読み取ることができるため、より高速になります。

rule_type = '1D'  # 根据需求修改时间,如5T、30T、1H、1D等
df = pd.read_pickle(r'option_btc_%s.pkl' % rule_type)
df_btc = pd.read_pickle(r'BTC-USDT.pkl')
df_btc = df_btc[['candle_begin_time', 'close']]
df_btc.columns = ['candle_begin_time', 'btc_price']
df_btc = df_btc.resample(rule_type, on='candle_begin_time').agg({
    
    'btc_price': 'last'})
df_btc.reset_index(inplace=True)
暗黙のボラティリティ

インプライド・ボラティリティ: 市場参加者による将来のボラティリティの期待値であり、ある契約のインプライド・ボラティリティが他の契約よりも著しく高い場合、その契約は過大評価されており、その逆の場合も同様です。

コール オプションであってもプット オプションであっても、オプション権利行使価格が上昇するにつれて、インプライド ボラティリティは減少し続けます (ボラティリティ スマイル) が、これは絶対的なものではありません (ボラティリティ スキューネス)。

隠れ波の計算方法:二分法とニュートン・ラフソン法

ニュートン反復法は計算ステップが多いため効率が低いことが多く、結果の精度をさらに向上させると計算時間が長くなります。

二分法のロジックは、ボラティリティが 50% の場合のオプション価格を計算し、市場価格より高い場合は 0 ~ 50% の範囲に切り替え、市場価格より低い場合は 0 ~ 50% の範囲に切り替えます。 50 ~ 100% の範囲 (オプション価格がボラティリティ (増加関数) である場合、複数の反復によりより高精度のインプライド ボラティリティの近似値を計算できます。

ただし、オプションの実際の価格が BS モデルで計算された理論価格よりも大きいか小さいため、計算中に結果が得られない場合があり、現時点では隠れ波動を使用してオプションの合理性を測定することはできません。実際の価格。一部のオプションが、オプションクライアントの相場の暗黙のボラティリティ列に「-」または「0.0001」と表示されるのはこのためです。

# 二分法计算隐波
def implied_volatility(P, S, K, r, T0, T1, types):
    try:
        P, S, K, types = float(P), float(S), float(K), types.tolist()[0]
        T = (T1 - T0).apply(lambda x: x.days) / 365  # 计算期权的剩余期限
    except:
        P, S, K = float(P), float(S), float(K)
        T = (T1-T0).days / 365
        pass
    
    
    sigma_min = 0.001
    sigma_max = 1.000
    sigma_mid = (sigma_min + sigma_max) / 2
    
    if types == 'C':
        
        def call_bs(S, K, sigma, r, T):
            d1 = (np.log(S/K) + (r + pow(sigma, 2) / 2) * T) / (sigma * np.sqrt(T))
            d2 = d1 - sigma * np.sqrt(T)
            return float(S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2))
        
        call_min = call_bs(S, K, sigma_min, r, T)
        call_max = call_bs(S, K, sigma_max, r, T)
        call_mid = call_bs(S, K, sigma_mid, r, T)
        diff = P - call_mid
        if (P < call_min) or (P > call_max):
            print('error, the price of option is beyond the limit')
            sigma_mid = np.nan
            return sigma_mid
        else:
            while abs(diff) > 0.001:
                diff = P - call_bs(S, K, sigma_mid, r, T)
                sigma_mid = (sigma_max + sigma_min) / 2
                call_mid = call_bs(S, K, sigma_mid, r, T)
                if P > call_mid:
                    sigma_min = sigma_mid
                else:
                    sigma_max = sigma_mid
    else:
        
        def put_bs(S, K, sigma, r, T):
            d1 = (np.log(S/K) + (r + pow(sigma, 2) / 2) * T) / (sigma * np.sqrt(T))
            d2 = d1 - sigma * np.sqrt(T)
            return float(K * np.exp(-r * T) * norm.cdf(-d2) - S * norm.cdf(-d1))
        
        put_min = put_bs(S, K, sigma_min, r, T)
        put_max = put_bs(S, K, sigma_max, r, T)
        put_mid = put_bs(S, K, sigma_mid, r, T)
        diff = P - put_mid
        
        if P < put_min or P > put_max:
            print('error, the price of option is beyond the limit')
            sigma_mid = np.nan
            return sigma_mid
        else:
            while abs(diff) > 1e-6:
                diff = P - put_bs(S, K, sigma_mid, r, T)
                sigma_mid = (sigma_min + sigma_max) / 2
                put_mid = put_bs(S, K, sigma_mid, r, T)
                if P > put_mid:
                    sigma_min = sigma_mid
                else:
                    sigma_max = sigma_mid
    return sigma_mid

ボラティリティ取引

不安定な笑顔

**ボラティリティ スマイル** は、オプションのインプライド ボラティリティと権利行使価格の関数との関係を表すグラフです。コール オプションであってもプット オプションであっても、権利行使価格がスポット価格からさらに乖離した場合、原資産、オプションのボラティリティは、スマイルカーブ(両端が大きい)に似て大きくなります。

ここに画像の説明を挿入します

ただし、ほとんどの取引日では、これがボラティリティのスキューとして現れます。狭義のボラティリティ・スキューとは、オプションの行使価格が小から大に変化すると、オプションのインプライド・ボラティリティが大から小に変化すること、つまりインプライド・ボラティリティが行使価格の減少関数であることを意味します。

権利行使価格が低いオプション (通常はディープ アウト オブ ザ マネー プットまたはディープ イン ザ マネー コール) はインプライド ボラティリティが高くなります。対照的に、権利行使価格が高いオプション (通常はディープ イン ザ マネー コール) はインプライド ボラティリティが高くなります。インプライド ボラティリティ(プット オプションまたはディープ アウト オブ ザ マネー コール オプション)は、インプライド ボラティリティが低くなります。つまり、重要な結論は次のとおりです。インプライド ボラティリティは、コール オプションであってもプット オプションであっても、権利行使価格の減少関数です

隠れた波の反射率

隠れオプションの波の頂点は通常、重要な動作シグナルです。つまり、誰もがパニックになってプットオプションを高値で購入しているとき、市場価格はしばしば底値にあり、これは逆取引です(つまり、バフェットの「」)他の人は恐れていますが、私は貪欲です。」)

「マクミランはオプションを語る」の中で、マクミラン氏はインプライド・ボラティリティをトレンド変化の予測に利用できると考えている。株価が下落すると、プット オプションのインプライド ボラティリティが上昇します (株価が上昇すると、コール オプションのインプライド ボラティリティが上昇します)。したがって、株価が下落を終えようとしているときにその銘柄を捕まえることができれば、これらのオプションはプレミアム価格であることがわかるかもしれません。そして、株価はすぐには強気傾向にならないかもしれないが、少なくとも構造的な底に達し、安定するだろう。

したがって、通常の状況下では、株価下落時にプットオプションのインプライド・ボラティリティが最高点に達すると、株価は少なくとも安定し、さらには反発する可能性があるとマクミラン氏は考えている。同様に、株価の上昇中にコールオプションのインプライドボラティリティが最高点に達すると、株価は少なくとも安定し、急激に上昇することはありませんが、安定したままになるか、調整が起こる可能性があります。

上記のルールは、ストック オプションよりもインデックス オプションに適用した方がうまく機能することがよくあります。

市場が急落し、プットオプションのインプライドボラティリティが急上昇すると、市場は底に近づいています。プットオプションのインプライドボラティリティが最終的にピークに達し、低下し始めるとき、市場は底を打っていることがよくあります。逆に、プットまたはコールのインプライド ボラティリティが低すぎる場合、市場のボラティリティ (必ずしも市場の下落、または必ずしも市場の上昇ではない) が予想されます。これは、どちらの方向にも発生する可能性があります。つまり、オプション価格がより低い場合です。ボリンジャーバンドは相場の方向性を予測するのが難しい(隠れ波動も低いが、方向性が不明確) オプション価格がボリンジャーバンドにある場合は予測可能(隠れ波動が高く、元の波動が高い)方向は終了となります)。

ボラティリティのタイミング

アウト・オブ・ザ・マネーのオプションに対するボラティリティの変化の影響は、対応するリアルまたはアット・ザ・マネーのオプションよりも大きくなります。これは、シェルドン・ナタネンバーグの「オプションのボラティリティと価格設定のための高度なトレーディング戦略とテクニック」の結論です。実質価値のオプションは、ボラティリティの変化の影響を最も受けにくいことがわかります。これは、オプションがディープ・イン・ザ・マネーになるにつれて、オプションは基礎となる価格の変化にますます敏感になり、ボラティリティの変化にはあまり敏感でなくなるためです。投資家やトレーダーはオプション市場に参入する際に主にボラティリティ特性を求めているため、オプション市場の取引高のほとんどは、ボラティリティ率の変化に最も敏感なアット・ザ・マネーおよびアウト・オブ・ザ・マネーのオプションに集中しています。したがって、オプションに投資する最も重要な理由はボラティリティ、つまりタイミングであることを理解しておく必要があります。 A 株は下落する、これがオプション投資の主な目的であるため、オプションではボラティリティ取引を非常に重視しています。

隠れた波の特殊なケース

通常、原価が急激に上昇または下落すると、隠れた波動が上昇しますが、2020年10月9日や2021年7月12日など、市場が上昇すると隠れた波動が低下する場合や、市場変動が発生する場合もあります。レンジは大きくありませんが、2020-04-28 のように、隠れた波動が急速に上昇します。隠れた波動が上昇するための十分な条件は、ストップロス注文の発生、つまり、非常に強気な状況では、ショートポジションが発生することです。ロングしたい、もともとショートポジションがクローズしたい、そしてポジションクローズが続くとポジションは減少していきます。

ギリシャ人

  • デルタ: 原価に対するオプション価格の変化率、つまり原株価が 1 元変化した場合にオプション価格がどれだけ変化するかを表します。
  • ガンマ: 原価格に対するオプションのデルタの変化率、つまり、原価格が 1 元変化した場合にオプションのデルタがどれだけ変化するか。
  • シータ: 有効期限に対するオプション価格の変化率、つまり、1 日後にオプション価格がどれだけ変化するか。
  • Vega : ボラティリティに対するオプション価格の変化率、つまりボラティリティが1%変化したときにオプション価格がどれだけ変化するかを表します。
  • ロー:無リスク金利に対するオプション価格の変化率、つまり、無リスク金利が1%変化した場合にオプション価格がどれだけ変化するかということです。
def greeks_option(S, K, sigma, r, T, optype=None, positype=None):
    d1 = (np.log(S/K) + (r + pow(sigma, 2) / 2) * T) / (sigma * np.sqrt(T))
    d2 = d1 - sigma * np.sqrt(T)
    gamma = np.exp( -pow(d1, 2) / 2) / (S * sigma * np.sqrt(2 * np.pi * T))
    theta_call = -(S * sigma * np.exp(-pow(d1, 2) / 2)) / (2 * np.sqrt(2 * np.pi * T)) - r * K * np.exp(-r * T) * norm.cdf(d2)
    delta, theta = np.nan, np.nan  # 有时候只求gamma时,将这两个赋为nan值
    if optype == 'C':
        theta = theta_call
        if positype == 'long':
            delta = norm.cdf(d1)
        if positype == 'short':
            delta = -norm.cdf(d1)
    if optype == 'P':
        theta = theta_call + r * K * np.exp(-r * T)
        if positype == 'long':
            delta = norm.cdf(d1) - 1
        if positype == 'short': 
            delta = 1 - norm.cdf(d1)
    
    greeks = {
    
    'delta': delta, 'gamma': gamma, 'theta': theta}
    return greeks
デルタ

オプション価格の場合、原価格の変化とボラティリティは、時間の経過がオプションに与える影響よりもはるかに大きくなります。理由は 2 つあります。1 つ目は、オプションの本源的価値を直接変えることができるのは、原資産の価格の変化だけであるためです。本源的価値の変化は、オプションの価格の変化に直接影響します。有効期限が切れます。2 番目の理由は、ボラティリティが大きくなると、より遠い権利行使価格のオプションが実質価値のオプションに転換される可能性が高くなり、現在のオプション価格がより割高になるためです。

オプションのデルタ ( Δ \DeltaΔ ): 原資産の価格変化に対するオプション価格の変化の比率として定義されます。これは、オプション価格と原資産価格の関係を表す接線の傾きです。コール オプションのデルタが 0.6 であると仮定します。これは、株価がわずかに変化した場合、対応するオプション価値の変化が株式価値の変化の約 60% に等しいことを意味します。

ダイナミックヘッジ: 株価が 1 ドル上昇すると、オプション価格は約 0.6x1=0.6 ドル上昇し、株式 1 株自体のデルタは 1.0 となります。3日以内に株価は110ドルまで上昇する可能性があります。その後、株価が上昇するとデルタが大きくなり、デルタが 0.6 から 0.65 に増加したとします。デルタを中立に維持するには、投資家はさらに 0.05 × 2000 = 100 株の株式を購入する必要があります。このように常に調整する必要があるヘッジポジションが動的ヘッジです。

全体として、デルタは、原資産の価格の変化に対するオプションの価値の感応度です。コール オプション コールのデルタの理論値は N (d1) です。ここで、

d 1 = ln ⁡ ( S 0 K + ( r + σ 2 / 2 ) T σ T d_1 = \frac{\ln(\frac{S_0}K+(r+\sigma^2/2)T}{\sigma\平方T}d1=pT ln (KS0+( r+p2 /2)

プット オプションのデルタの理論値は N (d1)-1 であるため、プット オプションのデルタは 0 以下の負の値になります。一般に、コール オプションのデルタ値は 0 ~ 1 で、プット オプションのデルタ値は -1 ~ 0 です。

オプションの種類 方向 デルタ式
欧州コールオプション 長さ Δ=N(d1)
短い Δ=-N(d1)
欧州プットオプション 長さ Δ=N(d1)-1
短い Δ=1-N(d1)

デルタは、原資産と複数のオプション ポジションで構成されるポートフォリオのリスクを測る貴重な尺度です。もう一つの機能は、保有資産をヘッジする際のヘッジ比率としての機能です。比較的まれに使用されるもう 1 つの実際的な意味は、オプションが満了時にイン ザ マネーになる確率にほぼ等しいということですが、実際の取引の世界では、通常、デルタを非常に価値のある値とみなすトレーダーはほとんどいません。

特徴:

  1. アット・ザ・マネー・オプションのデルタ値は通常約 0.5 です。
  2. コール オプションのリアル ザ マネー オプションのデルタ値は、通常 0.5 より大きく 1 未満であり、ディープ リアル マネー オプションのデルタ値は 1 に近くなります。
  3. アウトオブザマネー コール オプションのデルタ値は、通常 0.5 未満です。行使価格が株価よりも高ければ高いほど、対応するアウトオブザマネー オプションのデルタ値は小さくなります。有効期限が近づいている実質価値のオプションのデルタ値は 1.00 に近くなりますが、アウトオブザマネーのオプションのデルタ値は 0 に近くなります。これは、実質価値のオプションが有効期限に近づくためです。 , 時間値は 0 であり、オプション値の変化は完全に本質的価値の変化によって引き起こされます。この時点でのデルタ値は 1 であると判断されます。つまり、アウトオブザマネーのオプションの有効期限が近づいているときです。日付、固有値と時刻値は両方とも 0 であり、この時点のデルタ値は 0 です。

米国の株式市場では、機関投資家はデルタニュートラルを維持したいと考えており、株価が上昇するとデルタニュートラルを維持するために株を買い続け、株価が下落するとデルタニュートラルを維持するために株を売り続けます。動きの方向性がよりトレンドになる現象により、米国株式市場全体が上昇と下落の傾向を示します。したがって、A株よりも米国株の傾向が強いです。

デルタと資産価格の関係
  1. 原資産価格が上昇すると、オプションのデルタ値が増加します。
  2. 曲線の傾きは常に正です。後で説明するオプションのガンマ値で説明されているように、オプションのガンマ値は常に正です。
  3. 原資産価格がオプション実行価格(6元/株)よりも低い場合、原資産価格が上昇するにつれて曲線の傾きは増加し、逆に原資産価格が約定価格よりも高い場合、曲線の傾きは増加します。曲線が減少します。
デルタとオプション期間の関係
  1. 長いイン・ザ・マネー・コール・オプションの場合、オプション期間が増加するにつれて、イン・ザ・マネー・コール・オプションのデルタ値は最初に減少し、その後ゆっくりと増加します。
  2. アット・ザ・マネーとアウト・オブ・ザ・マネーのオプションのデルタ値はどちらもオプション期間の増加関数ですが、アウト・オブ・ザ・マネーのオプションのデルタ値の限界増加分はそれよりも大きくなります。アット・ザ・マネーのオプション。

ここに画像の説明を挿入します

ガンマ

ガンマはデルタのバリエーションです。オプションのデルタが 0.4、ガンマ値が 0.05 の場合、先物価格が 1 元上昇すると、その結果のデルタの増加は 0.05 となり、デルタは 0.4 から 0.45 に増加することを意味します。ギリシャの他の変数が変化しないという前提の下で、株価がわずかに変化したとき、オプション デルタの変化値はガンマになります。基本的に、デルタがどれだけ速く変化するかを測定します。

デルタとは異なり、コール オプションとプット オプションの両方のガンマ値は正です。原価格が上昇すると、コール オプションのデルタ値は 0 から 1 に移動し、プット オプションのデルタ値は -1 から 0 に移動します。つまり、オプションのデルタ値は小さい値から大きい値に移動します。ガンマ値は正です。株価が下落すると、コール オプションのデルタ値は 1 から 0 に移動し、プット オプションのデルタ値は 0 から -1 に移動します。つまり、オプションのデルタ値は大きい値から小さい値に移動します。ガンマ値は常に正です。

オプションのガンマ ( Γ \GammaΓ ) は、原資産価格の変化に対するオプション デルタ値の変化の比率を指します。ガンマは、原資産価格に関するオプション価格の 2 次偏導関数です。

その中で、Γ \GammaΓ は依然としてオプションの価値を表し、S は依然としてオプションの原資産の価格を表します。たとえば、オプション ガンマは 0.3 に等しく、これは、原資産価格が変化したとき、対応するオプション デルタ値の変化が原資産価格の変化の約 30% に等しいことを意味します。ブラック-ショールズ-マートン モデルによると、ヨーロッパのコール オプションとヨーロッパのプット オプションのガンマ値の式は次のとおりです。

Γ = N ' ( d 1 ) S 0 σ T ここで、 d 1 = ln ⁡ ( S 0 K + ( r + σ 2 / 2 ) T σ TN ' ( x ) = 1 2 π e − x 2 / 2 (To の場合)モデリングを容易にするために、次のように整理できます。 Γ = N ' ( d 1 ) S 0 σ T = 1 S 0 σ 2 π T e − d 1 2 / 2 \Gamma=\frac{N'(d_1)}{S_0 \sigma \sqrt T}\\ このうち、 \\ d_1=\frac{\ln(\frac{S_0}{K}+(r+\sigma^2/2)T}{\sigma\sqrt T}\\ N'( x)=\frac1{\sqrt{2\pi}}e^{-x^2/2}\\ モデリングを容易にするために、次のように構成されます: \\ \Gamma=\frac{N' (d_1)}{S_0 \sigma\sqrt T}=\frac1{S_0\sigma\sqrt{2\pi T}}e^{-d_1^2/2}\\C=S0pT N' (d1)d1=pT ln (KS0+( r+p2 /2)N'バツ=午後2時 1e×2 /2モデリングを容易にするために次のように構成されていますC=S0pT N' (d1)=S0p2πT _ _ 1ed12/ 2

戦略

中立戦略の下でより成熟した戦略は、ガンマ スキャルピングですこの戦略の核となるアプローチは、オプション (ロングガンマ) を購入し、原資産の変動によってもたらされる価値を往復で稼ぐことです。簡単に言うと、原資産が将来大きく変動することを予測するために一定の手数料を支払う戦略です。オプションの満了時にボラティリティが十分に大きくなかったり、ボラティリティが当社にとって不利な方向に動いた場合、それは戦略にとって損失につながり、それがリスクでもあります。したがって、この戦略は通常、オプションのボラティリティが低いときに使用されることを好みます。まず、ボラティリティが低い状況では、オプションが安く、Gamma をロングするコストが比較的低く、また、将来ボラティリティが上昇する場合には、Vega をロングすることである程度の利益を得ることができます。IV が低い状態では、デルタとガンマの感度がより高くなり、変動したときにより多くの利益が得られます。IV が高い状態では、デルタとガンマは鈍感に見え、同じ利益を達成するにはより大きな変動が必要になります。全体として、オプションが短期的に変動しないか、ボラティリティが十分に大きくない場合、戦略全体が損失を被ることになります。

ガンマと資産価格の関係

ガンマ曲線は正規分布曲線に比較的近く、曲線は 2 つのセグメントに分けることができます。最初のセグメントは、原資産価格がオプション約定価格よりも大幅に低い場合、つまりコール オプションが大きくアウトになっている場合です。オプションのガンマは、原資産価格の増加関数です。第 2 段落は、原資産価格がオプション実行価格よりわずかに小さいか大きいということです。 、オプション ガンマは原資産価格の減少関数です。さらに、オプションがアット・ザ・マネー・オプションに近い場合、つまり原資産価格がオプション権利行使価格に近い場合、オプションのガンマ値は最大になります。

ガンマとオプション項の関係

アット・ザ・マネー・オプションの場合、ガンマはオプション期間の減少関数ですが、同時に、期間が短いアット・ザ・マネー・オプションのガンマは非常に高く、これは、オプションの有効期限に近づくほど、契約が成立するほど、アット・ザ・マネー・オプションのデルタ値は原資産価格の変化に対してより敏感になります。さらに、アウト・オブ・ザ・マネー・オプションであろうとリアルマネー・オプションであろうと、オプション期間が比較的短い場合、ガンマは期間の増加関数になりますが、期間が長くなると、ガンマは期間の減少関数になります。 。

ここに画像の説明を挿入します

シータ

オプション ポートフォリオのシータ (Θ) は、他の条件が変化しない場合の時間変化に対するポートフォリオの価値の変化の比率として定義されます。シータは、オプションの価値が時間の経過とともに減衰する速度の尺度です。一部の投資家は、オプション取引で正しい方向を選択したにもかかわらず、なぜ最終的に利益が得られなかったのか疑問に思ったことがあるかもしれませんが、多くの場合、問題はシータにあります。

シータは、結合時間減衰と呼ばれることもあります。無配当株式の欧州コール オプションの場合、シータの計算式はブラック ショールズ モデルから導き出すことができます。

Θ = − S 0 N ' ( d 1 ) σ 2 T − r K e − r TN ( d 2 ) ここで、 N ' ( x ) = 1 2 π e − x 2 / 2 は標準正規分布の密度関数です。 。\Theta=-\frac{S_0N'(d_1)\sigma}{2\sqrt T}-rKe^{-rT}N(d_2)\\ ここで、N'(x)=\frac1{\sqrt{2\pi }}e^{-x^2/2} は、標準正規分布の密度関数です。Th=2T S0N' (d1) pr K er T N(d2その中にはN'バツ=午後2時 1e×2/2、標準正規分布密度関数です

欧州株式のプット オプションの場合、シータの計算式は次のとおりです。

Θ = − S 0 N ′ ( d 1 ) σ 2 T + r K e − r TN ( − d 2 ) = Θ call + r K e − r T \Theta=-\frac{S_0N'(d_1)\sigma }{2\sqrt T}+rKe^{-rT}N(-d_2)=\Theta_{call}+rKe^{-rT}\\Th=2T S0N' (d1) p+r K er T N(d2=Th電話ください+r K erT _

N(−d2) = 1 − N(d2) であるため、プット オプションのシータは、対応するコール オプションのシータよりもr K e − r T rKe^{−rT}だけ高くなります。r K er T

Theta(Θ) 自体は次のようになります。

Θ = ∂ Π ∂ T ここで、Γ は依然としてオプションの価格を表し、T はオプションの期間を表します。\Theta=\frac{\partial\Pi}{\partial T}\\ このうち、\Gamma は依然としてオプションの価格を表し、T はオプションの期間を表します。Th=∂T _∂Π _このうちΓ は依然としてオプション価格を表しT はオプション期間を表します

他の条件が等しい場合、期間が減少するとオプションの価値も減少するため、オプションのシータは一般に負になります。株価が低い場合、シータはゼロに近くなります。アット・ザ・マネー・コール・オプションに対応して、シータは大きく、負です。株価が高いとき、θはr K e − r T rKe^{−rT}に近くなります。r K er Tしたがって、コール オプションを購入するときは、アット ザ マネー オプションを購入するのではなく、アウト オブ ザ マネー オプションを購入する

オプションがアット・ザ・マネーの場合、オプションの時間的価値の変化がより明白になります。これは、アウト・オブ・ザ・マネーのオプションでは、時間的変化ではなく株価の変化が最も大きく影響するためです。オプションの価値に影響を与えます。

シータと資産価格の関係
  1. シータと原資産の価格の間の曲線の形状は、コール オプションであってもプット オプションであっても非常に似ています。
  2. オプション行使価格(6元/株)付近、つまりコールオプションであってもプットオプションであってもアットザマネーオプションに近い場合、シータはマイナスとなり絶対値が大きくなります。オプションの値は時間の経過とともに変化するため、変化には非常に敏感です。
  3. 原資産価格が約定価格よりも高い場合、シータの絶対値は下落段階にあります。
  4. 原資産価格が行使価格より低い場合、プット オプションの場合、原資産価格が低下し続けると、オプションのシータはマイナスからプラスに転じ、特定のプラスの数値に近づきますが、コール オプションのシータは近づきます。ゼロ。
シータとオプション項の関係
  1. オプション期間が短い (つまり、有効期限に近い) 場合、アット・ザ・マネー・オプションのシータの絶対値は大きくなり、アット・ザ・マネー・オプションとアウト・ザ・マネー・オプションのシータの差は大きくなります。オブザマネーオプションも最大です。この点に関しては、直観的に理解することができます。オプションがアット・ザ・マネーの場合、オプションの期限が切れたときの行使の不確実性が最大となるため、アット・ザ・マネーのオプションの価値は時間に非常に敏感です。 ;
  2. アット・ザ・マネー・オプションのシータ値はオプション期間の増加関数であり、逆にアウト・オブ・ザ・マネー・オプションとイン・ザ・マネー・オプションのシータ値はオプション期間の減少関数です。オプション期間が短い場合は期間、オプション期間が長い場合は期間の増加関数です。
  3. オプション期間が長くなり続けると、リアル・ザ・マネー・オプション、アット・ザ・マネー・オプション、アウト・オブ・ザ・マネー・オプションのシータに近づきます。

ここに画像の説明を挿入します

デルタ、シータ、ガンマの関係について話し合う

株価が対数正規分布に従うという性質から出発して、0 から T までの連続複利収益率の確率分布を導き出すことができます。0 から T までの連続複利による収益率を x として記録すると、ST = S 0 ex T , x = 1 T ln ⁡ STS 0 S_T=S_0e^{xT}, x=\frac1T\ln\frac {S_T}{S_0}ST=S0e× Tバツ=T1lnS0ST

無配当株の単一デリバティブの価格は、微分方程式x = 1 T ln ⁡ STS 0 x=\frac1T\ln\frac{S_T}{S_0} を満たす必要があります。バツ=T1lnS0STしたがって、これらのデリバティブから構成される資産ポートフォリオ π も、ブラック・ショールズ モデルから構成される微分方程式を満たさなければなりません。

∂ Π ∂ t + r S ∂ Π ∂ S + 1 2 σ 2 S 2 ∂ 2 Π ∂ S 2 = r Π Θ + r S Δ + 1 2 σ 2 S 2 Γ = r Π また、値は未決定 D delta が定数の場合、D delta = 0 、Θ + 1 2 σ 2 S 2 Γ = r Π、Θ = ∂ π ∂ t の場合、Δ = ∂ π ∂ S 、Γ = ∂ 2 π ∂ S 2 \frac{\partial\Pi}{\partial t}+rS\frac{\partial\Pi}{\partial S}+\frac12\sigma^2S^2\frac{\partial^2\Pi}{\部分的な S^2}=r\Pi\\ \Theta+rS\Delta+\frac12\sigma^2S^2\Gamma=r\Pi\\ 現在の構成の代わりに、Delta は定数であり、Delta =0、代わりに\\ \Theta+\frac12\sigma^2S^2\Gamma=r\Pi\\ また\Theta=\frac{\partial\pi}{\partial t},\Delta=\frac{\partial\pi }{\partial S},\Gamma=\frac{\partial^2\pi}{\partial S^2}\\∂t _∂Π _+rS _∂S _∂Π _+21p2S _2∂S _22P _=_Th+rSΔ _ _+21p2S _2C _=_ポートフォリオデルタニュートラル場合デルタ_ _ _ _ _ _ _ _ _ _=0 利用可能_Th+21p2S _2C _=_ここでΘ=∂t _ πD=∂S _ πC=∂S _2午後2時

この式は、 Θ \ThetaΘが大きくて正の場合、トレーディング ポートフォリオのガンマも大きくなりますが、負になります。この結論は逆にも当てはまります。これは、デルタニュートラルな取引組み合わせの場合、シータをガンマの近似値として使用できることを理論的に説明します。

オプション戦略

状態 戦略
上昇を期待するが暴落を恐れる 保険戦略
保険戦略の保険料は引き下げられ、大幅な増加は見込まれない ネックライン戦略
緩やかな上昇 カバードポジションの開口部
市場の見通しを楽観的に捉え、コストを削減する 合成戦略
市場の見通しには方向性がなく、大きく変動します。 ストラドルを購入する
市場の見通しには方向性がなく、わずかに変動する ストラドルを売る
低価格品 押し目を買って価格を固定する

実際、オプション戦略の目的は強気、弱気、方向を見ずに変動を見るの 3 つだけであり、すべての戦略は 1 つのレッグのリスクをカバーするだけです。

# 为策略计算
def option_strategy(strike, price, fee, name):
    long_call = cal_profit(strike, price, fee, 'C', 'long')
    short_call = cal_profit(strike, price, fee, 'C', 'short')
    long_put = cal_profit(strike, price, fee, 'P', 'long')
    short_put = cal_profit(strike, price, fee, 'P', 'short')
    holding = price - strike 
    long_call_out = cal_profit(strike+1, price, fee-0.5, 'C', 'long')
    long_call_in = cal_profit(strike-1, price, fee+0.5, 'C', 'long')
    short_call_out = cal_profit(strike+1, price, fee-0.5, 'C', 'short')
    short_call_in = cal_profit(strike-1, price, fee+0.5, 'C', 'short')
    long_put_out = cal_profit(strike-1, price, fee-0.5, 'P', 'long')
    long_put_in = cal_profit(strike+1, price, fee+0.5, 'P', 'long')
    short_put_out = cal_profit(strike-1, price, fee-0.5, 'P', 'short')
    short_put_in = cal_profit(strike+1, price, fee+0.5, 'P', 'short')
    
    if name=='保险策略':
        profit = holding + long_put
    if name=='领口策略':
        profit = holding + long_put + short_call_out
    if name=='备兑开仓':
        profit = holding + short_call
    if name=='合成策略':
        profit = long_call + short_put
    if name=='买入跨式':
        profit = long_call + long_put
    if name=='卖出跨式':
        profit = short_call + short_put
    if name=='牛市价差':
        profit = long_call_in + short_call_out
    if name=='熊市价差':
        profit = long_call_out + short_call_in
    if name=='买入蝶式看涨':
        profit = long_call_in + long_call_out + (2 * short_call)
    if name=='买入蝶式看跌':
        profit = long_put_in + long_put_out + (2 * short_put)
    if name=='卖出蝶式看涨':
        profit = short_call_in + short_call_out + (2 * long_call)
    if name=='卖出蝶式看跌':
        profit = short_put_in + short_put_out + (2 * long_put)
    if name=='铁蝶式策略':
        profit = long_put_in + long_call_out + short_call + short_put
    
    strategy_dict = {
    
    
        'name': name, 'profit': profit, 'holding': holding, 'long_call': long_call, 'short_call': short_call, 'long_put': long_put, 
        'short_put': short_put, 'long_call_out': long_call_out, 'long_call_in': long_call_in, 'short_call_out': short_call_out, 
        'short_call_in': short_call_in, 'long_put_out': long_put_out, 'long_put_in': long_put_in, 'short_put_out': short_put_out, 
        'short_put_in': short_put_in,
    }
    return strategy_dict


# 画图,采用的是条件语句,本来想用可变参数,但这样的话会重复计算很多东西,不如先把所有可能的情况求出来,然后直接输入
def draw_pic_strategy(x, strategy_dict):
    # 变量设置
    y = strategy_dict['profit']
    name = strategy_dict['name']
    
    # 画图
    plt.figure(figsize=(16, 10))
    plt.ylim(-8, 8)
    plt.xlim(1, 12)
    plt.plot(x, y, 'coral', label=name, lw=2.5)
    # 分支
    if name=='保险策略':
        plt.plot(x, strategy_dict['holding'], 'cornflowerblue', label='持有标的', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['long_put'], 'lightcoral', label='买入看跌', lw=1.5, linestyle='--')
    if name=='领口策略':
        plt.plot(x, strategy_dict['holding'], 'cornflowerblue', label='持有标的', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['long_put'], 'lightcoral', label='买入看跌', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_call_out'], 'plum', label='卖出虚值看涨', lw=1.5, linestyle='--')
    if name=='备兑开仓':
        plt.plot(x, strategy_dict['holding'], 'cornflowerblue', label='持有标的', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_call'], 'lightcoral', label='卖出看涨', lw=1.5, linestyle='--')
    if name=='合成策略':
        plt.plot(x, strategy_dict['long_call'], 'cornflowerblue', label='买入看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_put'], 'lightcoral', label='卖出看跌', lw=1.5, linestyle='--')
    if name=='买入跨式':
        plt.plot(x, strategy_dict['long_call'], 'cornflowerblue', label='买入看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['long_put'], 'lightcoral', label='买入看跌', lw=1.5, linestyle='--')
    if name=='卖出跨式':
        plt.plot(x, strategy_dict['short_call'], 'cornflowerblue', label='卖出看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_put'], 'lightcoral', label='卖出看跌', lw=1.5, linestyle='--')
    if name=='牛市价差':
        plt.plot(x, strategy_dict['long_call_in'], 'cornflowerblue', label='买入实值看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_call_out'], 'lightcoral', label='卖出虚值看涨', lw=1.5, linestyle='--')
    if name=='熊市价差':
        plt.plot(x, strategy_dict['long_call_out'], 'cornflowerblue', label='买入虚值看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_call_in'], 'lightcoral', label='卖出实值看涨', lw=1.5, linestyle='--')
    if name=='买入蝶式看涨':
        plt.plot(x, strategy_dict['long_call_in'], 'cornflowerblue', label='买入实值看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['long_call_out'], 'lightcoral', label='买入虚值看涨', lw=1.5, linestyle='--')
        plt.plot(x, 2 * strategy_dict['short_call'], 'plum', label='卖出两份看涨', lw=1.5, linestyle='--')
    if name=='买入蝶式看跌':
        plt.plot(x, strategy_dict['long_put_in'], 'cornflowerblue', label='买入实值看跌', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['long_put_out'], 'lightcoral', label='买入虚值看跌', lw=1.5, linestyle='--')
        plt.plot(x, 2 * strategy_dict['short_put'], 'plum', label='卖出看跌', lw=1.5, linestyle='--')
    if name=='卖出蝶式看涨':
        plt.plot(x, strategy_dict['short_call_in'], 'cornflowerblue', label='卖出实值看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_call_out'], 'lightcoral', label='卖出虚值看涨', lw=1.5, linestyle='--')
        plt.plot(x, 2 * strategy_dict['long_call'], 'plum', label='买入看涨', lw=1.5, linestyle='--')
    if name=='卖出蝶式看跌':
        plt.plot(x, strategy_dict['short_put_in'], 'cornflowerblue', label='卖出实值看跌', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_put_out'], 'lightcoral', label='卖出虚值看跌', lw=1.5, linestyle='--')
        plt.plot(x, 2 * strategy_dict['long_put'], 'plum', label='买入看跌', lw=1.5, linestyle='--')
    if name=='铁蝶式策略':
        plt.plot(x, strategy_dict['long_put_in'], 'cornflowerblue', label='买入实值看跌', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['long_call_out'], 'lightcoral', label='买入虚值看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_call'], 'plum', label='卖出看涨', lw=1.5, linestyle='--')
        plt.plot(x, strategy_dict['short_put'], 'lightgreen', label='卖出看跌', lw=1.5, linestyle='--')
    
    # 坐标轴设置
    ax = plt.gca()
    ax.spines['left'].set_position(('data',6))
    ax.spines['bottom'].set_position(('data',0))
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    plt.legend(fontsize=15)
    plt.text(6.3, 7, '策略收益', fontsize=15)
    plt.text(10.5, -2, '标的价格', fontsize=15)
    
    return plt

保守的な取引戦略

保険戦略

オプションは、投資家が市場の不利な変化によって引き起こされる損失を回避するのに役立つ保険ツールとして使用でき、市場の下値リスクを効果的に防ぐことができます。

ここに画像の説明を挿入します

方法
  1. 原資産を保持するか原資産を購入しながら、対応する数のプット オプションを購入します。
  2. 原資産を売却しながら、対応する数のコール オプションを購入します。
該当シーン
  1. 相場は上がると予想しているが、相場が下がるのではないかと心配
  2. 市場は下落すると予想されるが、原資産を売却できない(質権など)
  3. 現在保有している原資産は良好なリターンを達成しており、リターン上昇の余地を残しながらリターンを固定したいと考えています。
予防
  1. 長期的に楽観的な目標には保険をかける必要があり、そうでない場合は売却する必要があります。
  2. 適切な行使価格を選択する
  3. 有効期限は一致する必要があります

ネックライン戦略

保険戦略には保険コストが必要です。プット オプションの購入には、より高い保険料の支払いが必要になる場合があります。この場合、カラー戦略を採用して保険コストを削減できます。

保険戦略を保有しながらコールオプションを販売し、コールオプションから得られる保険料収入を保険戦略全体のコスト削減に充てるというものです。

ここに画像の説明を挿入します

カバードポジションオープン戦略

ここに画像の説明を挿入します

方法

原資産を保有しながら、対応する数のコール オプションを売却してプレミアム収入を獲得します。(対象金額全額を保証とさせていただきますので、別途手付金として現金をお支払いいただく必要はございません)

該当シーン

この方法は、原株の将来的な上昇が見られない、または中程度の上昇が予想される場合に、収益を高め、コストを削減するために使用できます。

予防
  1. 契約の選択。アット・ザ・マネーまたはわずかにアウト・オブ・ザ・マネーの契約を選択し、ディープ・アウト・オブ・ザ・マネーの契約の場合は保険料が安くなるようにするのが最善です。
  2. 心の準備。一方で、即時行使でも心理的目標価格で売却できるように、心理的売却価格に近い行使価格を選択することをお勧めしますが、一方で、目標が下落し続けるリスクを防ぐことはできません。そして急激な増加はさらに大きな損失をもたらすでしょう。
  3. タイムリーに調整を行ってください。市場が予想どおりにならない場合は、ポジションをクローズするか、適時に戦略を変更する必要があります。

合成戦略

ここに画像の説明を挿入します

シンセティック戦略とは、オプションを利用して原資産のリターンを模倣する取引戦略で、これを利用することで原資産と同等のリターンを低コストで得ることができ、投資家の資金利用効率が向上します。 。

方法

同じ権利行使価格と同じ有効期限でコール オプションを買い、プット オプションを売ります。

該当シーン

ターゲットの将来の傾向について非常に楽観的である場合、この取引戦略を使用してコストを削減し、市場の見通しをロングにすることができます。

押し目を買って価格を固定する

方法

目標価格でターゲットを購入する注文を出し、目標価格での行使価格でプット オプションを売却します。

価格が目標価格まで下がった場合は、目標を購入するだけで同時にプレミアムを獲得できます (アカウントに対応する目標が存在する必要があります)。価格が目標まで下がっていない場合、オプションは行使されません。プレミアムを獲得できます。

スイングトレーディング市場戦略

ストラドル戦略

ここに画像の説明を挿入します
ここに画像の説明を挿入します

方法
  1. Buy Straddle : 同じ数量および同じ権利行使価格のコール オプションとプット オプションを購入します。
  2. ストラドルの売り: 同じ権利行使価格で同じ数のコールとプットを売ります。
該当シーン
  1. 今後相場見通しに大きな変動が予想されるため、買いストラドル戦略
  2. 今後は軽微な調整や市場ショックのみが予想されるため、ストラドル戦略を売ります。
予防

ストラドル購入による最大損失は限られており、潜在的な利益は無制限ですが、2倍のプレミアムが支払われ、コストは一般に比較的高くなります。

スプレッドベッティング

同一の内容で他の要素が異なるオプションの買いと売りを同時に行う取引を指し、すべてのスプレッド取引は同じオプションの種類で構成され、支出または収入のプレミアムを調整することによってポートフォリオ戦略の損益がコントロールされます。 。

オプションの種類に応じて、コール・スプレッド戦略とプット・スプレッド戦略に分けられ、オプションの行使価格と有効期限に応じて、垂直スプレッド、水平スプレッド、斜めスプレッドの3つのカテゴリーに分けられます。戦略構築時間 ロイヤルティの収入または支出の差は、収入型スプレッドと支出型スプレッドに分けられます。

ブルスプレッド ブルスプレッド

ここに画像の説明を挿入します

限られた利益と限られた損失。

強気であることを前提として、より高い権利行使価格でコールを売れば、清算されることを心配する必要はありません。

方法

安く買って高く売る: 低い権利行使価格でコール オプションを購入し、より高い権利行使価格で同じ有効期限のコール オプションを売ります。

行使価格が高くなるほどプレミアムは低くなるため、強気市場のコールスプレッドで買われたオプションは売られたオプションよりも割高となり、キャッシュフローの純流出、つまり経費スプレッドが発生します。

所得

ここに画像の説明を挿入します

K1 はコール オプションの買いの約定価格、K2 はオプションの売りの約定価格、K1 < K2、St は満期日の原資産の価格です。

これは次のように説明できます: 投資家は行使価格 K1 のコール オプションを所有し、行使価格 K2 のオプションを売却することで、株価上昇時に潜在的な利益を放棄し、行使によりオプション手数料を受け取ります。補償としてK2の価格。

該当シーン

将来の市場に対して適度に強気になるか、より低いコストで基礎価格の上昇による利益を得ることを期待する

弱気相場のスプレッド

ここに画像の説明を挿入します

弱気市場スプレッド戦略は、原価が下落したときに投資家がこの戦略を使用して、最大損失を固定しながら市場下落から利益を得ることができることを意味します。

方法

高値で買って安値で売る: より高い権利行使価格でコール オプションを買い、より低い権利行使価格で同じ有効期限のコール オプションを売ります。

行使価格が高くなるほどプレミアムは低くなるため、弱気市場のコールスプレッドで買われたオプションは売られたオプションよりも安くなり、インカム型スプレッドであるキャッシュフローの純流入が生じます。

所得

ここに画像の説明を挿入します

K1 は売りのプット オプションの約定価格、K2 は買いのオプションの約定価格、K1 < K2、St は満期日の原資産の価格です。

該当シーン

将来の市況に対してやや弱気になるか、価格が横ばいの場合でも利益を得ることを期待する

ボックススプレッド ボックススプレッド

これは、行使価格 K1 および K2 のコール オプションで構成されるブル スプレッドと、同じ行使価格のプット オプションで構成されるベア スプレッドの組み合わせです。
ここに画像の説明を挿入します

表に示すように、ボックス スプレッドの割引値は( K 2 − K 1 ) e − r T (K_2-K_1)e^{-rT}です。( K2K1) er T、その値が異なる場合、裁定取引の機会があります。ボックス スプレッドの市場価格が低すぎる場合は、ボックス スプレッドを購入します。権利行使価格 K1 でコール オプションを買い、権利行使価格 K2 でプット オプションを買い、権利行使価格 K2 でコール オプションを売り、権利行使価格 K1 でプット オプションを売ります。ボックスのスプレッドの市場価格が高すぎる場合は、ボックスを売却します。権利行使価格 K2 でコール オプションを買い、権利行使価格 K1 でプット オプションを買い、権利行使価格 K1 でコール オプションを売り、権利行使価格 K2 でプット オプションを売ります。

バタフライスプレッド戦略

高い損益率と高いレバレッジを備えた戦略であり、原価が一定の範囲内で変動する状況に適しています。

ここに画像の説明を挿入します

バタフライ戦略を購入する

レンジ変動に使用される戦略は、ボラティリティを利用して利益を上げる戦略でもあります。

バタフライ コールを購入するということは、イン ザ マネー コール オプションを 1 つ購入し、アット ザ マネー コール オプションを 2 つ売却し、アウト オブ ザ マネー コール オプションを 1 つ同時に購入することを意味します(行使価格の間隔は等しく、同時に有効期限が一貫した戦略です)。

ロング バタフライ プットは、等間隔の権利行使価格と同じ有効期限で、イン ザ マネーのプットを 1 つ買い、アット ザ マネーのプットを 2 つ売り、アウト オブ ザ マネーのプットを 1 つ買います。

バタフライ戦略を売る

これは方向性のないトレンド戦略であり、ボラティリティを利用して利益を上げる戦略でもあります。

コール オプションの売却とは、イン ザ マネー コール オプションを 1 つ売却し、アット ザ マネー コール オプションを 2 つ購入し、アウト オブ ザ マネー コール オプションを 1 つ売却することを意味します。権利行使価格の間隔は等しく、有効期限は次のとおりです。同じ。

プット オプションの売却とは、イン ザ マネーのプット オプションを 1 つ売却し、アット ザ マネーのプット オプションを 2 つ購入し、アウト オブ ザ マネーのプット オプションを 1 つ売却することを意味します。行使価格の間隔は等しく、有効期限は次のとおりです。同じ。

利点は、最初にポジションを確立するためのコストがかからず、収入が得られる、つまり収入ベースの戦略であることです。

アイアンバタフライ戦略

ここに画像の説明を挿入します

価格が一定の範囲内で変動する株から利益を得る能力。、市場見通しのボラティリティを低ボラティリティと判断。

アイアン バタフライを購入する場合、まずブル プット スプレッドがサポートで取引され、次に価格がレジスタンスから反発したときにベア コール スプレッドが取引され、アイアン バタフライのオプション ポートフォリオ戦略が作成されます。

低い権利行使価格でプット オプションを買い、中程度の権利行使価格でプット オプションを売り、中程度の権利行使価格でコール オプションを売り、より高い権利行使価格でコール オプションを購入します。

タカ戦略

これはマーケットニュートラル戦略であり、やや不安定な市場でトレンド戦略では利益を上げることが難しい場合に、強気市場のスプレッドと弱気市場のスプレッドを組み合わせて構築されるレンジベースの利益戦略です。

バタフライ戦略よりもコストは若干高くなりますが、投資家に利益の幅が広い戦略であり、アイアン・イーグル戦略とハゲタカ戦略に分けられ、前者は初期段階で収入が得られ、後者は初期段階で支出が発生します。 。

アイアンイーグル戦略

原資産が次期もあまり変化せず、狭い範囲内で変動し続けると予想される場合、またはイベントリスク発酵期間中にさまざまなオプションのインプライド・ボラティリティが歴史的高値に達した場合、アイアン・イーグル・オプションのポートフォリオは、売られる。

アウト・オブ・ザ・マネーのプット・オプションを低い行使価格で買い、アウト・オブ・ザ・マネーのプット・オプションを低い行使価格で売り、アウト・オブ・ザ・マネーのコール・オプションを中間で売ります。中間でより高い権利行使価格を設定し、同時により高い権利行使価格のアウト・オブ・ザ・マネーのコール・オプションを購入します。

ハゲタカ戦略
  1. 低い権利行使価格でコールを買い、低または中程度の権利行使価格でコールを売り、中または高の権利行使価格でコールを売り、高い権利行使価格でコールを買います。
  2. 低権利行使価格のプットを購入し、低権利行使価格から中権利行使価格のプットを売り、中高権利行使価格のプットを売り、高権利行使価格のプットを購入します。

ストリップとストラップ

シーケンスの組み合わせは、同じ権利行使価格と有効期限を持つ 1 つのヨーロピアン コールと 2 つのヨーロピアン プットのロング ポジションで構成されます。ストリップ ポートフォリオは、同じ権利行使価格と有効期限を持つ 2 つの欧州コール オプションと欧州プット オプションのロング ポジションで構成されます。

この順序の組み合わせでは、投資家は価格が大幅に変動すると考えており、上昇する可能性よりも下落する可能性の方が大きいと考えています。バンドの組み合わせでは、投資家も大きな価格変動があると考えているが、下落する可能性よりも上昇する可能性の方が大きい。

ここに画像の説明を挿入します

スプレッド比率

これは中立戦略であり、一定数のオプションを購入し、より多くのオプションを売却する (またはより多くのオプションを購入する) ことを指します。原資産と有効期限は同じですが、行使価格は異なります。

比例スプレッド: 1 つのコールを売ると収入が制限されると考えるかもしれないので、アウトオブバリューのコールを 2 つ購入し、アットザマネーのコールを 1 つ売ることができます。

ここに画像の説明を挿入します

コールレシオスプレッド

適用可能なシナリオ:価格は変動する可能性がありますが、大幅な上昇はありません。

方法: 低い行使価格 (K1) で一定数のコール オプションを購入し、より高い行使価格 (K2) でより多くのコール オプションを売却します。高い行使価格に対する証拠金は M2 です。

マントラ: すべて強気、比率で安く買って高く売る。

プット比率スプレッド

適用可能なシナリオ: 価格は変動する可能性がありますが、急激な下落はありません。

方法: 高い行使価格 (K2) で一定数のプット オプションを購入し、より低い行使価格 (K1) でより多くのプット オプションを売却します。低い行使価格に対する証拠金は M1 です。

マントラ: すべて弱気、比率で高く買って低く売る。

異時点間戦略

有効期限の異なる売買契約。行使価格が等しい場合はカレンダー スプレッド戦略、行使価格が等しくない場合はダイアゴナル 戦略となります。

カレンダースプレッド戦略

方法: 有効期限が近いオプション契約を売り、同じ数量、同じ行使価格、同じ種類で有効期限が長いオプション契約を買います。

アービトラージ: 同じ行使価格のオプションの場合、近日契約の価値は遠日契約の価値よりも小さくなければなりません。したがって、買いカレンダーのスプレッド戦略の構築には純費用がかかりますが、価格設定が間違っている場合は、 、アービトラージが可能です。

ここに画像の説明を挿入します
ここに画像の説明を挿入します

「3 時間で素早くオプションを学ぶ」、「2 週間でオプション戦略を征服する」、Xing Buhang のライブクラス、および Jiang Lubin から抜粋したメモです。

おすすめ

転載: blog.csdn.net/food_for_thought/article/details/121234674