本文基于 GitHub 开源项目
scsfwgy/global_asset_history
(MIT 协议)与公开 Demo 整理,本文仅介绍数据查询和历史回测功能,不构成投资建议。历史收益、回撤和回测结果不代表未来表现,实际交易还会受到汇率、手续费、税费、滑点、分红及数据口径影响。
想把 QQQ、BTC 和 A 股指数放在同一个页面里比较,通常要在多个平台之间切换。美股、数字货币、A 股和 QDII 基金的数据分散在不同网站;如果还想比较一次性买入与定期投入的历史回测结果,操作会更加零散。
GlobalAssetHistory 是一款开源的定投回测工具,把美股及 ETF、数字货币、A 股指数及部分股票的历史收益查询集中到一个页面,并提供场内跨境 ETF 和场外 QDII 基金信息。

除了查看年度、月度表现和日线数据,你还可以模拟每日、每周或每月定投,查看累计投入、收益变化和每笔买入记录。页面还提供暴跌恢复期统计、ETF 参考溢价和 QDII 基金数据,可用于比较不同标的的历史表现,以及粗略测算不同投入方式的结果。
GlobalAssetHistory 和常见行情软件有什么不同
常见行情软件和券商 App 更侧重实时盘口、分时图与技术指标,GlobalAssetHistory 则把重点放在不同资产的历史表现对比,以及年、月、日三个层级的数据查询。
主界面使用热力图展示多类资产的历年涨跌幅。点击某个年份,可以继续查看该年 12 个月的月度表现;点击具体月份,还能看到当月每日的收盘价与单日涨跌情况。页面也提供场内 ETF 的管理费、托管费与参考溢价率,以及 QDII 基金的申购限额状态。

相关数据来自第三方接口,并经过服务端缓存。页面显示的 ETF 溢价和 QDII 申购状态可能存在延迟,更适合日常查询与初步筛选,不能替代券商实时行情,也不适合用于盘中交易决策。
工具主要使用历史日线收盘价进行计算,未完整计入交易手续费、税费、滑点、现金分红、分红再投资和动态汇率变化。不同市场的交易日期与休市安排也不相同,数据可能无法完全对齐,因此结果更适合观察历史走势和粗略比较投入方式。
GlobalAssetHistory 支持哪些资产和功能
GlobalAssetHistory 的功能主要集中在跨市场历史数据查询、定投回测和 ETF/QDII 信息查看。下面汇总其支持的资产范围、投入方式、数据来源与部署架构。
| 维度 | 功能说明 |
|---|---|
| 支持的资产 | 美股及 ETF、主流数字货币、A 股指数及部分股票、场内跨境 ETF、场外 QDII 基金;具体标的以当前页面实际查询结果为准 |
| 投入方式 | 一次性投入,以及按日、按周或按月定投 |
| 主要数据源 | Yahoo Finance、Binance、OKX、CoinGecko、东方财富、腾讯财经等第三方数据接口 |
| 缓存机制 | 核心日线数据通常缓存 6 小时,部分 ETF 与 QDII 数据缓存约 4 小时 |
| 数据下载 | 当前数据下载模块主要提供 JSON 预览与 JSON 文件下载;README 提到 CSV,实际可用格式以在线页面版本为准 |
| 技术与部署 | 采用 Python 3、Flask、原生 JavaScript 与 SVG,可在本地、服务器或 Serverless 环境中部署 |
由于项目依赖多个第三方数据源,不同市场能够查询的标的和数据周期并不完全一致。页面中的年、月、日收益钻取主要基于历史日线数据,其中“日”是指每日收盘数据,不代表分钟级或小时级行情。短周期数据仅适用于部分市场和标的,A 股相关标的能否使用应以当前页面的实际查询结果为准。

第三方接口调整也可能影响标的范围、缓存时间和下载格式。项目当前的数据下载模块主要提供 JSON 预览与 JSON 文件下载;项目虽然提供 CSV 导出,但线上实际功能可能存在版本差异。
定投回测工具怎么用:以 QQQ 按月投入为例
GlobalAssetHistory 的定投回测基于历史日线数据。使用时可以设置起止时间、初始资金、投入金额和买入周期,支持一次性投入,以及按日、按周或按月定投。提交后,页面会显示累计投入、最终资产、收益曲线和每笔买入明细。
以 QQQ 为例,选择一段明确的历史区间,填写每月投入金额和固定买入日期,就可以查看按月定投在这段时间内的持仓成本与资产变化。使用相同的时间和投入金额再运行一次一次性投入,还能直观看出两种投入方式的结果差异。

这类对比适合观察不同市场阶段对投入节奏的影响。例如,在持续上涨、横盘震荡或中途大幅下跌的区间里,一次性投入与按月定投的平均成本、账户波动和恢复时间可能会呈现不同变化。也可以使用相同条件测试 SPY、BTC 等标的,但不同市场的交易日期和计价货币并不完全一致,结果不宜直接进行精确横向比较。
查看回测结果时,还应确认固定买入日遇到非交易日时如何处理,以及计算是否包含手续费、税费、分红再投资和汇率变化。当前数据下载页面主要提供 JSON 格式,回测结果是否支持单独下载,应以在线 Demo 当前显示为准。回测能够帮助理解历史波动和成本变化,但不能据此判断某项资产未来是否适合长期持有。
暴跌恢复统计:资产下跌后多久回到前期高点
累计收益率只能说明一项资产在所选区间内涨了多少,却看不出持有过程中经历过多大的下跌,以及下跌后用了多久才重新回到前期高点。
GlobalAssetHistory 的暴跌统计会按照项目设定的跌幅条件,记录标的历史上出现单日大幅下跌的次数,并计算从下跌低点恢复至前期高点所需的平均天数和最长天数。具体跌幅阈值和计算方式,应以当前页面及项目代码为准。

这组数据适合用来比较不同资产的历史恢复能力。例如,两项资产的长期累计收益可能接近,但其中一项在大跌后很快恢复,另一项则需要更长时间才能回到原来的位置,实际持有体验会有明显差别。
不过,恢复时间只能反映已经发生的历史情况。它会受到所选区间、数据频率和暴跌判定标准影响,不能据此预测下一次下跌的幅度或恢复速度。
GlobalAssetHistory 的数据来源、缓存与部署方式
GlobalAssetHistory 后端采用 Python Flask,并使用 Blueprint 划分不同功能模块;前端主要由原生 HTML、CSS、JavaScript 和 SVG 构成,没有依赖 React 或 Vue。整体架构比较轻量,但实际查询速度仍会受到第三方接口响应和缓存状态影响。
项目针对不同市场配置了多个数据源和备用接口:
- 美股及 ETF:主要通过 Yahoo Finance 获取历史行情。
- 数字货币:按照 Binance、OKX、CoinGecko 的顺序尝试获取数据,某个接口不可用时可切换至备用来源。
- A 股与基金:主要接入东方财富和腾讯财经等第三方接口。
为了减少重复请求,成功获取的核心日线数据通常会缓存约 6 小时,部分 ETF 与 QDII 数据缓存约 4 小时,接口错误结果则会短暂缓存。具体缓存时间可能随项目版本调整,应以当前代码和部署配置为准。
项目采用 MIT 协议,仓库提供
start.sh 启动脚本,安装 Python 依赖后可在本地电脑或服务器运行,默认端口为 8730。项目也支持 Vercel Serverless 部署;如果未连接 Redis,实例重启或回收后,本地缓存可能失效。目前项目尚未发布正式 Release。准备长期运行前,建议检查最近提交、依赖版本和第三方数据接口是否仍能正常响应,不要直接把开发版本当作稳定的生产服务。
GlobalAssetHistory 适合哪些人,哪些需求不适合
如果你平时需要查看美股 ETF、数字货币、A 股指数、部分 A 股股票或 QDII 基金,可以用 GlobalAssetHistory 集中查询历年涨跌幅、月度表现和日线数据,也可以粗略比较一次性投入与每日、每周或每月定投的历史结果。
它尤其适合想快速了解历年涨跌幅、暴跌后的恢复时间,以及一次性投入与定期投入结果差异的普通投资者。页面操作比较直接,不需要先学习复杂的量化分析方法。
不过,它不适合多资产组合回测、仓位再平衡、相关性与对冲分析,也不能提供高频行情监控。由于回测没有完整还原真实交易成本、分红处理和汇率变化,结果不能替代专业量化平台,也不应直接作为交易依据。
项目主页与在线体验
🌐 GlobalAssetHistory 在线演示页面
无需部署,可体验美股、数字货币、A 股指数及部分股票的历史收益查询、定投回测与 ETF 溢价查询。
🐙 GlobalAssetHistory GitHub 项目主页
查看 Flask 后端源码、配置文件格式以及基于 MIT 协议的私有化部署说明。