3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在聚宽(JoinQuant)的回测环境中,股息红利税的计算方式与真实交易存在显著差异。以下是详细的对比说明:
在回测及模拟交易中,由于系统需要在分红派息当天将现金发放到账户,但此时系统无法预知用户未来何时会卖出该股票(即无法确定持仓时间),因此采用了统一的简化处理方式:
原因说明:这是为了避免未来函数并简化计算。因为在分红到账的那一刻,回测引擎无法预知这笔持仓未来会持有超过一年还是明天就卖出,为了保证账户现金流的确定性,系统选择按最高标准预扣。
真实市场中执行的是差别化个人所得税政策,税率取决于股票的持有期限,且扣税时点通常在卖出股票时。
| 比较项目 | 聚宽回测/模拟交易 | 真实A股交易 |
|---|---|---|
| 税率 | 固定 20% | 0% - 20% (取决于持仓时间) |
| 扣税时点 | 分红派息日直接扣除 | 分红时不扣,卖出时补扣 |
| 持仓影响 | 无关,统一处理 | 持仓越久税率越低,满一年免税 |
| 现金流影响 | 到账金额较少 (80%) | 到账金额为全额 (100%),卖出时扣减现金 |
由于回测中统一按20%扣税,这会导致高股息策略(红利策略)在回测中的表现通常会略低于真实情况(特别是对于长期持仓的策略,真实交易中往往是免税的,而回测中被扣掉了20%的利润)。在评估此类策略时,应考虑到这一回测偏差。
Q: 为什么回测中不能按照真实持仓时间计算红利税?
A: 因为回测系统在分红日需要结算现金到账,此时系统无法预知未来您何时会卖出该股票。如果等到卖出时再回溯扣税,会增加系统的复杂性并可能导致现金流计算的混乱。因此,系统采取了保守的预扣方式。
Q: 这种计算差异对短线策略影响大吗?
A: 对短线策略(持仓小于1个月)影响较小,因为真实交易中短线持仓的红利税也是20%,与回测一致。主要区别在于扣税的时间点不同(回测是分红日扣,实盘是卖出日扣)。
Q: 模拟交易中开启“真实价格”模式会改变红利税计算方式吗?
A: 不会。set_option('use_real_price', True) 主要影响的是复权价格的处理和持仓数量的调整,红利税的扣除逻辑依然遵循平台统一的 20% 预扣规则。