You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python生成远期掉期结构的0-1数组并转为DataFrame?

生成对应远期起始掉期的0-1矩阵DataFrame

核心逻辑

每个远期起始掉期nYmY(起始期限n,掉期期限m,满足n+m ≤ N)对应两个即期掉期:nY和n+mY。因此矩阵的每一行对应一个远期掉期,该行中nY和n+mY对应的列位置填充1,其余位置为0。

代码实现

import pandas as pd
import numpy as np

def create_forward_swap_matrix(max_tenor):
    # 生成所有远期掉期名称作为行索引
    row_labels = []
    for start in range(1, max_tenor):
        for tenor in range(1, max_tenor - start + 1):
            row_labels.append(f"{start}Y{tenor}Y")
    
    # 生成即期掉期期限作为列名
    col_labels = [f"{k}Y" for k in range(1, max_tenor + 1)]
    
    # 初始化全0矩阵
    matrix = np.zeros((len(row_labels), len(col_labels)), dtype=int)
    
    # 填充1的位置
    row_idx = 0
    for start in range(1, max_tenor):
        for tenor in range(1, max_tenor - start + 1):
            # 找到对应即期掉期的列索引
            col_start = start - 1
            col_end = (start + tenor) - 1
            matrix[row_idx, col_start] = 1
            matrix[row_idx, col_end] = 1
            row_idx += 1
    
    # 转换为DataFrame
    return pd.DataFrame(matrix, index=row_labels, columns=col_labels)

测试示例

当输入max_tenor=5时,调用函数返回的DataFrame如下:

1Y  2Y  3Y  4Y  5Y
1Y1Y    1   1   0   0   0
1Y2Y    1   0   1   0   0
1Y3Y    1   0   0   1   0
1Y4Y    1   0   0   0   1
2Y1Y    0   1   1   0   0
2Y2Y    0   1   0   1   0
2Y3Y    0   1   0   0   1
3Y1Y    0   0   1   1   0
3Y2Y    0   0   1   0   1
4Y1Y    0   0   0   1   1

说明

  • 矩阵行数为N*(N-1)/2(所有远期掉期的数量),列数为N(即期掉期的数量)。
  • 该矩阵可直接用于矩阵乘法场景,比如关联即期掉期与远期掉期的现金流或价格计算。

内容的提问来源于stack exchange,提问作者workinghard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:47:49