第十三章 从想法到落地

合规边界、技术架构与验证体系

153页 · 预计12

上一章我们完成了模拟盘核心规则的系统化定义,输出了可执行的代码框架。但规则落地只是第一步,真要长期稳定运行、甚至对外公开,还要过三道关:合规关、技术关、验证关。很多人做模拟盘要么踩了合规红线,要么技术上bug百出,要么回测有漏洞结果失真,最后要么做不下去,要么做出来的东西没人信。

这一章我们就把落地的全流程讲透:个人展示的合规边界在哪里、三层技术架构怎么搭、怎么彻底杜绝未来函数、怎么做才能让观众信任策略的真实性。这些细节看似琐碎,却直接决定了这套系统最终是能用的工具,还是自娱自乐的数字游戏。

13.1 合规层面的声明与备案:红线在哪里

很多人做模拟盘最担心的问题就是:我把净值和持仓放出去,会不会被认定为非法荐股?会不会有合规风险?

这不是小题大做。A股市场对证券投资咨询、代客理财有明确的监管红线,踩线了哪怕是个人非盈利行为,也可能带来麻烦。但只要明确边界,个人展示模拟交易结果完全在合法范围内,核心是区分“研究展示”和“投资建议”。

我基于行业经验总结了四条合规底线,只要严格遵守,个人展示模拟盘基本不会有合规问题:

第一,明确区分“模拟”与“实盘”

网站、文章、视频的最显著位置(K线图正上方、标题下方),必须以不小于正文字号的字体标注:

本内容展示的所有交易与净值均为量化策略的历史回测与模拟运行结果,并非真实账户交易记录,不构成任何投资建议,过往业绩不代表未来表现。

所有涉及持仓的地方,都要前缀“模拟持仓”,交易信号前缀“策略触发信号”,绝对不能省略“模拟”两个字,直接用“持仓”“买入”“卖出”等指令性表述。很多合规风险都来自表述不严谨,让观众误以为是实盘建议。

第二,严守“三不原则”

不收费:所有内容免费开放,不收取任何会员费、咨询费、带单费,不涉及任何资金往来。一旦收费,性质就从“个人研究”变成“经营活动”,监管要求会完全不同。
不代客理财:不接受任何人的资金委托,不提供账户管理服务,只分享策略逻辑和运行结果。
不诱导交易:不喊单、不提示买卖时点、不针对具体个股给出操作建议。所有内容都是策略的客观运行结果展示,不附加“赶紧买”“可以卖”这类引导性判断。

第三,避免敏感表述

尽量不用“荐股”“牛股”“必涨”“买入点”“卖出点”这类具有明确交易指向的词汇。推荐用“策略入选标的”“策略触发卖出信号”“历史回测收益”这类中性、研究属性的表述。
如果有评论区,要主动引导讨论策略逻辑、规则细节、行业趋势,不要鼓励讨论具体买卖操作,出现违规提问及时回复说明:“不提供投资建议,仅做策略研究交流。”

第四,保留所有原始记录与免责声明

页面底部放置完整的免责声明,说明数据来源、模拟假设、风险提示。同时保留所有历史数据、计算日志,随时可以回溯验证。
如果公开规模较大、受众较多,建议提前咨询证券行业律师,做一次合规审核,确保所有表述都在边界内。不要怕麻烦,合规是长期运行的基础。

最后补充一句:如果只是个人本地运行模拟盘、自己记录净值,不对外公开,完全不存在任何合规问题。公开传播才是分水岭。

13.2 技术架构:数据层、计算层、展示层的完整设计

很多人以为做模拟盘需要很复杂的技术架构,其实个人使用的话,三层轻量架构完全够用,不用服务器、不用后端、不用数据库服务,普通家用电脑就能跑,甚至可以用GitHub免费服务全自动化运行。

数据层:每日自动更新,双源备份

数据层是整个系统的燃料,核心要求是稳定、准确、准时。

  • 数据源选型:主用Tushare Pro,字段全、标准统一,适合做主力数据源;备用AKShare,免费、覆盖范围广,主数据源故障时自动切换。两个数据源交叉验证关键字段,避免单一数据源的统计偏差。
  • 存储方案:个人本地使用推荐SQLite数据库,轻量免安装,整个数据库就是一个文件,备份复制就好,非常方便。如果要对外公开网站,可以用MySQL,支持多并发读取,稳定性更好。
  • 调度机制:Windows系统用自带的任务计划程序,Linux用crontab,每日15:30触发行情数据更新,17:00触发资金流向与财务数据更新,18:00触发选股计算。确保所有数据都是收盘后完整的数据,避免提前调用数据不全。

计算层:模块独立,可插拔易修改

计算层是系统的大脑,所有规则逻辑都在这里实现。核心设计原则是模块拆分,每个功能独立成一个函数,方便后续修改调整,不会改一个地方动全身。

  • 风险过滤模块:负责剔除ST、退市、流动性不足的标的,是第一道关卡。
  • 四维评分模块:负责计算每只股票的产业、资金、基本面、技术得分,输出综合排名。
  • 交易执行模块:负责执行建仓、平仓、再平衡规则,更新持仓与现金。
  • 净值计算模块:负责计算每日净值、K线四要素、收益率指标。
  • 风控熔断模块:负责监控大盘熔断、个股止损、黑天鹅事件,触发保护性操作。
  • 日志输出模块:负责生成每日完整运行日志,记录所有操作与中间结果。

每日运行完成后,输出两个核心结果文件:trade_signals.json(当日买卖清单、持仓明细)和nav_kline.json(净值K线数据、历史净值序列),供展示层调用。

展示层:静态页面,零后端风险

展示层的核心原则是:尽量做静态页面,不做动态后端。后端越复杂,出问题的概率越高,合规风险也越大。

  • 图表选型:推荐用TradingView Lightweight Charts,专业金融图表库,效果和行情软件几乎一致,支持缩放、十字光标、指标叠加,体验远好于普通图表库。如果追求简单也可以用ECharts,开源免费,自定义程度高。
  • 展示内容:主图是净值K线,副图是模拟成交额,下方叠加沪深300基准对比曲线,再往下是每日模拟持仓表、历史交易记录表、策略规则说明。
  • 部署方案:纯静态HTML页面,直接扔到服务器上就能跑。甚至不用买服务器,用GitHub Pages免费托管就能对外展示,配合GitHub Actions自动每日更新,零成本运行。

如果需要从零搭建完整的自动化模拟盘系统,或者定制专属的策略展示页面,可访问intoquant.com壹信量化官网,提供专业的代写源码与部署服务,从数据到展示全链路落地。

13.3 杜绝未来函数的十项检查清单

未来函数是模拟盘与回测最隐蔽的错误,也是90%的模拟盘结果失真的核心原因。简单说就是:回测的时候用了当时还没有的数据,导致收益虚高,实盘根本复现不了。
比如用4月30日的财报数据,去回测4月20日的选股;用当日收盘价计算当日买入信号,本质都是用未来信息指导过去的交易,结果当然好看,但没有任何实际意义。

我整理了十项必须逐项验证的检查点,系统搭建完成后必须全部过一遍,任何一项不通过,回测结果都不可信。

  1. 选股数据时点检查:生成T日交易信号,只能使用T-1日收盘后的数据。绝对不能用T日的收盘价、资金流向、财务数据。检查方法:把系统日期设为某一天,看生成的信号里有没有用到当天的数据。
  2. 财务数据滞后检查:季报、年报披露后,至少延迟5个交易日才纳入选股逻辑。因为财报发布是盘后发布的,而且不是所有公司同一天发,必须等绝大多数公司都披露了,再纳入选股,不然就是用了当时没有的信息。
  3. 除权复权检查:所有价格计算统一使用前复权价格,包括回撤计算、净值计算、收益率计算。抽查除权日的净值曲线,不能有跳空缺口,有缺口就是复权没做好。
  4. 涨停买入检查:当日开盘涨停的股票,模拟盘必须标记“无法买入”,跳过该标的,顺延买入下一名,不能假设以开盘价成交。实盘涨停你根本买不到,模拟盘假设能买到,结果就会虚高。
  5. 跌停卖出检查:当日开盘跌停的股票,标记“无法卖出”,顺延至下一交易日处理,不能假设开盘成交。实盘跌停卖不掉,模拟盘假设能卖掉,回撤就会算小了。
  6. 停牌处理检查:持仓股票停牌期间,按停牌前最后收盘价估值,不产生交易,不复牌不买卖。不能用停牌期间的均价或者估值修正,要和实盘情况一致。
  7. 资金时点检查:每日买入金额,按开盘前的现金余额计算,不能用当日卖出所得的资金买当日的股票。因为买卖都是开盘同时成交的,卖出的钱当天不能用来买股票,要下一个交易日才能用。
  8. 交易成本检查:买入卖出的时候实时扣除交易成本,不能收盘统一计算。买入时就从现金里扣成本,卖出时就扣除成本再算到账现金,不然净值会算高。
  9. 止损基准检查:止损线的计算基准是买入成本价,成本价要包含买入时的交易成本。不然实际止损会比模拟深,收益差很多。
  10. 熔断基准检查:大盘熔断、组合熔断的触发基准,用每日收盘净值计算,不能用盘中的虚拟最高/最低价触发。熔断是收盘确认的规则,不是盘中波动就触发。

这十项检查,建议每做一次策略调整,都重新跑一遍。未来函数是防不胜防的,只要改代码,就可能引入新的未来函数问题。

如果需要专业的回测合规性审计,或者验证策略有没有未来函数问题,可访问a-sig.com壹信因子查询平台,内置严格的时点校验机制,所有信号都做了滞后处理,避免未来函数失真。

13.4 增强观看者信心的设计:全链路透明、基准对比、互动说明

如果模拟盘只是自己看,只要数据准就行。但如果要对外展示,核心不是收益有多高,而是可信度有多高。再高的收益,别人不信也没用。

建立信任不靠吹收益,靠透明。三个设计能大幅提升观众信任度:

第一,全链路数据公开

不要只放一个净值曲线,把所有原始数据都公开:

  • 每日选股的完整得分表,每只股票四个维度各得多少分,怎么排的名,全部列出来。
  • 每日交易的明细,买了什么、卖了什么、成交价多少、交易成本多少,全部公示。
  • 每日净值的计算过程,开盘多少、收盘多少、持仓市值多少、现金多少,列清楚。
  • 提供原始数据CSV下载,任何人都可以下载了自己算一遍,验证对不对。

透明到这个程度,基本不会有人质疑你造假。因为造假太容易被拆穿——随便拿一只股票的历史行情对一下,就能知道净值算得对不对。反而越敢全公开,别人越信你。

第二,基准指数对比

没有基准的净值曲线没有意义。涨了30%,看起来很多,但如果大盘涨了40%,那策略其实跑输了。
一定要在净值图上叠加同期沪深300指数的净值曲线,最好再加一个中证500,直接看超额收益。同时计算并展示累计超额收益、年化超额收益、最大回撤对比这些核心指标。
策略好不好,不是看绝对值,是看相对于大盘的超额收益。有基准,才专业。

第三,主动解释异常波动

不要回避净值下跌、大幅波动。遇到异常波动,主动发说明:为什么跌、是系统性回撤还是个股问题、策略逻辑有没有变化。
比如大盘暴跌导致净值回撤,就主动分析:本次回撤多少、和大盘比怎么样、有没有触发风控、后续怎么处理。主动解释,比藏着掖着信任度高得多。观众不怕策略回撤,怕的是你回避问题。

13.5 从模拟盘到回测:交易爱好者对验证的渴望

技术方案讨论完毕后,对方沉默了一会儿,发来一段话:
“老师,您说的这些我都明白了。但我心里不踏实——您设计的这个四维框架和交易规则,在历史上到底表现怎么样?能不能给我看一段真实时段的回测结果?不需要自动化代码,您手工模拟一下就行,一段下跌市,大概30天。我想看看下跌市中,我的账户会不会爆仓。”

这个要求合情合理。我们花了十三章构建框架、定义规则、设计系统,但从未用真实历史数据完整验证过。没有回测的策略,就像没有试飞的飞机,设计再完美也不知道能不能飞。

我同意了他的请求,但有一个技术细节需要先厘清:回测必须是每日动态调仓,而不是静态买入后持有30天。也就是说,每一天的买入清单都是当天根据前一日数据重新计算的四维前十名,每一天都可能卖出不再满足条件的股票,再买入新入选的标的。这比简单的买入持有复杂得多,但这是真实模拟盘运作的方式。

我回复道:“老师,回测可以手工模拟,但需要明确两点:第一,我需要您配合确认每天的TOP10名单,因为手工计算30天工作量很大;第二,下跌市中我们会发现一个问题——每天都强制买入10只,可能会导致账户持续缩水。您是否允许在某些天不满足条件的股票可以不买,甚至空仓?”

对方思考了片刻,给出了一个标志着风控意识觉醒的回答:
“下跌市中资金净流出的个股可以不选,不一定非要每天买10只。如果符合条件的股票少于3只,那天就不买——空仓也是一种策略。老师,您觉得呢?”

这正是第五次迭代的核心起点:从“必须选股买入”到“允许空仓等待”。这个改动,将彻底改变策略在下跌市中的生存能力。

第13章量化专家笔记

网站零成本部署方案

如果只是个人展示用,完全不用买服务器,用GitHub Pages + GitHub Actions就能实现零成本自动运行:

  1. GitHub上建一个私有仓库,放策略代码和生成的静态页面。
  2. 配置GitHub Secrets存Tushare token和邮箱密码,不用明文写在代码里。
  3. 写一个workflow配置文件,交易日每天17:30自动运行脚本,生成数据和页面,自动提交更新。
  4. 开启GitHub Pages,用仓库根目录的静态文件对外展示。
    整个流程不用花一分钱,稳定性由GitHub保障,非常适合个人开发者。

数据备份策略

数据是量化策略的生命线,建议采用“3-2-1”备份原则:
3份数据:本地一份、云端一份、冷存储一份。
2种介质:固态硬盘+机械硬盘,避免单一存储介质损坏。
1份异地备份:每周把关键数据打包发到自己邮箱,或者存到云存储,避免本地故障全丢。

异常告警机制

系统不能每天都人工盯着看,要加自动告警:

  • 数据更新失败告警:数据源调用失败、数据缺失超过5%,立即发通知。
  • 选股数量异常告警:当日合格股票少于3只或者超过20只,触发告警,检查是不是数据错了。
  • 净值波动告警:当日净值波动超过3%,或者连续3日下跌,自动发汇总通知。
    告警可以用钉钉机器人、企业微信、邮件,实现成本很低,但能避免很多大问题。

本章内容节选自原创量化书籍《因子会说谎》,更多系统部署与回测验证的实操细节,可登录intoquant.com查阅完整内容。


本章完。下一章将进入回测环节,用2025年9-10月的下跌市行情,手工模拟运行四维策略,验证这套规则在极端行情下的生存能力。

⚠️ 风险提示:本书内容仅为量化研究与知识分享,不构成任何投资建议。套利交易存在基差、费率、流动性、平台与极端行情等风险,历史表现不代表未来收益。投资有风险,入市需谨慎,请自主决策、量力而行。

💡 键盘 ←/→ 翻章 · T 键切换目录