基金定投计算器
定投复利测算 + 历史回测 + 微笑曲线教学演示,三大能力一体。
适用场景
- "每月定投1000,年化8%,3年后有多少钱"
- "帮我回测一下 161725 最近3年定投的收益"
- "招商中证白酒 现在开始定投划算吗"
- "给我讲讲微笑曲线,定投为什么越跌越买"
- "每月定投2000,坚持10年能有多少"
- "定投和一次性买入哪个更划算"
使用方式
在技能目录下运行(python3 或 python):
# 1. 复利测算(纯本地计算,不联网)
python3 fund_invest_calculator.py plan 1000 8 3
python3 fund_invest_calculator.py plan 1000 8 3 --freq 周
# plan <每期金额> <预期年化收益率%> <年限> [--freq 月|周|季|年]
# 2. 历史回测(联网,天天基金公开数据)
python3 fund_invest_calculator.py backtest 161725 1000
python3 fund_invest_calculator.py backtest 招商中证白酒 1000 --years 5
python3 fund_invest_calculator.py backtest zszzbj 500 --start 2021-01-01 --end 2024-12-31 --freq 周 --fee 0.15
# backtest <基金代码/名称/拼音> <每期金额> [--years N | --start 日期 --end 日期] [--freq 月|周|季] [--fee 申购费率%]
# 3. 微笑曲线演示(真实净值自动找先跌后涨区间)
python3 fund_invest_calculator.py smile 161725 --amount 1000
python3 fund_invest_calculator.py smile 招商中证白酒 --start 2021-01-01 --end 2024-12-31 --fee 0.15
# 4. 模拟微笑曲线教学(纯本地计算,不联网)
python3 fund_invest_calculator.py smile-sim 30 12 24 1000
# smile-sim <跌幅%> <下跌月数> <回升月数> <每月金额>
环境说明:如果
python3不在 PATH,可用python fund_invest_calculator.py ...。纯标准库实现,无第三方依赖。
输入说明
| 参数 | 说明 |
| --- | --- |
| 基金标识 | 6位代码 / 中文名称 / 拼音缩写(如 zszzbj=招商中证白酒)。未指定份额类别时默认 A 类 |
| 每期金额 | 支持 1000、1千、1万、500元、一百万、三千(阿拉伯数字可带千/万单位,也支持常见中文数字) |
| 年化收益率 | 支持 8、8%、0.08 |
| --years | 回测最近 N 年;与 --start/--end 二选一 |
| --fee | 申购费率(%),backtest/smile 默认 0.15(即1折后的常见费率),填 0 表示免申购费。注意:现金分红型基金(分红频次高)在"红利再投"复权口径下偏差可能偏大,结果仅供参考 |
各命令输出
- plan(复利测算):累计投入、期末总资产(期末/期初投入两种口径)、收益、收益率、年化、同期一次性投入对比、教学要点。
- backtest(历史回测):定投期数、累计投入、期末市值、收益、收益率、XIRR年化、一次性投入对比、区间最高/最低净值与振幅。基于累计净值模拟"红利再投"口径,扣申购费。
- smile(微笑曲线演示):自动识别区间内"前期高点→谷底"的下跌段,从高点开始模拟月定投(扣申购费,与 backtest 口径一致),输出期末收益、一次性买入对比、以及"净值回到前期高点时定投已盈利"的关键教学结论。
- smile-sim(模拟微笑曲线):生成一条自定义"先跌后涨"净值路径,逐月列出净值/累计投入/份额/市值/盈亏,直观演示"净值回到原点,定投已盈利、一次性买入刚回本"。
执行流程
- 解析输入:判断用户给的是代码/名称/拼音,名称拼音走内置搜索接口解析为6位代码;纯数字直接使用。
- plan/smile-sim:纯本地计算,立即返回,不联网。
- backtest/smile:请求
fund.eastmoney.com/pingzhongdata/<code>.js获取全量历史净值(单位净值 + 累计净值),按回测区间截取,模拟定投。 - 展示给用户:把脚本输出的表格原样呈现。对 backtest 补充说明"历史回测不代表未来收益";对 smile 强调教学意义而非收益预测。
数据边界(务必告知用户)
- 数据源为天天基金公开接口,覆盖全市场公募基金(含场内外),非实时推送,有页面缓存延迟。
- 回测基于累计净值近似"红利再投"复权:若基金期间有现金分红(非红利再投),实际账户口径会略有差异;管理费/托管费已内含于净值,不需另扣,但需扣申购费(默认0.15%)。分红频次高的基金(如分红型债基),复权口径与账户实际分红到手口径偏差可能偏大,结果仅供参考。
- 回测是历史模拟,不代表未来收益;定投也不能消除亏损,只是降低择时难度。
- 未指定区间时 backtest 默认取最近3年、smile 默认取最近3年;区间过短(扣款不足2期)会提示拉长区间,基金成立较晚会提示数据不足。
- 页面反爬偶发,脚本内置15秒超时+2次重试;多次失败请稍后再试。
- 拼音输入需为基金全称拼音缩写(如招商中证白酒=zszzbj),接口对纯小写拼音的基金匹配有限,建议优先用代码或中文名。
兼容性保证
- 标准环境:纯 Python 标准库(urllib)实现,零第三方依赖,Windows/Linux/macOS 均可运行。
- Coze 环境:检测到平台代理环境变量时自动使用
coze_workload_identity出网,未注入代理时回退 urllib 直连。 - 输出无 emoji,GBK 控制台不崩溃;极端 ascii 环境下自动切换 utf-8 兜底。
- 不依赖 PATH、不依赖其他技能,自包含可独立运行。
说明:所有命令输出末尾会附带反馈引导文案,这是产品要求,请保留不删。
Scan to join WeChat group