如何将 Pandas DataFrame 中的 return 系列转换为价格系列?
How do I convert return series in Pandas DataFrame to price series?
我有一个包含资产价格 returns 的 Pandas DataFrame,我想创建一个新的 DataFrame 来将这些 returns 转换为价格序列。我该怎么做?
原来的returns数据框是:
0 1 2
0 0.01 0.02 0.04
1 0.02 0.05 0.04
我想将所有系列的原始价格索引为 100.00,以便获得以下数据框:
0 1 2
0 100.00 100.00 100.00
1 101.00 102.00 104.00
2 103.02 107.10 108.16
最简单的方法是计算相对于起始值的利息。使用 cumprod()
:
很容易做到这一点
df = pd.DataFrame({0: [0.01, 0.02], 1: [0.02,0.05], 2:[0.04, 0.04]})
relative_returns = (df+1).cumprod()
# 0 1 2
# 0 1.0100 1.020 1.0400
# 1 1.0302 1.071 1.0816
要计算最终值,我们可以乘以初始值:
final_value = 100*relative_returns
# 0 1 2
# 0 101.00 102.0 104.00
# 1 103.02 107.1 108.16
重新排列 table 将得到您需要的确切形式。
重排可以在上述过程之前完成,如下所示:
df = df.append(
pd.Series(np.nan, index=df.columns, name=df.index.max()+1)
).shift().fillna(0.0)
# 0 1 2
# 0 0.00 0.00 0.00
# 1 0.01 0.02 0.04
# 2 0.02 0.05 0.04
我有一个包含资产价格 returns 的 Pandas DataFrame,我想创建一个新的 DataFrame 来将这些 returns 转换为价格序列。我该怎么做?
原来的returns数据框是:
0 1 2
0 0.01 0.02 0.04
1 0.02 0.05 0.04
我想将所有系列的原始价格索引为 100.00,以便获得以下数据框:
0 1 2
0 100.00 100.00 100.00
1 101.00 102.00 104.00
2 103.02 107.10 108.16
最简单的方法是计算相对于起始值的利息。使用 cumprod()
:
df = pd.DataFrame({0: [0.01, 0.02], 1: [0.02,0.05], 2:[0.04, 0.04]})
relative_returns = (df+1).cumprod()
# 0 1 2
# 0 1.0100 1.020 1.0400
# 1 1.0302 1.071 1.0816
要计算最终值,我们可以乘以初始值:
final_value = 100*relative_returns
# 0 1 2
# 0 101.00 102.0 104.00
# 1 103.02 107.1 108.16
重新排列 table 将得到您需要的确切形式。
重排可以在上述过程之前完成,如下所示:
df = df.append(
pd.Series(np.nan, index=df.columns, name=df.index.max()+1)
).shift().fillna(0.0)
# 0 1 2
# 0 0.00 0.00 0.00
# 1 0.01 0.02 0.04
# 2 0.02 0.05 0.04