资源加载中... loading...

浅谈商品期权市场平仓操作盈亏估算方法

Author: ianzeng123, Created: 2024-06-18 13:34:26, Updated: 2024-11-19 13:28:57

img

叠甲:本文尝试提供在商品期权市场平仓操作时,期权盈利和亏损的一种推算方法,仅作为数据探索分析使用,欢迎各位大佬进行指正。

在期权市场中,我们常听说一些传奇故事,如市场暴涨暴跌,日收益高达500倍,这令许多投资者心驰神往。与期货市场仅提供做多和做空两种选择不同,期权市场提供了四种交易策略:买入看涨、卖出看涨、买入看跌和卖出看跌。加上较低的资金需求和较高的杠杆效应,期权市场没有涨跌停板限制,因此为投资者提供了创造神话的巨大空间。

但是,期权的收益并非总是如传说般轻而易举,它们涉及复杂的统计和计算。有不少朋友不了解期权具体的收益统计,今天为大家展开一下介绍,以期揭开期权收益的神秘面纱。

行权收益 vs. 平仓收益

在深入了解期权的盈利统计之前,我们首先需要区分两种基本的收益计算方法:行权收益和平仓收益。这两种方法各有特点,适用于不同的市场情况和交易策略。

行权收益

行权收益是指期权持有者在期权到期时选择行权,按照约定的执行价格与标的资产市场价格之间的差额来计算收益。这种收益的实现通常与期权的内在价值有关,即当期权处于实值状态时,行权能够带来经济利益。行权收益的计算可以通过以下经典图像来表示:

image

以上,是四种不同期权策略(买入看涨期权、卖出看涨期权、买入看跌期权和卖出看跌期权)的行权收益的逻辑图像,我们简单解释一下:

  • 认购期权的行权收益 = 标的物市价-执行价格-权利金成本价;

  • 认沽期权的行权收益 = 执行价格-标的物市价-权利金成本价。

当买方购买看涨期权时,其最大损失限于支付的权利金,但潜在收益是无限的,因为标的物价格可能会无限上涨。买方的损失被限制在支付的权利金之内,但由于标的物价格可能会无限上涨,潜在收益是不受限制的。卖方在期权到期时最多只能获得收取的权利金,但可能要承担无限的损失,因为标的物价格可能会无限上涨。卖方的收益被限制在收取的权利金之内,但由于标的物价格可能会无限上涨,潜在损失是不受限制的。

当买方购买看跌期权时,其最大损失同样限于支付的权利金,但潜在收益相对来说是有一个上限,就是标的资产价格为0,因为在通常情况下,标的物价通常不可能为负值(原油宝除外)。买方的损失被限制在支付的权利金之内,但由于标的物价格可能会无限下跌,潜在收益是不受限制的。卖方在期权到期时最多只能获得收取的权利金,但可能要承担标的资产跌到0的损失。

平仓收益

与行权收益不同,平仓收益并不依赖于期权持有者在期权到期时行使权利,而是通过在二级市场上买卖期权合约来实现的。这种方式适用于所有类型的期权,无论是看涨期权还是看跌期权,买方或卖方。平仓收益也是广大散户朋友们获取期权收益最多的使用方法。

欧式期权(中国金融期权)只具有行权这一个收益计算方法;但是对于美式期权(中国商品期权),除了行权可以获取收益,我们也可以通过平仓进行收益。今天我们就来尝试讲解一下期权平仓收益的统计方法。期权不仅仅具有内在价值,还具有时间价值:

  • 期权价值 = 内在价值 + 时间价值

所以当买入看涨期权小于行权价,或者买入看跌期权大于行权价时,期权不会为负值。因此相对于在行权操作,使用行权价格计算期权的涨跌,在平仓操作中,我们需要根据权利金的涨跌作为期权的盈亏统计:

  • 权利金 = 期权价格 * 期权合约乘数
  • 买方收益 = 平仓时的权利金-建仓时的权利金
  • 卖方收益 = 建仓时的权利金-平仓时的权利金

权利金是期权价格乘以期权合约的乘数,比如某一铁矿石期权价格为1.1,它的权利金是 1.1 * 100(铁矿石合约乘数)= 110。可以看到,相对于铁矿石2W左右的保证金,期权的资金需要确实较低,因此具有较高的杠杆。

对于期权的平仓操作,我们更需要关注权利金的变化,怎么预测权利金的变化呢,我们尝试使用一个期权里的一个风险指标“Delta”。上面我们可以看到,权利金的金额确实较低,就可以享受到和铁矿石期货一样的合约乘数,那么岂不是直接买期权比较划算呢?但是还有一个问题,期货价格的变动并不是和期权价格的变动1比1相关的,Delta就是用来衡量这种相关关系的。Delta是期权价格的变动除以标的资产(我们研究的范围是期货)变动的比值,举个例子,如果Delta为0.1,意味着10点期货价格的上涨会带来1点期权价格的上涨(看涨期权);如果是-0.1,意味着10点期货价格的上涨会带来1点期权价格的下跌(看跌期权)。因此对于权利金的变动点位,具体可以这样估计:

  • 期权价格变动点位 = 标的资产变动点位 * Delta
  • 权利金的变动点位 = 期权价格变动点位 * 合约乘数

这里的Delta不是通过历史数据计算处理的,而是在了解 S(标的资产价格)、K(执行价格)、T(到期时间)、r(无风险利率)、market_price(期权市场价格)的前提下,根据Black-Scholes模型模拟推算出来的。对于看涨期权来说,Delta通常为正值(正向相关关系),期货价格上涨会带来期权价格的上涨,权利金也会上升;而对于看跌期权来说,Delta通常为负值(负向相关关系),期货价格下跌会带来期权价格的上涨,权利金也会上涨。

在获取Delta数值过后,我们就可以预估期权平仓时具体的收益。有了上面的逻辑,我们就可以计算一下实际的期权盈利和损失计算方法:

1. 买入看涨期权

当你买入看涨期权时,你希望标的资产价格上涨,随之权利金也会上涨,获取权利金差价收益。理想状态下,权利金是没有上限的,所以你的盈利也是无限的,但是如果标的资产下跌,最大的亏损就是你的权利金,权利金为0代表损失完毕。

计算逻辑

  1. 定义变量:S(标的资产价格)、K(执行价格)、T(到期时间)、r(无风险利率)、market_price(期权市场价格)、contract_size(合约大小)。
  2. 计算隐含波动率:使用二分法计算隐含波动率。
  3. 计算Delta:根据Black-Scholes模型计算期权的Delta。
  4. 计算最大损失:最大损失 = 期权买入市场价格 * 期权合约乘数 = 权利金。
  5. 盈利:盈利 = (标的资产未来价格 - 标的资产买入价格) * 期权合约乘数 * Delta(此时Delta为正数)

2. 卖出看涨期权

当你卖出看涨期权时,你希望标的资产的价格不会上涨,以至于权利金也不会上涨。如果最新权利金低于建仓时的权利金,你就可以赚取权利金差价。

计算逻辑

  1. 计算最大盈利:最大盈利 = 期权市场买入价格 * 期权合约乘数 = 权利金。
  2. 损失:损失 = (标的资产未来价格 - 标的资产买入价格) * 期权合约乘数 * Delta * -1

3. 买入看跌期权

当你买入看跌期权时,你希望标的资产价格下跌,虽然在期货市场中,资产的价格不可能为负,但是当资产为0 的时刻,Delta的变化幅度是无限的,权利金上涨的幅度可以任你想象;所以作为看跌期权买方来讲,盈利在一定程度上也是无限的,最大亏损也就是你的权利金。

计算逻辑

  1. 定义变量:S(标的资产价格)、K(执行价格)、T(到期时间)、r(无风险利率)、market_price(期权市场价格)、contract_size(合约大小)。
  2. 计算隐含波动率:使用二分法计算隐含波动率。
  3. 计算Delta:根据Black-Scholes模型计算期权的Delta。
  4. 计算最大损失:最大损失 = 期权买入市场价格 * 期权合约乘数 = 权利金。
  5. 盈利:盈利 = (标的资产未来价格 - 标的资产买入价格) * 期权合约乘数 * Delta (此时Delta为负数)

4. 卖出看跌期权

当你卖出看跌期权时,你希望标的资产的价格上涨,同时权利金下降,这样你就可以赚取期权费差价。

计算逻辑

  1. 计算最大盈利:最大盈利 = 期权市场买入价格 * 期权合约乘数 = 权利金。
  2. 损失:损失 = (标的资产未来价格 - 标的资产买入价格) * 期权合约乘数 * Delta (此时Delta为负数) * -1

但是需要注意的是,Delta并不是一个常数,我们都知道期权市场中,市场波动尤为剧烈,所以Delta也是如此,所以对于盈利和亏损的统计,我们需要将Delta进行一些合适的处理(取均值平滑等),这样才可以更好的估计盈利和亏损。

作为零和博弈,交易所收取双边手续费是不可避免的,而买方和卖方的盈利与亏损则是相互关联的。然而,值得注意的是,虽然根据计算公式显示买方的盈利较高,而且风险较低,但数字期望的计算还需包括事情发生的概率。在这种情况下,完整考虑期望涉及评估市场情况、交易条件和风险管理策略。买方和卖方需要根据自身的情况和偏好,制定相应的交易策略。此外,还应当考虑市场波动性、信息不对称、流动性风险等因素,这些因素都会影响交易的结果。因此,综合考虑各种因素,才能更准确地评估交易的期望收益和风险水平,从而做出理性的决策。

以上的解释只是个人的一些较为浅显的理解,在实际的量化场景中,具体的期权盈利计算需要更深奥的数学知识(偏微分,动态模拟等等),以上呢,只是提供一个角度帮助大家理解,在商品期货市场中,介于平仓操作期权收益的计算逻辑!

买入看涨期权统计示范代码:

DATADATA平台是优宽量化自主研发的先进金融分析工具,它集成了多维数据获取、多样数据分析和多媒体图像呈现等功能。该平台特别为金融分析师和投资者设计,以支持复杂的金融决策过程。用户可以通过以下步骤使用DATADATA平台进行期权收益分析:

  1. 打开DATADATA平台的链接页面
  2. 在指定的输入区域填入必要的查询参数:
    • <品种>:选择需要分析的金融品种。
    • <合约>:指定具体的期权合约。
    • <行权价>:输入期权的行权价格。
    • <日期>:选择期权平仓的具体日期。
    • <当日十年期国债收益率>:输入查询日期当天的十年期国债收益率,作为无风险利率的参考。
  3. 提交查询参数后,DATADATA平台将运用其DQL语言开发编写的算法,对输入的数据进行深入分析。
  4. 分析完成后,平台将输出四种期权平仓收益的参考图像,这些图像直观地展示了在不同市场情况下的收益情况。
  5. 用户可以利用这些图像作为期权交易收益统计的参考,帮助他们更好地理解市场动态,评估交易策略,并制定投资决策。

img

通过这种方式,DATADATA平台为用户提供了一个功能强大、操作简便的金融分析解决方案,尤其适用于需要对期权市场进行深入分析的专业人士。

odata = query(" select closing_price from derive.o_daily_quotes where product_name = '{{product_name}}' and contract_series = '{{contract_series}}' and cp_type = 'C' and strike_price = '{{strike_price}}' and day = '{{date}}' ")
info = query(" select contract_size from public.product_info where product_name = '{{product_name}}' and futures_type = '期权' ")
fdata = query(" select closing_price from derive.f_daily_quotes where product_name = '{{product_name}}' and contract = '{{contract_series}}' and day = '{{date}}' ")
rdf = query(" select {{rfrate}} as rfrate ")

# 计算误差函数,
def erf(x):
    # Constants
    a1 = 0.254829592
    a2 = -0.284496736
    a3 = 1.421413741
    a4 = -1.453152027
    a5 = 1.061405429
    p = 0.3275911
    
    # Save the sign of x
    sign = 1 if x >= 0 else -1
    x = abs(x)
    
    # A&S formula 7.1.26
    t = 1.0 / (1.0 + p * x)
    y = 1.0 - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * math.exp(-x * x)
    
    return sign * y

# 正态分布累积分布函数
def cdf(x):
    return (1.0 + erf(x / math.sqrt(2.0))) / 2.0

# Black-Scholes模型
def black_scholes_option(S, K, T, r, sigma, option_type='C'):
    d1 = (math.log(S / K) + (r + 0.5 * sigma * sigma) * T) / (sigma * math.sqrt(T))
    d2 = d1 - sigma * math.sqrt(T)
    if option_type == 'C':
        option_price = S * cdf(d1) - K * math.exp(-r * T) * cdf(d2)
    else:
        option_price = K * math.exp(-r * T) * cdf(-d2) - S * cdf(-d1)
    return option_price


# 二分法估计隐含波动率
def implied_volatility(S, K, T, r, market_price, option_type='C', tol=1e-8, max_iterations=100):
    lower_vol = 0.0001
    upper_vol = 5.0
    for i in range(max_iterations):
        mid_vol = (lower_vol + upper_vol) / 2
        price = black_scholes_option(S, K, T, r, mid_vol, option_type)
        
        if abs(price - market_price) < tol:
            return mid_vol
        elif price < market_price:
            lower_vol = mid_vol
        else:
            upper_vol = mid_vol
    return mid_vol  
    
# Delta计算
def calculate_greeks(S, K, T, r, sigma, option_type='C'):
    d1 = (math.log(S / K) + (r + 0.5 * sigma * sigma) * T) / (sigma * math.sqrt(T))
    delta = cdf(d1) if option_type == 'C' else cdf(d1) - 1
    return delta

# 数据和参数
S = fdata['closing_price'][0]  # 标的资产开盘价
K = int(args['strike_price'])  # 执行价格
T = odata['remaining_days'][0] / 365  # 到期时间(年) 
r = rdf['rfrate'][0]/100  # 无风险利率
market_price = odata['closing_price'][0]  # 期权开盘价
option_type = 'C'  # 期权类型
contract_size = info['contract_size'][0]  # 合约大小

# 计算隐含波动率和Delta
implied_vol = implied_volatility(S, K, T, r, market_price, option_type)
delta = calculate_greeks(S, K, T, r, implied_vol, option_type)

# 最大损失不超过权利金
max_loss = market_price * contract_size

# 生成标的资产价格范围并计算盈利数据
price_range = []
profits = []

# 定义范围
start_price = 0
end_price = S + S * 0.5
increment = int(end_price/100)

# 计算盈利数据
for price in range(int(start_price), int(end_price) + 1, increment):
    profit = (price - S) * delta * contract_size
    if profit < -max_loss:
        profit = -max_loss
    price_range.append(int(price))
    profits.append(profit)

final = DataFrame()
final['price_range'] = price_range
final['profits'] = profits

return final 

:为模拟期权收益变动,以上将Delta设置为常数,大家可进行更复杂的处理,从而更准确的评估权利金的变动。另外对于卖出看涨期权,买入看跌期权和卖出看跌期权,代码逻辑思路基本一致。


更多内容