🚀 AI 一键生成 joinquant 策略代码

JoinQuant 回测细节:股息红利税的计算方式及其对策略收益的影响

joinquant | 发布时间: 2025/12/11
以下内容由 EasyQuant 生成。

问题描述

回测的时候,分红派息的税是怎么计算的?它和真实交易中的计算方式有什么不同吗?

解决方案

在聚宽(JoinQuant)的回测环境中,股息红利税的计算方式与真实交易存在显著差异。以下是详细的对比说明:

1. 聚宽回测环境中的计算方式

在回测及模拟交易中,由于系统需要在分红派息当天将现金发放到账户,但此时系统无法预知用户未来何时会卖出该股票(即无法确定持仓时间),因此采用了统一的简化处理方式:

  • 税率:统一按照 20% 的最高税率计算。
  • 扣税时间:在分红派息当日直接扣除。
  • 计算逻辑:实际到账现金 = 分红金额 $\times$ (1 - 20%)。

原因说明:这是为了避免未来函数并简化计算。因为在分红到账的那一刻,回测引擎无法预知这笔持仓未来会持有超过一年还是明天就卖出,为了保证账户现金流的确定性,系统选择按最高标准预扣。

2. 真实交易中的计算方式(A股政策)

真实市场中执行的是差别化个人所得税政策,税率取决于股票的持有期限,且扣税时点通常在卖出股票时

  • 扣税时间
    • 分红派息当日:不扣税,全额到账。
    • 卖出股票当日:根据持有时间计算应补缴税款,由券商直接从资金账户中扣除。
  • 税率规则(根据持股期限):
    • 持有期限 > 1年免税(0%)。
    • 1个月 < 持有期限 ≤ 1年:税率为 10%
    • 持有期限 ≤ 1个月:税率为 20%
  • 持仓时间计算原则:遵循“先进先出”(FIFO)原则。即卖出时,优先卖出最早买入的那部分股票来计算持有时间。

总结对比表

比较项目 聚宽回测/模拟交易 真实A股交易
税率 固定 20% 0% - 20% (取决于持仓时间)
扣税时点 分红派息日直接扣除 分红时不扣,卖出时补扣
持仓影响 无关,统一处理 持仓越久税率越低,满一年免税
现金流影响 到账金额较少 (80%) 到账金额为全额 (100%),卖出时扣减现金

对策略的影响

由于回测中统一按20%扣税,这会导致高股息策略(红利策略)在回测中的表现通常会略低于真实情况(特别是对于长期持仓的策略,真实交易中往往是免税的,而回测中被扣掉了20%的利润)。在评估此类策略时,应考虑到这一回测偏差。


Q&A

Q: 为什么回测中不能按照真实持仓时间计算红利税?
A: 因为回测系统在分红日需要结算现金到账,此时系统无法预知未来您何时会卖出该股票。如果等到卖出时再回溯扣税,会增加系统的复杂性并可能导致现金流计算的混乱。因此,系统采取了保守的预扣方式。

Q: 这种计算差异对短线策略影响大吗?
A: 对短线策略(持仓小于1个月)影响较小,因为真实交易中短线持仓的红利税也是20%,与回测一致。主要区别在于扣税的时间点不同(回测是分红日扣,实盘是卖出日扣)。

Q: 模拟交易中开启“真实价格”模式会改变红利税计算方式吗?
A: 不会。set_option('use_real_price', True) 主要影响的是复权价格的处理和持仓数量的调整,红利税的扣除逻辑依然遵循平台统一的 20% 预扣规则。