Professional Documents
Culture Documents
HW11
HW11
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)
return price
# 输入参数
current_exchange_rate = 150 # 当前汇率水平
remaining_time = 10 # 剩余到期时间( 10 年期)
risk_free_rate = 0.05 # 无风险利率( 5% )
volatility = 0.2 # 汇率的波动率( 20% )
26-e if e< 26
0 if 26<e< 27
27-e if e>27
目標可贖回遠期合約
import numpy as np
from scipy.stats import norm
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
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}")