HW11

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 12

HW11

鮑欣禾 112071469
筆記
莎莉美日幣美元兌換權
 莎莉美日幣美元兌換權乃依為期五年的選擇權,持有者在五年內可隨
時以下列特定匯率將日幣兌換美元,每單位可兌換 50 元美元
 1988 年 2 月 11 日
2/11/89 至 2/11/90 131.75 ¥/$
2/11/90 至 2/11/91 129.50 ¥/$
2/11/91 至 2/11/92 127.00 ¥/$
2/11/92 至 2/11/93 124.50 ¥/$
 兌換權利屬持有人,若兌換期間到期時不兌換,由莎莉美公司付給持
有人每單位 9.25 美元 .
 若決定兌換,莎莉美公司按當時匯率將兌換價值折成現金,付給投資
人,公式如下 :$50*( 兌換時即期匯率 - 固定之匯率 )/ 兌換時即期匯率
莎莉美日幣美元兌換權
import numpy as np
def sally_may_option(spot_rate, strike_rate, volatility, num_periods, option_payoff, interest_rate):
"""
使用二项式模型计算莎莉美的日元兑美元兑换权的估值。
spot_rate (float): 当前即期汇率( ¥/$ )。
strike_rate (float): 固定执行汇率( ¥/$ )。
volatility (float): 汇率波动率(年化)。
num_periods (int): 分割期数,即五年分割的期数。
option_payoff (float): 到期未行使时的回报金额。
interest_rate (float): 无风险利率(年化)。
Returns:
float: 莎莉美的日元兑美元兑换权的估值。
"""
dt = 1 / num_periods # 每个期数的时间步长
u = np.exp(volatility * np.sqrt(dt)) # 上涨因子
d = 1 / u # 下跌因子
p = (np.exp(interest_rate * dt) - d) / (u - d) # 上涨概率
# 初始化二项式树的汇率数组
exchange_rates = np.zeros((num_periods + 1, num_periods + 1))
exchange_rates[0, 0] = spot_rate
莎莉美日幣美元兌換權
# 计算二项式树中每个节点的汇率
for i in range(1, num_periods + 1):
exchange_rates[i, 0] = exchange_rates[i - 1, 0] * u
for j in range(1, i + 1):
exchange_rates[i, j] = exchange_rates[i - 1, j - 1] * d
# 初始化二项式树的期权价值数组
option_value = np.zeros((num_periods + 1, num_periods + 1))
# 计算到期时的期权价值
for j in range(num_periods + 1):
option_value[num_periods, j] = max(0, (exchange_rates[num_periods, j] - strike_rate) /
exchange_rates[num_periods, j] * 50)
# 逆向计算期权价值
for i in range(num_periods - 1, -1, -1):
for j in range(i + 1):
exercise_value = (exchange_rates[i, j] - strike_rate) / exchange_rates[i, j] * 50
option_value[i, j] = max(exercise_value, option_payoff)
# 折现期权价值
option_value[i, j] = np.exp(-interest_rate * dt) * (p * option_value[i + 1, j] + (1 - p) * option_value[i + 1, j + 1])
# 返回期权在当前时刻的估值
return option_value[0, 0]
莎莉美日幣美元兌換權
# 输入数据
spot_rate = 131.75 # 当前即期汇率( ¥/$ )
strike_rate = 131.75 # 固定执行汇率( ¥/$ )
volatility = 0.2 # 汇率波动率(年化)
num_periods = 5 # 分割期数,即五年分割的期数
option_payoff = 9.25 # 到期未行使时的回报金额
interest_rate = 0.05 # 无风险利率(年化)

# 计算莎莉美的日元兑美元兑换权的估值
option_value = sally_may_option(spot_rate, strike_rate, volatility, num_periods, option_payoff, interest_rate)

print(f" 莎莉美的日元兑美元兑换权的估值为: ${option_value:.2f}")


ICON 選擇權
import numpy as np
from scipy.stats import norm

def calculate_icon_price(S, T, r, sigma):


"""
Args:
S (float): 当前汇率水平。
T (float): 剩余到期时间(以年为单位)。
r (float): 无风险利率(年化)。
sigma (float): 汇率的波动率(年化)。
"""
# 根据 ICON 的支付规则,计算期望的到期支付金额 A
if S >= 169:
A = 1000
elif 84.5 < S < 169:
A = 1000 - 1000 * (169/S - 1)
else:
A=0
# 计算 d1 和 d2
d1 = (np.log(S / 100) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
ICON 選擇權
# 计算期权的定价
price = A * np.exp(-r * T) * norm.cdf(d2)

return price

# 输入参数
current_exchange_rate = 150 # 当前汇率水平
remaining_time = 10 # 剩余到期时间( 10 年期)
risk_free_rate = 0.05 # 无风险利率( 5% )
volatility = 0.2 # 汇率的波动率( 20% )

# 使用 Black-Scholes 模型计算 ICON 的定价


icon_price = calculate_icon_price(current_exchange_rate, remaining_time, risk_free_rate, volatility)

print(f"Index Currency Option Notes (ICON) 的定价估值为 : ${icon_price:.2f}")


目標可贖回遠期合約
執行價 =26
保護價 =27

26-e if e< 26
0 if 26<e< 27
27-e if e>27
目標可贖回遠期合約
import numpy as np
from scipy.stats import norm

def black_scholes_call(e, K, T, r, sigma):


if e < 26:
payoff = 26 - e
elif 26 <= e < 27:
payoff = 0
else:
payoff = 27 - e

d1 = (np.log(e / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))


d2 = d1 - sigma * np.sqrt(T)

call_price = np.exp(-r * T) * (e * norm.cdf(d1) - K * norm.cdf(d2)) * (payoff > 0) # 只有当 payoff > 0 时才计算期权价

return call_price
目標可贖回遠期合約
def black_scholes_put(e, K, T, r, sigma):
if e < 26:
payoff = 26 - e
elif 26 <= e < 27:
payoff = 0
else:
payoff = 27 - e

d1 = (np.log(e / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))


d2 = d1 - sigma * np.sqrt(T)

put_price = np.exp(-r * T) * (K * norm.cdf(-d2) - e * norm.cdf(-d1)) * (payoff > 0) # 只有当 payoff > 0 时才计算期权
价格

return put_price

# 参数设置
e = 25 # 标的资产价格
K = 25 # 期权行权价
T = 1 # 期权到期时间(以年为单位)
r = 0.05 # 无风险利率
sigma = 0.102 # 标的资产价格的年化波动率
目標可贖回遠期合約
# 计算看涨期权价格
call_price = black_scholes_call(e, K, T, r, sigma)
print(f" 目标可赎回远期合约的看涨期权价格为 : {call_price:.2f}")

# 计算看跌期权价格
put_price = black_scholes_put(e, K, T, r, sigma)
print(f" 目标可赎回远期合约的看跌期权价格为 : {put_price:.2f}")

You might also like