選擇權交易是一種先進且多功能的交易策略,為交易者提供了在各種市場條件下成長的大量機會。了解高階期權交易的複雜性,包括期權希臘、波動性策略、定價模型和風險管理,對於成功至關重要。在本綜合指南中,我們將深入研究高級期權交易的世界,涵蓋從高級期權交易概述到策略及其實施的複雜性的所有內容。作為了解期權交易基礎知識的交易者,本指南將為您提供有效駕馭複雜的高級期權交易世界所需的技能和見解。
期權(Options)又稱爲選擇權(下文的期權與選擇權都代指Options),它是一種金融衍生工具。當標的資產價格在設定時間段內超過約定的價格時,期權持有方擁有要求賣方按照約定價格買賣資產的權利,但非義務。
高級期權交易業務超越了看漲期權和看跌期權的基本買賣。它涉及期權合約的有用組合以實現特定的交易目標。
現在讓我們來看看高級期權交易所需的概念。
進行高級期權交易時的要點
高級期權交易有一些要點,它們是:
此外,了解何時儘早行使(買入/賣出)選擇權以獲取潛在收益或避免不必要的任務對於高階策略至關重要。
接下來,讓我們看看為什麼期權交易對交易者如此有吸引力。
選擇權交易吸引交易者的原因有幾個,以下是上訴的詳細內容:
然而,必須承認期權交易也存在一些風險。這些風險包括整個投資的潛在損失、由於時間衰減而導致的價值快速損失以及選擇策略的複雜性,這可能會導致意想不到的結果。因此,交易者徹底了解選擇權交易並採用風險管理策略來保護自己的投資至關重要。
主要選擇權希臘字母是一組五個字母,代表影響選擇權價格的關鍵因素。這些是選擇權交易者分析和管理其頭寸風險的基本工具。
Delta德爾塔 (Δ)
Gamma伽瑪 (γ)
Theta西塔 (θ)
Vega織女星 (ν)
Rho羅 (ρ)
接下來,我們將詳細討論選擇權希臘人對選擇權定價的影響。
期權希臘字母對選擇權定價與投資組合管理的影響
在這裡,我們將再次看到主要的期權希臘人,但將討論每個希臘人對期權定價和投資組合管理的影響,並提供每個例子。選擇權希臘人對選擇權價格對各種市場因素變化的反應以及投資組合管理都有特定的影響。
現在我們將了解實施高階選擇權交易策略所需的技能。
以下是您需要培養的一些基本技能,以便透過高級期權交易策略取得成功:
技術知識
分析能力
交易技巧
額外技能
現在讓我們看看看跌期權平價意味著什麼以及更多相關內容。
賣權平價(PCP)是歐式買權、歐式賣權、標的資產價格、無風險利率與到期時間的關係。它本質上規定,根據執行價格的現值調整的看漲期權的價格應等於看跌期權的價格加上當前股票價格。
以下是一個 Python 程式碼,用於計算看跌期權奇偶校驗並評估其對於給定參數集的有效性:
它使用以下公式計算看跌期權平價:
C — e^(-rT) * K = P + S
然後,函數顯示方程式的左側 (LHS) 和右側 (RHS),以及它們之間的差異。它還檢查差異是否接近零,表明看跌期權平價大致成立。
import math
def calculate_put_call_parity(S, K, C, P, r, T):
# Left-hand side (LHS) of Put-Call Parity
lhs = C - math.exp(-r * T) * K
# Right-hand side (RHS) of Put-Call Parity
rhs = P + S
# Difference between LHS and RHS
parity_difference = lhs - rhs
print("Put-Call Parity Calculation:")
print(f"Left-hand side (LHS): Call option price adjusted for present value of strike - {lhs}")
print(f"Right-hand side (RHS): Put option price + Stock price - {rhs}")
print(f"Difference between LHS and RHS: {parity_difference}")
# Check if Put-Call Parity approximately holds (small difference due to rounding)
if abs(parity_difference) < 1e-5:
print("Put-Call Parity approximately holds.")
else:
print("Put-Call Parity does not hold.")
return parity_difference
# Example usage:
S = 100 # Stock price
K = 110 # Strike price
C = 5 # Call option price
P = 7 # Put option price
r = 0.05 # Risk-free interest rate (5%)
T = 1 # Time to expiration (in years)
parity_difference = calculate_put_call_parity(S, K, C, P, r, T)
Output:
Put-Call Parity Calculation:
Left-hand side (LHS): Call option price adjusted for present value of strike - -99.63523669507855
Right-hand side (RHS): Put option price + Stock price - 107
Difference between LHS and RHS: -206.63523669507856
Put-Call Parity does not hold.
接近零的值表示奇偶校驗成立,但在上面的輸出中,它表明看跌期權奇偶校驗不成立。
接下來讓我們轉向期權定價。
選擇權定價涉及確定選擇權合約的公允價值,這賦予持有人以以下價格購買(如果是看漲選擇權)或出售(如果是看跌選擇權)標的資產的權利,但沒有義務。價格)。
下面您將看到兩種類型的選擇權定價技術以及它們之間的差異。這些類型是:
選擇權的內在價值是指選擇權立即行使時所具有的價值。
下面您可以看到它們是如何計算的。
Intrinsic Value of Call Option = Current Market Price of Underlying Asset - Strike Price
Intrinsic Value of Put Option = Strike Price - Current Market Price of Underlying Asset
選擇權的時間價值
選擇權的時間價值是指選擇權買方為在到期前擁有選擇權的特權而支付的權利金。它反映了期權在到期時最終成為價內期權的機率。
Time Value = Option Premium - Intrinsic Value
展望未來,我們將了解選擇權定價模型。
選擇權定價模型是用來決定選擇權公允價值的數學模型。您將在下面找到不同的期權定價模型以及每個模型之間的主要差異。
每種模型都有其優點和局限性,模型的選擇取決於交易者或投資者的特定要求。
現在讓我們來看看最受歡迎的高階選擇策略之一,即蝴蝶策略及其收益圖。
要獲得蝴蝶策略的收益圖,您需要遵循以下步驟:
學習此策略後,您將能夠繪製您可能想要設定的任何選擇權策略的收益圖。
步驟如下:
# For data manipulation
import pandas as pd
import numpy as np
# For data visualisation
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('seaborn-darkgrid')
# For option's payoff computations
import sys
sys.path.append('..')
from data_modules.options_util_quantra import setup_butterfly
# Read the options data
options_data = pd.read_pickle('../data_modules/nifty_options_data_2019_2022.bz2')
# Read the futures data
futures_spot_data = pd.read_pickle(
'../data_modules/nifty_data_2019_2022.bz2')[['futures_close', 'Expiry']]
# Print the last 5 rows of the futures data
futures_spot_data.tail()
輸出:
futures_close ExpiryDate 2022-05-20 16253.25 2022-05-262022-05-23 16183.35 2022-05-262022-05-24 16104.70 2022-05-262022-05-25 16013.80 2022-05-262022-05-26 16159.05 2022-05-26
# Set the analysis dateanalysis_date = "2021-01-01"# Fetch the futures close price that corresponds to the above datefutures_price = futures_spot_data.loc[analysis_date, 'futures_close']# Fetch the options chain data that belongs to the above dateoptions_chain = options_data.loc[analysis_date]# Print the futures close price of the datef"The futures price on {analysis_date} is {futures_price}"
Output:
'The futures price on 2021-01-01 is 14053.85'
# Print the options chain data of the above date
options_chain.head()
Symbol Expiry Option Type Strike Price Open High Low Close Last Settle Price Number of Contracts Turnover Premium Turnover Open Interest Change in OI Underlying
Date
2021-01-01 NIFTY 28-01-2021 CE 12000 2017.10 2062.25 2014.0 2043.60 2042.00 2043.60 256.0 269606000.0 39206000.0 456225.0 10200.0 14018.5
2021-01-01 NIFTY 28-01-2021 CE 12050 0.00 0.00 0.0 609.75 0.00 2009.45 0.0 0.0 0.0 0.0 0.0 14018.5
2021-01-01 NIFTY 28-01-2021 CE 12100 1923.15 1936.45 1922.6 1934.75 1934.75 1960.25 4.0 4209000.0 579000.0 15750.0 0.0 14018.5
2021-01-01 NIFTY 28-01-2021 CE 12150 0.00 0.00 0.0 569.95 0.00 1911.10 0.0 0.0 0.0 0.0 0.0 14018.5
2021-01-01 NIFTY 28-01-2021 CE 12200 0.00 0.00 0.0 1797.80 1799.00 1862.15 0.0 0.0 0.0 22575.0 0.0 14018.5
# Setup the butterfly strategybutterfly = setup_butterfly(futures_price, options_chain, "long")# Print the strategy dataframebutterfly
Output:
Option Type Strike Price position premium0 CE 14050 -1 280.751 PE 14050 -1 279.002 CE 14600 1 69.253 PE 13500 1 103.00
既然我們已經建立了多頭蝴蝶策略,現在讓我們計算買權和賣權的收益。請記住,多頭買權的收益由下式給出:
Long Call Payoff=𝑀𝑎𝑥(Spot Price−Strike Price,0)−Premium
Max 函數解釋如下:
你能猜出如何計算空頭買權嗎?很簡單,您只需將上述函數乘以 -1 即可獲得賣空版本的看漲期權收益。
# Setup the butterfly strategy
butterfly = setup_butterfly(futures_price, options_chain, "long")
# Print the strategy dataframe
butterfly
Output:
Option Type Strike Price position premium
0 CE 14050 -1 280.75
1 PE 14050 -1 279.00
2 CE 14600 1 69.25
3 PE 13500 1 103.00
# Compute long call payoff value
call_payoff_value = call_payoff(16000, 15000, 20, 1)
# Print the long call payoff value
call_payoff_value
Output:
980
# Compute the short call payoff value
call_payoff_value = call_payoff(16000, 15000, 20, -1)
# Print the short call payoff value
call_payoff_value
Output:
- 980
然後,類似地,我們可以定義看跌期權收益。
多頭賣權收益 = 𝑀𝑎𝑥(行使價−現貨價格,0)−權利金
# Define the put payoff function
def put_payoff(spot_price, strike_price, premium_spent, position):
return (np.maximum(strike_price - spot_price, 0) - premium_spent) * position
# Compute the long put payoff value
put_payoff_value = put_payoff(16000, 15000, 20, 1)
# Print the long put payoff values
put_payoff_value
Output:
-20
最後,空頭賣權收益值:
# 計算空頭看跌期權收益值
put_payoff_value = put_payoff(16000, 15000, 20, -1)
# 列印空頭看跌期權收益值
put_payoff_value
輸出:
20
def get_payoff(spot_price_expiry, options_strategy):
# Create a payoff column with empty values
options_strategy['payoff'] = np.nan
# Create a loop to go through each option that belongs to the butterfly strategy
for i in options_strategy.index:
# Check if the option is a call
if options_strategy.loc[i, 'Option Type'] == 'CE':
# Compute the call payoff as per its corresponding values
options_strategy.loc[i, 'payoff'] = call_payoff(
spot_price_expiry, options_strategy.loc[i, 'Strike Price'], options_strategy.loc[i, 'premium'], options_strategy.loc[i, 'position'])
# Check if the option is a put
elif options_strategy.loc[i, 'Option Type'] == 'PE':
# Compute the put payoff as per its corresponding values
options_strategy.loc[i, 'payoff'] = put_payoff(
spot_price_expiry, options_strategy.loc[i, 'Strike Price'], options_strategy.loc[i, 'premium'], options_strategy.loc[i, 'position'])
# Return the payoff sum of the 4 options
return options_strategy['payoff'].sum()
讓我們舉個例子。讓我們針對特定價格呼叫 get_payoff 函數,看看到期時的價值是多少。
get_payoff(13100, butterfly)
Output:
-162.5
# Create the payoff dataframe
payoff = pd.DataFrame()
# Compute the price range
payoff['price_range'] = options_chain['Strike Price'].unique()
# Print the last 5 rows of the price range of the payoff dataframe
payoff['price_range'].tail()
Output:
66 15300
67 15350
68 15400
69 15450
70 15500
Name: price_range, dtype: int64
# Compute the butterfly strategy payoff values
payoff['pnl'] = payoff.apply(
lambda r: get_payoff(r.price_range, butterfly), axis=1)
# Print the last 5 rows of the strategy payoffs
payoff['pnl'].tail()
Output:
66 -162.5
67 -162.5
68 -162.5
69 -162.5
70 -162.5
Name: pnl, dtype: float64
# Set price_range as index
payoff.set_index('price_range', inplace=True)
# Set figure size
plt.figure(figsize=(15, 7))
# Plot the payoff data
plt.plot(payoff)
# Set the title and labels and their sizes
plt.title('Long Butterfly Strategy Payoff Diagram', fontsize=16)
plt.xlabel('Price (Rupees)', fontsize=15)
plt.ylabel('Payoff (Rupees)', fontsize=15)
plt.tick_params(axis='both', labelsize=15)
# Show the graph
plt.show()
# Print the maximum expected profit for the strategy
max_profit = round(payoff.max(),2)[0]
# Print the futures price corresponding to the maximum profit
max_profit_futures_price = payoff.idxmax()[0]
f"The maximum profit is {max_profit} and its corresponding futures price is {max_profit_futures_price}"
Output:
'The maximum profit is 387.5 and its corresponding futures price is 14050'
因此,如果到期時的期貨價格為 14050,則該策略的最大利潤預計為 387.5 盧比。
# Print the maximum expected loss for the strategy
max_loss = round(payoff.min(),2)[0]
# Print the futures price corresponding to the maximum loss
max_loss_futures_price = payoff.idxmin()[0]
f"The maximum loss is {max_loss}"
Output:
'The maximum loss is -162.5'
# Setup the butterfly strategy dataframe
butterfly = setup_butterfly(futures_price, options_chain, "short")
# Print the short butterfly dataframe
butterfly
輸出:
Option Type Strike Price position premium
0 CE 14050 1 280.75
1 PE 14050 1 279.00
2 CE 14600 -1 69.25
3 PE 13500 -1 103.00
# Create the payoff dataframe
payoff = pd.DataFrame()
# Create the price range based on the strike prices of the options chain
payoff['price_range'] = list(options_chain['Strike Price'].unique())
# Compute the payoff values for the short butterfly strategy
payoff['pnl'] = payoff.apply(
lambda r: get_payoff(r.price_range, butterfly), axis=1)
# Set price_range as index
payoff.set_index('price_range', inplace=True)
# Set figure size
plt.figure(figsize=(15, 7))
# Plot the payoff data
plt.plot(payoff)
# Set the title and labels and their sizes
plt.title('Short Butterfly Strategy Payoff Diagram', fontsize=16)
plt.xlabel('Price (Rupees)', fontsize=15)
plt.ylabel('Payoff (Rupees)', fontsize=15)
plt.tick_params(axis='both', labelsize=15)
# Show the graph
plt.show()
Output:
正如您所看到的,收益圖讓我們直觀地了解何時可以透過多頭或空頭蝴蝶策略獲得最大回報。上面的程式碼可用於您想要獲得的任何策略效益。
您可以透過系統選擇權交易課程查看整個策略以及更多有關蝴蝶策略的資訊。本課程也將幫助您詳細學習回測期權交易策略和相關概念。
值得注意的是,回測結果並不能保證未來的表現。所提供的策略結果僅用於教育目的,不應被解釋為投資建議。有必要對多個參數的策略進行全面評估,以評估其有效性。
現在,我們將了解如何在高級選擇權交易中進行風險管理。
進階期權交易中的風險管理
風險管理對於高級期權交易至關重要,可以保護您的資本並優化您的回報。
以下是高階選擇權交易的一些關鍵風險管理策略:
透過實施這些風險管理策略,您可以最大限度地降低下行風險,同時最大限度地提高高級選擇權交易的潛在回報。
最後但並非最不重要的一點是,我們將看到可用於學習選擇權交易的資源。
以下是選擇權交易者通常會問的問題。因此,我們已經為前面的每個問題提供了答案。
Q:進階交易中影響選擇權定價的主要因素有哪些?
答:高級交易中的選擇權定價受以下幾個因素影響:
Q:如何選擇合適的選擇權合約進行進階交易?
答:選擇正確的選擇權合約需要考慮以下幾個因素:
Q:隱含波動率在高階選擇權交易中發揮什麼作用?
答:隱含波動率是選擇權定價和高階選擇權交易的關鍵因素:
Q:在進階期權交易中需要避免哪些常見錯誤?
答:在進階期權交易中要避免的常見錯誤包括:
Q:我如何及時了解與高階選擇權交易相關的市場動態?
答:您可以透過以下方式了解市場動態:
Q:我可以在不同的市場條件下使用高階選擇權交易策略嗎?
答:是的,高階選擇權交易策略可以在各種市場條件下使用:
如需此類更具洞察力的內容,請關注我的個人資料並加入我的電子報社群以獲取所有最新更新。