- 静态网站,用于展示在自定义时间范围内的比特币定投(DCA)收益表现。
- 支持三类定投模式:
- 每月固定日期(1–31)。若当月没有该日期,则使用当月最后一天。
- 按 AHR999 指数阈值买入。可选阈值包含
0.4/0.5/0.6/0.7/0.8/0.9/1.0/1.1/1.2。 - 按价格均线买入。可选均线窗口:
200/350/700/1000日;条件可选当日价格 ≤ 均线或当日价格 ≥ 均线。
- 频率支持:
- 满足条件的所有日期(每日筛选)。
- 每月仅一次(若该月没有任何达标日,则回退到当月最后一天买入)。
- 页面展示:总投入、期末资产价值、收益/回报率、持币数量、买入次数;并提供资产价值与累计投入的对比折线图。悬浮显示当日价格与 AHR999 指数。
- 价格数据文件:
btc-price all.csv。 - 数据覆盖:2017-10-01 至 2025-11-15(默认页面副标题与输入框会以此范围初始化)。
- CSV 格式:
- 表头:
date,btc price - 日期格式:支持
YYYY-MM-DD与YYYY/M/D。 - 价格单位:美元(USD)。
- 表头:
- 时间范围:用户可自定义开始/结束日期;默认
2017-10-01到2025-11-15。 - 每次定投金额:用户可自定义,默认
100 USD。 - 每月固定日:
- 对区间内每个自然月,选择用户设定的日期;若当月没有该日期,则以该月最后一天替代;该日需有价格记录。
- AHR999 阈值:
- 当日
AHR999 ≤ 阈值时买入;阈值含0.4等更保守选项。
- 当日
- 价格均线:
- 简单移动均线(SMA),窗口可选
200/350/700/1000日。 - 条件:当日价格相对均线的
≤或≥。
- 简单移动均线(SMA),窗口可选
- 统计指标:
- 累计投入 = 买入次数 × 每次定投金额。
- 持币数量 = Σ(每次买入的金额 / 当日价格)。
- 期末资产价值 = 持币数量 × 结束日期价格。
- 收益 = 期末资产价值 − 累计投入;回报率 = 收益 / 累计投入。
- 200 日定投成本(AHR999 计算用):滚动窗口法计算
C = 200 / Σ(1/pi),从第 200 天开始输出成本。 - 指数增长估值:
10^(5.84 × log10(币龄) − 17.01);币龄以 UTC 从2009-01-03起算并加 1。 - 简单移动均线(SMA):对价格做窗口累加并除以窗口大小;从窗口满载开始输出均线值。
- 本地预览:
- 在项目根目录运行:
python3 -m http.server 8000 - 打开浏览器访问:
http://localhost:8000/
- 在项目根目录运行:
- 页面操作:
- 设置“每次定投金额(USD)”。
- 设置“开始日期”和“结束日期”。
- 选择模式:
每月固定日、按 AHR999 阈值或按价格均线,并设置对应参数。 - 点击“计算并更新”,刷新指标与图表。
index.html:页面结构、控件与图表容器(含三种模式的控件)。styles.css:样式与布局。app.js:数据解析、AHR999 与均线计算、策略与图表渲染。btc-price all.csv:每日价格数据源。README.md:项目说明文档(本文件)。
- CSV 解析与数据加载:
app.js:11-12 - 范围过滤:
app.js:13 - 价格映射构建:
app.js:14 - 200 日定投成本(滚动窗口):
app.js:15 - 指数增长估值:
app.js:16 - 币龄计算:
app.js:17 - AHR999 计算:
app.js:18 - 简单移动均线(SMA):
app.js:20 - 每月固定日日期生成:
app.js:19-20 - AHR999 日度/每月一次:
app.js:23-24 - 均线日度/每月一次:
app.js:25-26 - 收益序列与图表渲染:
app.js:27-28 - 指标展示:
app.js:29 - 模式切换与交互入口:
app.js:30-32
- 切换数据源为
btc-price all.csv,支持YYYY-MM-DD与YYYY/M/D日期解析。 - 默认展示范围改为
2017-10-01至2025-11-15,并新增日期自定义输入。 - AHR999 阈值增加
0.4选项与现有频率设置。 - 新增“按价格均线”模块,支持
200/350/700/1000日均线与条件/频率组合。
仓库地址: https://github.com/lovexw/dca
小吴乐意主页: https://www.xiaowuleyi.com/