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

如何基于股票日度收盘价使用Python计算个股月度收益率

日度股票数据转月度收益率实现方法

你之前调用table.groupby('month')未得到预期结果,核心原因有两个:

  • 生成的宽表table中仅包含Date字段和各股票的调整收盘价列,未提前生成month分组维度
  • 月度收益率需要基于每月固定时点(通常是月末/月初交易日)的收盘价计算,不能直接对日度价格做普通分组聚合

你运行代码得到的日度调整收盘价宽表结构如下:
日度调整收盘价宽表运行结果

具体实现代码

在你原有代码的末尾追加以下代码即可:

# 转换日期格式,设置为索引以支持时间重采样
table['Date'] = pd.to_datetime(table['Date'])
table = table.set_index('Date')

# 按自然月重采样,取每个月最后一个交易日的收盘价
monthly_close = table.resample('M').last()

# 计算环比月度收益率,删除首行空值
monthly_return = monthly_close.pct_change().dropna()

# 若需要显式生成月份字段用于分组,可重置索引后添加
monthly_return = monthly_return.reset_index()
monthly_return['month'] = monthly_return['Date'].dt.to_period('M')

可选调整说明

  • 如果你需要以每月第一个交易日的收盘价为基准计算收益率,将resample('M').last()替换为resample('M').first()即可
  • 上述代码计算的是简单收益率,公式为(当月收盘价/上月收盘价)-1;如果需要计算对数收益率,可将收益率计算行替换为monthly_return = np.log(monthly_close / monthly_close.shift(1)).dropna()
  • 如果需要按年+月维度分组统计其他指标,直接基于生成的month字段调用groupby('month')即可正常使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:09:15