微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 SciPy 引导 SWAP 时设置条件的问题

如何解决使用 SciPy 引导 SWAP 时设置条件的问题

我试图在 Python 中引导墨西哥掉期的每个条款,我之前在 Excel Goal Seek 上计算过并得到以下结果:

Results on Goal Seek

基本上我有 3 个时期的所有固定利率,但我只有第 1 期的浮动利率,我需要找到第 2 期和第 3 期的浮动利率,但在这种情况下,我们可以假设第 2 期的浮动利率= 第 3 期的浮动利率

求解该方程的另一个假设是 SWAP NPV = 0,因此对于这种情况,固定 NPV = 浮动 NPV 其计算的固定 NPV 为 1.0001,浮动 NPV 是根据浮动利率计算的

基本浮动 NPV = ∑((名义 * 浮动利率 * 28/360)/(1 + 固定利率 * 28/360)^期间

但是对于周期 1 使用 float_rate 0.04288 和 x 对于周期 2 和 3

我无法使用 SciPy 解决这个问题,它给出错误,求解器没有保持第 1 期的浮动评级,我不知道如何将第 2 期和第 3 期的浮动利率归因于相同,有人可以帮助我?

notional = 100
convention = 28/360
df3 = [[]]
df3 = pd.DataFrame({'period': [1,2,3],'fixed_rate': [0.04315,0.04315,0.04315],'floating_rate': [0.04288,0]})
df3['fixed_cashflow'] = notional * df3['fixed_rate'] * convention
df3['fixed_npv'] = df3['fixed_cashflow'] / (1 + df3['fixed_rate'] * convention) ** df3['period']
df3['npv_floating'] = (notional * df3['floating_rate'] * convention) / (1 + df3['fixed_rate'] * convention) ** df3['period']

x = df3['floating_rate']
fixed_npv = np.array(df3['fixed_npv'])
fixed_rate = np.array(df3['fixed_rate'])
period = np.array(df3['period'])

res = opt.minimize(fun=calculo,x0=np.array(x),args=(fixed_npv,fixed_rate,period,notional,convention),method="BFGS")
return res

def calculo(x0,fixed_npv,convention):
 return sum((notional * x0 * convention) / (1 + fixed_rate * convention) ** period) - sum(fixed_npv)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。