研究概览业绩展示项目文档

本页直接读取仓库中的说明文档。 查看源文档 ↗

让 CNN 看 K 线图,我们试到了哪一步

查看带互动收益曲线的 CNN 研究专题 →

以前确实做过让模型看 K 线图的实验,也留下了图片、预测和回测记录。这次把公开发布包、本机比赛项目和 Linux 上的存档对了一遍,找回了两张原来导出的图片。现有结果还不足以支持把图像 CNN 接到比赛账户。

这页更新于 2026 年 10 月 29 日。下面先看图片,再讲历史实验暴露的问题。所有收益数字都来自旧报告,本次没有重新训练模型或提交订单。

模型到底在看什么

普通 K 线把一天的开盘价、最高价、最低价和收盘价画在一起。下面的灰度图把连续 20 个交易日压成一张小图片,下面的短柱表示成交量。模型拿到截至某一天的图片,学习它与随后一段时间涨跌的关系。

CNN 可以理解为一种寻找局部图形的模型。它会学习哪些线条组合经常一起出现,再给出预测。图片里曾经出现过某种形状,并不保证下一次仍有同样的结果。

两张都取自腾讯、截至 2004 年 7 月 15 日的历史窗口,来自 6 月公开发布包中的原有 PNG。它们是实际导出的模型输入。两种实验的预测期不同,文件里的事后涨跌标签也不同,不能把标签差异当作模型预测好坏的证据。图中没有原始价格坐标,本页不提供原始行情表。

图片归属为 FUTU Quant Lab 公开发布包,包内记录代码版本 acb8565。行情来源和图片再分发许可尚未独立核验,公开下载不代表整份数据可自由转发。这里仅按研究回顾展示两张已有的归一化输入图。

同样叫 CNN,输入可以完全不同

路线喂给模型的东西目前能说明什么
数值 CNN从开高低收和成交量算出的六项数值特征验证了数值信号与回测程序能连接
图像 CNN上面这样的灰度 K 线图已有实际图片、预测和历史报告,投资效果仍待检验
按时间逐段训练的数值 CNN每次先用过去训练,再往后预测比赛项目的小样本太短,原配置没有产生可用检验段

项目里的 cnn_walk_forward_rank 属于第三行,用的是数值特征。它与图像 CNN 分开实现,不能替图像模型证明样本外效果。

这里的样本外,是指用训练时没见过、时间更晚的数据检验模型。若模型先看过某段历史,再回到这段历史展示收益,结果通常会过于乐观。

以前列过的六种 CNN 方案

原项目的策略总表列了六个 CNN 相关条目。它们有共同的基础,其中有参数变体,也有在原有信号上增加规则的方案。

旧方案大白话解释
cnn_pattern用价格和成交量算出的数字,让 CNN 找规律。
cnn_pattern_mvp同一个数字模型的宽松门槛版本,主要用来先跑通流程。
cnn_image_pattern把 K 线画成图片,再交给 CNN 看。
cnn_walk_forward_rank用过去的数据分段训练,再给后面的股票排序。
cnn_plus_sentiment在基础数字模型的信号上,加一层情绪过滤。
cnn_vol_regime在 CNN 加情绪的基础上,再根据市场波动调整风险和权重。

两种图像画法和不同的窗口、预测天数组合,是图像方案内部的实验设置。上面的六个条目也没有一份经过同口径验证的六方案成绩单,不能直接按名称比较谁最好。来源是原项目策略总表和 CNN 实现说明。

6 月的发布包里留下了什么

发布包约 56 MB,记录打包时包含数据和研究报告,并排除了账户数据。里面有 32 张 K 线输入图片、图像预测表、数值 CNN 的逐段训练记录和策略比较报告。本机原项目仍然存在,本次把发布包保留在项目自己的私有数据目录,没有重复克隆项目,也没有把原始行情搬进网站。

一份图像实验比较了 12 只港股,组合记录覆盖 2018 年 1 月 2 日至 2026 年 5 月 22 日。下面是归档报告原有的比较,最大回撤统一写成正数。回撤 59% 的意思是,账户曾从某个高点跌去约六成。

历史规则整段报告收益报告最大回撤
图像 CNN 每次选分数靠前的五只+14.87%59.47%
同股票池的均线规则+91.70%34.73%
同股票池的动量规则+2.31%42.65%

如果三种方法都从 100 元开始

下面把旧报告中每天的组合价值画出来,并把起点统一换成 100。横轴是年份,纵轴是模拟组合价值。比如曲线到 150,就相当于起初的 100 元变成了 150 元。

2018 至 2026 年三种历史模拟方法的组合价值曲线,起点均为 100。图像 CNN 结束时约 115,均线约 192,动量约 102,中途均有明显下跌。
紫色实线代表图像 CNN,绿色长虚线代表均线,棕色短虚线代表动量。图来自公开发布包的逐日模拟记录。

到 2026 年 5 月 22 日,图像 CNN 的 100 元约变成 114.87 元;均线约为 191.70 元;动量约为 102.31 元。CNN 曲线中途也有很深的下跌,最严重时从之前的高点跌去约 59.47%。这三条线来自历史模拟,比赛账户的实际收益不在这张图里,未来表现也可能不同。

这些是八年多的累计收益,不能当成年收益。三条规则的交易频率和持仓过程也不同。图像实验的留存记录显示,按换手额计的费用为 30 个基点,约为每交易 1 万元计入 30 元成本;这只是旧回测的成本假设。

预测表标有年度分组,但尚未找到能与这次运行一一对应的训练程序和完整配置。训练究竟在哪天停止、是否避开了未来信息,还不能从年份字段单独核实。股票池的历史选样、复权和实际成交也没有完成核验。因此,这张表帮助我们回顾旧实验,不列入已验证的策略业绩。

另一份 30 只股票的数值 CNN 存档覆盖 2015 年 1 月 2 日至 2026 年 5 月 22 日,时间范围与上表不同。选前五只的报告累计收益约为 -60.15%,最大回撤约为 78.16%。原来的较高分数门槛则没有产生持仓。把门槛放低能增加交易,却没有自动带来更好的投资结果。

比赛项目后来也做过检查

2026 年 10 月 19 日的固定诊断使用了更小的输入。港股只有一只可选股票,另有一只基准 ETF;美股只有 SPY。它适合发现程序和样本问题,无法代表正常的多股票选股能力。

图像 CNN 在这份报告里的累计收益为港股 +22.77%、美股 +13.30%。同一份报告中,较宽松的数值 CNN 给出了相同的汇总结果,现有证据没有显示图片输入带来了额外优势。

这轮图像模型训练后还会预测包含训练样本的整段数据,所以报告明确标为样本内诊断。严格按时间训练的数值模型原本需要 1,260 个交易日训练,而当时两组数据分别只有 727 和 751 个交易日,连一个完整检验段都凑不出来。

后来新增的研究验收检查没有接受这 16 项股票实验作为合格研究证据。旧结果仍保留,缺少的训练边界、样本范围和数据证明也一起记录。详见原始策略检查和研究验收说明。

Linux 上找回的是另一条线索

Linux 冷存档中找到了另一套名为 cnn2d_multimodal 的模型文件、两条训练日志和因子结果文件。它们证明以前留下过 CNN 研究产物。但目前还没有找到配套源码和数据切分说明,也没有证据把它与 FUTU Quant Lab 连接起来。本页不混用这套存档的效果数字。

接下来值得验证什么

最有价值的下一步,是固定同一批股票和同一段未知的未来数据,对比图像 CNN、数值 CNN 与简单均线规则。每一段都先训练完,再向后预测,记录这张图结束的日期、预测哪几天,以及训练当时究竟能知道什么。

图片大小和预测天数也要先固定。前面展示的两种画法,可以先作为两个明确的候选,避免反复尝试以后只保留最好的一张成绩单。费用、资金使用比例和换手口径需要一致,最后再比较净收益与回撤。

在新的检验完成前,这些材料适合继续做研究和教学演示。当前没有可直接交给比赛账户执行的图像 CNN 策略。

进一步查看

给想复核来源的人

发布包文件为 chi-futu-quant-lab-bundle-20260616_124229.zip,SHA256 为 418ad65ffe059fc723d3f57b4668abc195bb5c63fdab5d6ff02ed7b320fe79a8。上述 12 股比较取自包内 artifacts/reports/backtests/image_cnn_mvp/summary.csv,30 股比较取自 walk_forward_hk_cnn_mvp/summary.csv。两张图片分别来自 cnn_image_samples 与 cnn_image_samples_paper_ohlc 中首个截至 2004-07-15 的样本。输入图、历史收益和训练方法的证据分别核对,没有把它们当作同一次运行的完整证明。

曲线由同目录下三种规则各自的 portfolio_daily.csv 逐日组合价值归一化生成,并与汇总收益、最大回撤核对;各规则留存的 positions_daily.csv 费用记录均按换手额的 0.3% 计算。生成脚本为 competition_tools.cnn_archive_performance。