gpt4 book ai didi

python - 如何创建一个 python 函数来计算跨面板数据的价差?

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:33 25 4
gpt4 key购买 nike

我有一组面板数据,其中包含多天的不同债券和债券 yield 。

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

生成的数据框将包含日期,一列指示是哪两种债券,然后是 yield 差。

原始数据框:

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)

提前致谢!

最佳答案

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

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

最后我们substract yield 相互取绝对值:

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

关于python - 如何创建一个 python 函数来计算跨面板数据的价差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58577739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com