[참고] 옵션 v1.0(파이썬 버전)

옵션

중개는 자원의 실현이고, 선물은 용기와 행운의 실현이며, 옵션은 지식의 실현입니다.

정의 : 옵션은 18세기 후반 미국과 유럽 시장에서 시작된 계약으로, 보유자에게 해당 날짜 이전 언제든지 고정 가격으로 옵션을 사고 팔 수 있는 권리를 부여하는 계약을 의미합니다. .

여기에 이미지 설명을 삽입하세요.

옵션 거래 인터페이스는 T자형 호가 테이블이라고 하며, 위는 OKEX 의 옵션 계약 인터페이스입니다 .

안에,

  1. 가운데 열은 행사 가격 입니다 . 즉, 옵션이 만기일에 실행되어 양측에서 거래될 수 있는 가격입니다.
  2. 맨 윗줄은 만료 날짜 입니다 . 특정 연도와 특정 월에 만료되는 선물로 구분되는 선물과 마찬가지로 만료 날짜가 다른 다양한 옵션이 있습니다.
  3. 검은색 상자는 콜옵션과 풋옵션을 나타냅니다. 그 안에서 구매 및 판매 작업을 수행할 수 있습니다.
  4. 콜옵션과 풋옵션 모두 매수호가와 매도호가가 있습니다. 즉, 행사 가격으로 옵션을 매수하거나 매도하더라도 해당 매수 가격이나 매도 가격으로 이루어집니다.

여기에 이미지 설명을 삽입하세요.
위 그림은 옵션 매수 시 선택하는 단계를 나타낸 것으로 만기일을 선택한 후 행사가격을 선택하고 마지막으로 콜, 풋, 매수, 매도를 선택하는 순서입니다.

소개

사례

귀하가 2020년 3월 6일에 만료되고 행사 가격이 8750인 콜 옵션을 $250에 매수했다고 가정합니다(데이터는 이전 그림의 8번째 행에서 가져옴).

이는 2020년 3월 6일에 미화 8,750달러의 가격으로 1비트코인을 구매할 권리가 있음을 의미합니다.

최종 가격 프로세스 최종 소득
9000으로 상승 (9000-8750)-250 0
10,000으로 상승 (10000-8750)-250 1000
8000으로 떨어졌어요 권리를 행사하지 않음 -250
500까지 권리를 행사하지 않음 -250

2020년 3월 6일에 만료되는 행사가격 8750의 풋옵션을 $215에 매수한다고 가정해 보겠습니다.

이는 2020년 3월 6일에 1비트코인을 US$8,750의 가격에 판매할 권리가 있음을 의미합니다.

최종 가격 프로세스 최종 소득
9000으로 상승 권리를 행사하지 않음 -215
10,000으로 상승 권리를 행사하지 않음 -215
8000으로 떨어졌어요 (8750-8000)-215 535
500까지 (8750-500)-215 8035

콜옵션 매도와 풋옵션 매도는 매수와 반대입니다. 예를 들어 콜 옵션을 매도할 때 구매자가 권리를 행사하면 돈을 잃게 되는데, 첫 번째 경우 가격이 10,000으로 오른 후 구매자에게 이 가격으로 8,750달러에 1비트코인을 구매할 수 있는 권리를 주어야 합니다. , 따라서 8750-10000+250=-1000, 즉 판매자는 US$1,000의 손실을 보고, 구매자는 옵션을 행사하지 않을 때 US$250의 옵션 프리미엄을 얻습니다. 풋옵션 매도의 경우에도 마찬가지입니다.

[참고]: 위의 내용은 처리 수수료를 고려하지 않았습니다.

네 가지 기본 옵션 거래

적용 가능한 시장 상황 프리미엄 소득 손실
통화 옵션 구매 큰 상승 지불하다 끝없는 프리미엄
풋옵션 매수 큰 하락 지불하다 끝없는 프리미엄
통화 옵션 판매 상승하지 않습니다 요금 프리미엄 끝없는
풋옵션 매도 떨어지지 않을 것이다 요금 프리미엄 끝없는
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()

여기에 이미지 설명을 삽입하세요.

지금 바로:

  • 콜 옵션 매수 : 통화 가격이 하락할 때 최대 손실은 옵션 수수료이고, 통화 가격이 상승하면 이익은 무한하며 이것이 자체 이익, 즉 옵션 수수료입니다.
  • 콜옵션 매도 : 환율이 떨어지면 옵션수수료까지 벌 수 있고, 환율이 오르면 무한한 손실을 볼 수 있습니다.
  • 풋옵션 매수: 통화 가격이 상승하면 가장 많이 잃는 것은 옵션 프리미엄이고, 통화 가격이 하락하면 하락할수록 더 많은 이익을 얻습니다.
  • 풋옵션 매도: 통화 가격이 상승하면 옵션 수수료를 가장 많이 얻을 수 있고, 통화 가격이 하락하면 하락할수록 손실이 커집니다.

기본 용어

유럽옵션(European option) : 옵션을 매수한 당사자가 옵션의 만기일에만 행사할 수 있는 옵션을 말한다.

미국식 옵션 : 구매자는 만료일 또는 거래일 이전에 계약을 체결할 것을 제안할 수 있습니다.

실질가치, 외가격, 등가격 : 실질가치는 행사가격이 시장가격보다 낮은 것을 의미한다. 즉, 프리미엄을 고려하지 않고 옵션을 행사하는 것이 수익성 있는 옵션이다. out-of-value는 행사가격이 실질가치와 반대라는 뜻이며, 가격이 시장가격보다 높은 경우, 매수 후 프리미엄을 고려하지 않고 옵션을 행사하면 돈이 됩니다. 옵션을 잃는 경우, 등가격이고 행사 가격이 시장 가격과 같을 경우 옵션을 즉시 행사하면 이익이나 손실이 발생하지 않습니다.

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 - \시그마\sqrt T=에스0( 1)-_r T N(d2)=_r T N(d2)-에스0N ( -d _1)1= ln ( S0/ 케이 )+( r+2 /2)2= ln ( S0/ 케이 )+( r-2 /2)=1-

이러한 변수는 다음과 같습니다.

  • 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으로 병합하고 시간과 옵션 이름의 두 열을 정렬하는 방법을 배웁니다.

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)
내재변동성

내재변동성(Imped volatility) : 시장참여자가 미래 변동성에 대해 기대하는 가치로, 특정 계약의 내재변동성이 다른 계약에 비해 현저히 높을 경우 해당 계약은 과대평가되며, 그 반대의 경우도 마찬가지입니다.

콜옵션이든 풋옵션이든 옵션 행사가가 상승함에 따라 내재변동성은 계속 감소하지만(변동성 미소), 이것이 절대적인 것은 아닙니다(변동성 왜도).

은닉파 계산 방법: 이분법 및 Newton Raphson 방법

뉴턴 반복법은 계산 단계가 많기 때문에 효율성이 상대적으로 떨어지는 경우가 많으며, 결과의 정확도가 더욱 향상되면 계산을 수행하는 데 시간이 더 오래 걸립니다.

이분법 의 논리 는 변동성이 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

변동성 거래

변동성 미소

**변동성 스마일**은 옵션의 내재변동성과 행사가격의 함수 사이의 관계를 설명하는 그래프입니다. 콜옵션이든 풋옵션이든 행사가격이 현물가격에서 더 벗어날 때 기본 자산인 옵션의 변동성은 스마일 곡선과 유사합니다(양쪽 끝이 큼).

여기에 이미지 설명을 삽입하세요.

그러나 대부분의 거래일에는 이는 변동성 스큐로 나타납니다. 좁은 의미의 변동성 스큐는 옵션의 행사 가격이 작은 것에서 큰 것으로 변할 때 옵션의 내재 변동성이 큰 것에서 작은 것으로 변하는 것을 의미합니다. 즉, 내재 변동성은 행사 가격의 감소 함수입니다.

행사가가 낮은 옵션(일반적으로 깊은 내가격 풋옵션 또는 깊은 내가격 콜)은 내재 변동성이 더 높습니다. 반면, 행사가가 높은 옵션(일반적으로 깊은 내가격 콜)은 내재 변동성이 더 높습니다. 내재변동성, 풋옵션 또는 깊은 외가격 콜옵션), 내재변동성이 더 낮습니다. 즉, 중요한 결론은 다음과 같습니다. 내재 변동성은 콜 옵션이든 풋 옵션이든 행사 가격의 감소 함수입니다 .

숨겨진 파동 반사성

숨겨진 옵션 파동의 상단은 일반적으로 중요한 작동 신호입니다 . 즉, 모두가 당황하여 높은 가격에 풋 옵션을 구매할 때 시장 가격이 하단에 있는 경우가 많으며 이는 역거래입니다(즉, 버핏의 " 남들은 두려워하는데 나는 욕심이 많다.")

"Macmillan Talks Options"에서 Macmillan은 내재 변동성을 사용하여 추세 변화를 예측할 수 있다고 믿습니다. 주가가 하락하면 풋옵션의 내재변동성이 증가한다(주가가 상승하면 콜옵션의 내재변동성이 증가한다). 따라서 주가 하락세가 끝나려고 할 때 주식을 포착할 수 있다면 이러한 옵션이 프리미엄 가격에 있다는 것을 알 수 있습니다. 그리고 주가가 당장 강세 추세에 진입하지는 않더라도 최소한 구조적 바닥에 도달해 안정될 것입니다.

따라서 MacMillan은 정상적인 상황에서 주가 하락 중에 풋옵션 내재 변동성이 최고점에 도달하면 주가가 최소한 안정되고 심지어 반등할 수도 있다고 믿습니다. 마찬가지로 주식 상승 중에 콜 옵션 내재 변동성이 최고점에 도달하면 주식은 최소한 안정화되고 너무 빠르게 상승하지는 않지만 안정적으로 유지되거나 조정이 있을 수 있습니다.

위의 규칙은 스톡 옵션보다 지수 옵션에 적용될 때 더 잘 작동하는 경우가 많습니다.

시장이 급락하고 풋옵션 내재변동성이 급등하면 시장은 바닥에 가까워지고 있습니다. 풋옵션 내재변동성이 마침내 최고점에 도달하고 하락하기 시작하면 시장은 바닥을 치는 경우가 많습니다. 반대로, 풋 또는 콜 내재 변동성이 너무 낮아지면 시장 변동성(시장이 하락할 필요도 없고 상승할 필요도 없음)을 예상할 수 있습니다. 이는 어느 방향으로든 발생할 수 있습니다. 즉, 옵션 가격이 더 낮을 때입니다. 볼린저 밴드(Bollinger Band)는 시장 방향을 예측하기 어렵습니다.(숨겨진 파동도 낮지만 방향이 불확실합니다.) 옵션 가격이 볼린저 밴드에 있을 때 예측 가능합니다(숨겨진 파동은 높고 원래 방향이 종료됩니다). .

변동성 타이밍

외가격 옵션에 대한 변동성 변화의 영향은 상응하는 실물 또는 등가격 옵션보다 더 클 것입니다 . 이는 Sheldon Natanenberg의 "옵션 변동성과 가격 책정을 위한 고급 거래 전략 및 기술"의 결론입니다. 실제 가치 옵션은 변동성 변화에 가장 덜 민감하다는 것을 알 수 있습니다. 이는 옵션이 내가격이 되면서 옵션이 기초 가격 변화에 점점 더 민감해지고 변동성 변화에는 덜 민감해지기 때문입니다. 투자자와 거래자는 옵션 시장에 진입할 때 주로 변동성 특성을 추구하기 때문에 옵션 시장의 거래량은 대부분 변동률 변화에 가장 민감한 등가격 및 외가격 옵션에 집중되어 있습니다. 그래서 우리는 옵션에 투자하는 가장 중요한 이유는 변동성, 즉 타이밍이라는 점을 이해해야 합니다. A주가 하락할 것입니다.이것이 옵션 투자의 주요 목적이므로 옵션은 변동성 거래를 매우 심각하게 받아들입니다.

숨겨진 파도의 특별한 경우

일반적으로 기초 가격이 크게 오르거나 내리면 은닉파가 오르지만, 때로는 시장이 상승할 때 2020-10-09, 2021-07-12 등 은닉파가 떨어지기도 하고 때로는 시장 등락폭이 커지기도 합니다. 범위 크지는 않지만 2020-04-28처럼 은닉파가 급격하게 상승하며, 은닉파 상승의 충분조건은 손절매 주문, 즉 상승세가 매우 심한 상황에서 숏포지션이 발생하는 것 롱 포지션을 원하고 원래는 숏 포지션을 청산하려고 하는데 포지션 청산이 계속되면서 포지션이 감소하게 됩니다.

그리스인

  • 델타(Delta) : 기초가격에 대한 옵션가격의 변화율, 즉 기초주가가 1위안 변할 때 옵션가격이 얼마나 변하는지를 나타낸다.
  • 감마(Gamma) : 기초 가격에 대한 옵션 델타의 변화율, 즉 기초 가격이 1위안만큼 변할 때 옵션 델타가 얼마나 변하는지를 나타냅니다.
  • Theta : 만기일에 따른 옵션 가격의 변화율, 즉 하루 이후 옵션 가격이 얼마나 변하는지를 나타냅니다.
  • 베가(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
델타

옵션 가격의 경우, 기초 가격의 변화와 변동성은 시간의 흐름이 옵션에 미치는 영향보다 훨씬 더 큽니다. 여기에는 두 가지 이유가 있는데, 첫째는 기초자산 가격의 변화만이 옵션의 내재가치를 직접적으로 변화시킬 수 있기 때문입니다. 만료됩니다. 두 번째 이유는 일단 변동성이 커지면 행사가격이 더 먼 옵션이 실제 가치 옵션으로 전환될 가능성이 높아져 현재 옵션 가격이 더 비싸지기 때문입니다.

옵션의 델타( Δ \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}1= ln (케이에스0+( r+2 /2)

풋옵션의 델타의 이론적인 값은 N(d1)-1이므로 풋옵션의 델타는 0보다 크지 않은 음의 값이다. 일반적으로 콜옵션의 델타값은 0~1, 풋옵션의 델타값은 -1~0입니다.

옵션 유형 방향 델타 표현식
유럽 ​​통화 옵션 Δ=N(d1)
짧은 Δ=-N(d1)
유럽 ​​풋옵션 Δ=N(d1)-1
짧은 Δ=1-N(d1)

델타는 기초 자산과 다양한 옵션 포지션으로 구성된 포트폴리오의 위험을 측정하는 중요한 지표입니다. 또 다른 기능은 헤징 자산 보유 시 헤징 비율 역할을 하는 것입니다. 상대적으로 거의 사용되지 않는 또 다른 실용적인 의미는 옵션이 만료 시 돈에 있을 확률과 대략 동일하다는 것입니다. 그러나 실제 거래 세계에서는 일반적으로 Delta를 매우 가치 있는 가치로 간주하는 거래자 중 신뢰의 확률이 있습니다.

특징:

  1. 등가격 옵션의 델타 값은 일반적으로 약 0.5입니다.
  2. 콜 옵션에서 실제 화폐 옵션의 델타 값은 일반적으로 0.5보다 크고 1보다 작으며, 깊은 실제 화폐 옵션의 델타 값은 1에 가깝습니다.
  3. 외가격 콜옵션의 델타 값은 일반적으로 0.5보다 작습니다. 행사가격이 주가보다 높을수록 해당 외가격 옵션의 델타 가치는 작아집니다. 만료가 임박한 실물 옵션의 델타 값은 1.00에 가까운 반면, 외가격 옵션의 델타 값은 0에 가깝습니다. 이는 실제 가치 옵션이 만료 날짜에 가까울 때 발생하기 때문입니다. , 시간가치는 0이고, 옵션가치의 변동은 전적으로 내재가치의 변동에 따른 것이며, 외가격 옵션의 만기가 가까워지면 이때 델타값은 1로 판단된다. 날짜의 경우 내재가치와 시간가치가 모두 0이고 이때 Delta 값은 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%와 같다는 것을 의미합니다. Black-Scholes-Merton 모델에 따르면 유럽식 콜 옵션과 유럽식 풋 옵션의 감마 값 표현은 다음과 같습니다.

Γ = 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}\\=에스0 N (1)안에 ,1= ln (케이에스0+( r+2 /2)N (엑스)=오후 2 1이자형- x2 /2모델링을 용이하게 하기 위해 다음 과 같이 구성됩니다 .=에스0 N (1)=에스02πT _ _ 1이자형- d12/ 2

전략

중립 전략 아래 더욱 성숙한 전략은 감마 스캘핑(Gamma Scalping)입니다 . 이 전략의 핵심 접근 방식은 옵션(감마 매수)을 매수한 다음 기초 자산의 변동으로 인해 발생하는 가치를 앞뒤로 얻는 것입니다. 간단히 말하면, 이 전략은 기초자산이 미래에 크게 변동할 것이라고 예측하기 위해 일정 수수료를 지불한다는 의미입니다. 옵션 만료 기간 동안 변동성이 충분히 크지 않거나 변동성이 우리에게 불리한 방향으로 움직이는 경우 전략에 손실이 발생하며 이는 위험이기도 합니다. 따라서 이 전략은 일반적으로 옵션의 변동성이 낮을 때 사용되는 것을 좋아합니다. 우선, 낮은 변동성 하에서는 옵션이 저렴하고 감마 롱 포지션 비용이 상대적으로 낮습니다. 또한, 향후 변동성이 커질 경우 베가 롱 포지션을 통해 어느 정도 수익을 낼 수도 있습니다. IV가 낮은 상태에서는 Delta와 Gamma가 더 민감해지기 때문에 변동할 때 더 많은 수익을 얻을 수 있습니다. IV가 높은 상태에서는 Delta와 Gamma가 둔감해 보이고 동일한 이익을 달성하려면 더 큰 변동이 필요합니다. 대체로 옵션이 단기적으로 변동하지 않거나 변동성이 충분히 크지 않으면 전체 전략이 손실을 입게 됩니다.

감마와 자산 가격의 관계

감마 곡선은 비교적 정규분포곡선에 가깝고 곡선은 두 부분으로 나눌 수 있는데, 첫 번째 부분은 기초자산 가격이 옵션 실행 가격보다 현저히 낮은 경우, 즉 콜옵션이 크게 벗어난 경우입니다. 등가격, 풋옵션의 가치가 매우 높음 옵션 감마 기초자산 가격의 증가함수, 두 번째 문단은 기초자산 가격이 옵션 실행 가격보다 약간 낮거나 높음 , 옵션 감마는 기초 자산 가격의 감소 함수입니다. 또한 옵션이 등가격 옵션에 가까울 때, 즉 기초자산 가격이 옵션 행사가에 가까울 때 옵션 감마값은 최대가 됩니다.

감마와 옵션 기간의 관계

등가격 옵션의 경우 감마는 옵션 기간의 감소 함수인 반면, 단기 등가격 옵션의 감마는 매우 높으므로 만기일에 가까울수록 감마는 옵션 기간에 따라 감소합니다. 등가격 옵션의 델타 값은 기초 자산 가격의 변화에 ​​더 민감합니다. 또한, 외가격 옵션이든 실질 옵션이든 옵션 기간이 상대적으로 짧은 경우 감마는 해당 기간의 증가 함수가 되고, 기간이 길어지면 감마는 해당 기간의 감소 함수가 됩니다. .

여기에 이미지 설명을 삽입하세요.

세타

옵션 포트폴리오의 세타(Θ)는 다른 조건이 변하지 않은 상태에서 시간 변화에 대한 포트폴리오 가치 변화의 비율로 정의됩니다. 세타(Theta)는 옵션의 가치가 시간이 지남에 따라 감소하는 비율을 측정한 것입니다. 일부 투자자들은 이전에 옵션 거래 시 올바른 방향을 선택했음에도 불구하고 왜 결국 돈을 벌지 못했는지 궁금해했을 수도 있습니다. 문제는 종종 Theta에 있습니다.

세타는 때로 결합 시간 붕괴라고도 합니다. 비배당 주식에 대한 유럽식 콜 옵션의 경우 세타 계산 공식은 Black-Scholes 모델에서 파생될 수 있습니다.

Θ = − 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}는 표준 정규 분포의 밀도 함수입니다.=-2 에스0N (1)-r _r T N(d2)그 중 N (엑스)=오후 2 1이자형- x2/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}\\=-2 에스0N (1)+r _r T N(d2)=전화 _ _+r _- r T

N(−d2) = 1 − N(d2)이므로 풋 옵션의 세타는 해당 콜 옵션의 세타보다 r K e − r T rKe^{−rT} 만큼 높습니다.r _r T

Theta(Θ) 자체는 다음과 같습니다.

Θ = ∂ Π ∂ T 여기서 Γ는 여전히 옵션 가격을 나타내고 T는 옵션 기간을 나타냅니다. \Theta=\frac{\partial\Pi}{\partial T}\\ 그 중 \Gamma는 여전히 옵션 가격을 나타내고, T는 옵션 기간을 나타냅니다.= Π그 중 Γ는 여전히 옵션 가격 나타내고 , T 옵션 기간 나타냅니다 .

옵션의 세타는 일반적으로 음수입니다. 왜냐하면 다른 조건이 동일할 때 용어가 감소함에 따라 옵션의 가치도 감소하기 때문입니다. 주가가 낮을 때 세타는 0에 가깝습니다. 등가격 콜옵션에 해당하는 세타는 크고 음수입니다. 주가가 높을 때 세타는 r K e − r T rKe^{−rT} 에 가깝습니다.r _- r T . 따라서 우리는 다음과 같은 결론을 내릴 수 있습니다. 콜 옵션을 매수할 때 등가격 옵션을 매수해서는 안 되며 외가격 옵션을 매수.

옵션이 등가격일 때 옵션의 시간가치 변화는 더욱 뚜렷해집니다. 이는 외가격 옵션의 경우 시간의 변화가 아닌 주가의 변화가 가장 크기 때문입니다. 옵션 가치에 영향을 미칩니다.

세타와 자산 가격의 관계
  1. Theta와 기초 자산 가격 사이의 곡선 모양은 콜 옵션이든 풋 옵션이든 매우 유사합니다.
  2. 옵션 행사가격(6위안/주) 부근, 즉 등가격 옵션에 가까울 때 콜옵션이든 풋옵션이든 세타는 음수이고 절대가치가 크다는 뜻이다. 옵션의 가치는 시간에 따라 변하며 변화에 매우 민감합니다.
  3. 기초 자산 가격이 실행 가격보다 높을 때 Theta의 절대 가치는 하락 단계에 있습니다.
  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}에스=에스0이자형x ,엑스=1에스0에스.

비배당 주식의 단일 파생상품 가격은 미분방정식 x = 1 T ln ⁡ STS 0 x=\frac1T\ln\frac{S_T}{S_0}를 충족해야 합니다.엑스=1에스0에스. 따라서 이들 파생상품으로 구성된 자산 포트폴리오 π도 블랙숄즈 모형으로 구성된 미분방정식을 만족해야 한다.

∂ Π ∂ t + r S ∂ Π ∂ S + 1 2 σ 2 S 2 ∂ 2 Π ∂ S 2 = r Π Θ + r S Δ + 1 2 σ 2 S 2 Γ = r Π 또한 값은 다음과 같습니다. 결정되지 않음 D 델타가 일정하면 D 델타 = 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\\ Also\Theta=\frac{\partial\pi}{\partial t},\Delta=\frac{\partial\pi }{\partial S},\Gamma=\frac{\partial^2\pi}{\partial S^2}\\ Π+r S에스 Π+212S _2에스22P _=r Π+r S Δ+212S _2C _=r Π포트폴리오 델타 중립적 이라면 델타 _ _ _ _ _ _ _ _ _ _ _ _=0 , 사용 가능 _+212S _2C _=r Π어디서 Θ=∂π _,=에스∂π _,=에스2오후 2

이 공식은 Θ \ThetaΘ가 크고 양수인 경우 거래 포트폴리오의 감마도 크지만 음수이므로 이 결론은 반대의 경우에도 마찬가지입니다. 이는 이론적으로 델타 중립 거래 조합의 경우 세타를 감마의 근사치로 사용할 수 있음을 설명합니다.

옵션 전략

상태 전략
상승을 예상하지만 폭락을 두려워하라 보험 전략
보험전략 보험료는 감소하고, 증가 폭은 크지 않을 것으로 예상됨 네크라인 전략
적당한 상승 커버된 포지션 오프닝
시장 전망에 대해 낙관적이며 비용 절감 합성 전략
시장 전망은 방향성이 없으며 크게 변동합니다. 스트래들 구매
시장 전망은 방향성이 없으며 약간 변동합니다. 스트래들 매도
저가 품목 딥을 구매하고 가격을 고정하세요

실제로 옵션 전략의 목적은 강세, 약세, 방향을 보지 않고 변동을 관찰하는 세 가지뿐입니다. 모든 전략은 단일 다리의 위험 노출을 커버하는 것입니다.

# 为策略计算
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. 스트래들 매수 : 수량과 행사가격이 동일한 콜옵션과 풋옵션을 매수합니다.
  2. 스트래들 매도 : 동일한 수의 콜과 풋을 동일한 행사가에 매도합니다.
적용 가능한 장면
  1. 향후 시장 전망에 큰 변동이 있을 것으로 예상되는 매수 스트래들 전략
  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} 입니다.( K2-케이1) 전자r T , 값이 다르면 차익 거래 기회가 있습니다. 박스 스프레드의 시장 가격이 너무 낮다면 박스 스프레드를 구매하세요. 행사가격 K1의 콜옵션을 매수하고, 행사가격 K2의 풋옵션을 매수하고, 행사가격 K2의 콜옵션을 매도하고, 행사가격 K1의 풋옵션을 매도합니다. 박스 스프레드의 시장 가격이 너무 높으면 박스를 매도하세요. 행사가격 K2의 콜옵션을 매수하고, 행사가격 K1의 풋옵션을 매수하고, 행사가격 K1의 콜옵션을 매도하고, 행사가격 K2의 풋옵션을 매도합니다.

나비 확산 전략

높은 손익비율과 높은 레버리지를 갖춘 전략으로, 기초자산 가격이 일정 범위 내에서 등락하는 상황에 적합합니다.

여기에 이미지 설명을 삽입하세요.

나비 전략 구매

범위 변동에 사용되는 전략은 변동성을 활용하여 수익을 창출하는 전략이기도 합니다.

버터플라이 콜옵션을 매수한다는 것은 내가격 콜옵션 1개를 매수하고, 등가격 콜옵션 2개를 매도하고, 외가격 콜옵션 1개를 동시에 매수하는 것을 의미합니다( 행사가격의 간격은 동일하며 동시에 만기일이 일정한 전략입니다.

롱 버터플라이 풋옵션은 행사 가격이 동일하고 만기일이 동일한 내가격 풋옵션 1개를 매수하고, 등가격 풋옵션 2개를 매도하고, 외가격 풋옵션 1개를 매수합니다.

나비 전략 판매

방향성이 없는 추세 전략이면서 변동성을 이용한 수익 창출 전략이기도 합니다.

콜옵션 매도란 내가격 콜옵션 1개를 매도하고, 등가격 콜옵션 2개를 매수하고, 외가격 콜옵션 1개를 매도하는 것을 의미하며, 행사가격의 간격은 동일하고 만기일은 다음과 같습니다. 똑같다.

풋옵션 매도란 내가격 풋옵션 1개를 매도하고, 등가격 풋옵션 2개를 매수하고, 외가격 풋옵션 1개를 매도하는 것을 의미하며, 행사가격 사이의 간격은 동일하고 만기일은 다음과 같습니다. 똑같다.

그들의 장점은 초기에 포지션을 확립하는 데 비용이 들지 않고 수입이 얻어지는 소득 기반 전략입니다.

철나비 전략

여기에 이미지 설명을 삽입하세요.

특정 범위 내에서 가격이 움직이는 주식에서 이익을 얻을 수 있는 능력입니다. , 시장 전망 변동성은 낮은 변동성으로 판단됩니다.

Iron Butterfly를 매수할 때 강세 풋 스프레드가 먼저 지지선에서 거래되고, 가격이 저항선에서 반등하면 약세 콜 스프레드가 거래되어 Iron Butterfly 매수 옵션 포트폴리오 전략이 생성됩니다.

낮은 행사가격의 풋옵션을 매수하고, 중간 행사가격의 풋옵션을 매도하고, 중간 행사가격의 콜옵션을 매도하고, 더 높은 행사가격의 콜옵션을 매수합니다.

매 전략

시장 중립 전략으로, 약간의 변동성이 있는 시장에서 어떤 추세 전략이라도 수익을 내기 어려울 때, 강세장 스프레드와 약세장 스프레드를 조합하여 구축한 범위 기반 수익 전략입니다.

이 전략은 버터플라이 전략에 비해 조금 더 높은 비용으로 더 넓은 수익폭을 제공하는 전략으로 아이언 이글 전략과 벌처 전략으로 구분할 수 있는데, 전자는 초기에 수익이 발생하고, 후자는 초기에 지출이 발생한다. .

철 독수리 전략

향후 기간에 기초 자산이 크게 변하지 않고 좁은 범위 내에서 계속 변동할 것으로 예상되거나 이벤트 위험 발효 기간 동안 다양한 옵션의 내재 변동성이 역사적 최고치에 도달한 경우 Iron Eagle 옵션 포트폴리오는 다음과 같이 할 수 있습니다. 판매됩니다.

행사가격이 낮은 외가격 풋옵션을 매수하고, 행사가격이 중간에 있는 외가격 풋옵션을 매도하고, 행사가격이 낮은 외가격 풋옵션을 매도하고, 행사가격이 낮은 외가격 풋옵션을 매도합니다. 중간에 더 높은 행사가가 있는 동시에 더 높은 행사가를 지닌 외가격 콜옵션을 매수합니다.

독수리 전략
  1. 행사가가 낮은 콜옵션을 매수하고 행사가가 낮거나 중간인 콜옵션을 매도하고 행사가가 중간 또는 높은 콜옵션을 매도하고 행사가가 높은 콜옵션을 매수합니다.
  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