Skip to content

mr-hanlu/dca-calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

定投收益计算器

一个零运行时依赖的静态投资计算工具,包含固定收益估算、指数历史定投回测、多指数对比、场内 ETF 历史溢价追踪和随手可用的涨跌幅速算,可直接部署到 Cloudflare Workers 静态资源托管。

在线体验: https://dca-calculator.mrhanlu224.workers.dev/

功能

  • 首次投入的底仓从投资开始时参与复利
  • 每月定投资金默认按月初投入
  • 年化收益率转换为等效月化收益率并按月复利
  • 年管理费率转换为等效月费率并按月扣除
  • 展示总本金、期末金额、累计收益、总收益率和累计管理费
  • 展示逐年本金、资产、收益和累计管理费明细
  • 响应式布局,适配桌面和手机
  • 使用价格指数月末收盘数据回测历史定投
  • 内置 6 个常用指数,覆盖美国宽基、科技和中国大中盘、科创板
  • 支持在共同月份中对比多个指数的标准化累计表现、历史回撤和年化波动
  • 通过注册表扩展新指数,不需要修改回测页面或计算引擎
  • 页面展示数据来源和数据截止日期
  • 追踪标普 500 与纳斯达克 100 场内 ETF 的历史溢价,可切换 1 个月、3 个月、1 年和全部区间
  • 展示最新溢价、历史分位数和 P10/P25/中位数/P75/P90,并标记同组当前溢价较低的 ETF
  • ETF 采用注册表驱动,后续增加同类 ETF 无需修改页面逻辑
  • 四个页面均提供右下角悬浮涨跌幅速算,桌面端使用悬浮面板,手机端使用底部抽屉
  • 涨跌幅速算支持金额、价格和指数点位,数值最多显示 4 位小数,百分比固定显示 2 位小数
  • 最近 5 次涨跌幅计算保存在当前设备,支持点击记录回填和一键清空

页面

页面 路径 用途
固定收益估算 / 按固定年化收益率和管理费率估算定投结果
历史指数回测 /backtest/ 使用指数月末历史数据回测一笔底仓加每月定投
指数对比 /compare/ 对比多个指数的累计表现、回撤和波动
ETF 溢价 /etf-premium/ 查看标普 500 与纳斯达克 100 场内 ETF 的历史溢价和分位数

任意页面右下角的 % 按钮都可以打开涨跌幅速算。输入起始数值和当前数值后,点击“计算涨跌幅”或按回车即可得到数值变化和百分比变化。

最近 5 次成功计算使用浏览器 localStorage 保存在当前设备,不会上传到服务器。连续进行完全相同的计算时不会重复添加记录。

本地预览

推荐在项目目录启动本地静态服务器:

python3 -m http.server 4173 --directory public

然后访问 http://localhost:4173

可访问以下页面:

  • 固定收益估算:http://localhost:4173/
  • 历史指数回测:http://localhost:4173/backtest/
  • 指数对比:http://localhost:4173/compare/
  • ETF 溢价:http://localhost:4173/etf-premium/

历史数据更新

项目使用静态数据,网站运行时不请求第三方行情接口。指数月度数据和 ETF 日度数据需要更新时手动执行:

npm run data:update
npm run data:check

npm run data:update 会依次更新指数和 ETF;也可使用 npm run data:update:indexnpm run data:update:etf 单独更新。更新后提交 public/data/ 下发生变化的文件即可。

当前内置:标普500、纳斯达克100、沪深300、中证500、中证A500和科创50。

运行计算和数据测试:

npm test

部署到 Cloudflare Pages

将仓库推送到 GitHub 后,在 Cloudflare 的 Workers & Pages 中选择 Pages,并导入该 GitHub 仓库。

构建设置:

配置项
Production branch main
Build command exit 0
Build output directory public

Cloudflare Pages 会在每次推送到 main 后自动部署,并为 Pull Request 创建预览环境。历史数据也是普通静态文件,不需要配置 D1、R2 或 Pages Functions。

计算口径

涨跌幅速算采用:

数值变化 = 当前数值 - 起始数值
涨跌幅 = (当前数值 - 起始数值) / 起始数值 × 100%

起始数值必须大于 0,当前数值不能小于 0。

ETF 页面展示的是相对上一已公布基金净值的历史溢价,不是盘中 IOPV 溢价:

历史溢价率 = (ETF 当日收盘价 / 交易日前最近一次已公布单位净值 - 1) × 100%

净值日期必须早于交易日;两者相隔超过 7 个自然日的数据会被剔除。该指标适合比较同一组 ETF 在历史中的相对位置,但不代表次日实时溢价,也不构成交易建议。

固定收益估算的月化收益率采用以下方式从年化收益率换算:

月化收益率 = (1 + 年化收益率)^(1/12) - 1

等效月管理费率采用:

月管理费率 = 1 - (1 - 年管理费率)^(1/12)

底仓在第 0 个月投入;每月定投在月初发生。每月先计算投资收益,再从当期资产中扣除管理费;累计管理费为投资期内每月实际扣费之和。若使用的收益率已经扣除管理费,应将管理费率设为 0,避免重复扣费。计算结果是固定收益率假设下的估算,不代表实际投资回报。

About

一个定投收益计算器,支持指数历史回测、多指数涨幅与回撤对比,零依赖、纯前端,可部署到 Cloudflare Workers。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors