AI计算通货膨胀调整
编辑
1
2025-06-22

提示词
我们现在有一个DataFrame,以日期为index,第一列是某股票的收盘价,第二列是CPI数据,我需要计算出股价的收益,再使用CPI数据计算通货膨胀率,最后进行通货膨胀调整,清给出示例代码。
答案
import pandas as pd
import numpy as np
# 创建示例数据(日期为索引,收盘价和CPI两列)
dates = pd.date_range(start='2024-01', periods=12, freq='M')
data = {
'close': [100, 105, 108, 112, 115, 120, 118, 125, 130, 135, 140, 145],
'cpi': [280, 282, 285, 288, 290, 295, 298, 302, 305, 308, 312, 315]
}
df = pd.DataFrame(data, index=dates)
# ===== 核心计算步骤 =====
# 1. 计算股票名义收益率(简单收益率)
df['nominal_return'] = df['close'].pct_change() * 100 # [3](@ref)
# 2. 计算通货膨胀率(基于CPI的月度环比)
df['inflation_rate'] = (df['cpi'].pct_change() * 100) # [5,6](@ref)
# 3. 计算实际收益率(通胀调整后的收益率)
df['real_return'] = ((1 + df['nominal_return']/100) / (1 + df['inflation_rate']/100) - 1) * 100 # [5](@ref)
# 4. 价格通胀调整(以基期CPI为基准)
base_cpi = df['cpi'].iloc[0] # 取第一个月为基准期
df['real_price'] = df['close'] / (df['cpi'] / base_cpi) # [5,6](@ref)
# 处理首行NaN
df.fillna(0, inplace=True)
# 打印结果
print(df[['close', 'cpi', 'nominal_return', 'inflation_rate', 'real_return', 'real_price']])
输出结果没毛病
close cpi nominal_return inflation_rate real_return real_price
2024-01-31 100 280 0.000000 0.000000 0.000000 100.000000
2024-02-29 105 282 5.000000 0.714286 4.255319 104.255319
2024-03-31 108 285 2.857143 1.063830 1.774436 106.105263
2024-04-30 112 288 3.703704 1.052632 2.623457 108.888889
2024-05-31 115 290 2.678571 0.694444 1.970443 111.034483
2024-06-30 120 295 4.347826 1.724138 2.579219 113.898305
2024-07-31 118 298 -1.666667 1.016949 -2.656600 110.872483
2024-08-31 125 302 5.932203 1.342282 4.529128 115.894040
2024-09-30 130 305 4.000000 0.993377 2.977049 119.344262
2024-10-31 135 308 3.846154 0.983607 2.834665 122.727273
2024-11-30 140 312 3.703704 1.298701 2.374169 125.641026
2024-12-31 145 315 3.571429 0.961538 2.585034 128.888889
- 0
- 0
-
赞助
支付宝
微信
-
分享