【问题标题】:How can I create a python function to calculate spreads across panel data?如何创建一个 python 函数来计算跨面板数据的价差?
【发布时间】:2020-02-22 22:34:37
【问题描述】:

我有一组面板数据,其中包含不同的债券以及多天的债券收益率。

我想创建一个函数,在给定的一天,获取两个债券并计算点差,然后每天为每个债券对执行此操作。

生成的数据框将包含日期、指示哪两个债券的列以及收益率差。

原始数据框:

data1 = {'Date':['26/10/2019', '26/10/2019', '26/10/2019', '26/10/2019', '25/10/2019', '25/10/2019', '25/10/2019', 
                '25/10/2019'],
        'Bond':['A', 'B', 'C', 'D', 'A', 'B', 'C', 'D'],
        'Yield':[1.1, 1.11, 1.2, 1.3, 1, 1.1, 1.25, 1.29]}

df1 = pd.DataFrame(data=data1)

结果数据框:

data2 = {'Date':['26/10/2019', '26/10/2019', '26/10/2019', '26/10/2019','26/10/2019','26/10/2019', '25/10/2019', 
                '25/10/2019', '25/10/2019', '25/10/2019','25/10/2019','25/10/2019'],
        'Bond':['BA', 'CB', 'CA', 'DC', 'DB', 'DA', 'BA', 'CB', 'CA', 'DC', 'DB', 'DA'],
        'Yield':[0.01, 0.09, 0.1, 0.1, 0.19, 0.2, 0.1, 0.15, 0.25, 0.04, 0.19, 0.29]}

df2 = pd.DataFrame(data=data2)

提前谢谢你!

【问题讨论】:

  • 欢迎来到 StackOverflow!你能解释一下 1. 点差是什么意思? 2. BA 26/10/2019 上的 0.01 是如何获得的?
  • 谢谢! - 价差是收益率之间的差异。对于 BA,0.01 = 产量(B) - 产量(A) = 1.11-1.1

标签: python pandas numpy panel


【解决方案1】:

首先我们merge 在日期上得到bonds 的所有组合彼此相邻。

然后我们drop duplicates同时对债券进行排序(np.sort),因为ABBA相同,CDDC相同。

那么最后我们substractyields互相取绝对:

mrg = df1.merge(df1, on='Date').query('Bond_x != Bond_y')
mrg.loc[:, ['Bond_x', 'Bond_y']] = np.sort(mrg.loc[:, ['Bond_x', 'Bond_y']])
mrg = mrg.drop_duplicates(subset=['Date','Bond_x', 'Bond_y'])

df = pd.DataFrame({'Date': mrg['Date'],
                   'Bond': mrg['Bond_x'].str.cat(mrg['Bond_y']),
                   'Yield': mrg['Yield_x'].sub(mrg['Yield_y']).abs()}).reset_index(drop=True)

          Date Bond  Yield
0   26/10/2019   AB   0.01
1   26/10/2019   AC   0.10
2   26/10/2019   AD   0.20
3   26/10/2019   BC   0.09
4   26/10/2019   BD   0.19
5   26/10/2019   CD   0.10
6   25/10/2019   AB   0.10
7   25/10/2019   AC   0.25
8   25/10/2019   AD   0.29
9   25/10/2019   BC   0.15
10  25/10/2019   BD   0.19
11  25/10/2019   CD   0.04

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2022-01-09
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2013-01-18
    相关资源
    最近更新 更多