说实话,我第一眼看到这个项目的时候,以为是哪个程序员在开玩笑。
唐朝的三省六部制?写进量化交易系统里?这脑回路也太清奇了。但等我真正读完代码,我沉默了。这不是在玩梗,这是真懂行的人干的事。
我们先聊聊市面上那些量化软件都是什么德行。你打开一个典型的回测平台,策略代码、风控逻辑、执行模块全都搅在一起,像一锅煮过头的粥。写策略的人一边想着怎么赚钱,一边还得想着怎么别把自己亏死。当你的策略连续几天赚钱的时候,你潜意识里就会给风控逻辑"放水"。等真出了事儿,后悔都来不及。
金策智算的作者显然吃过这种亏。他的解决方案简单粗暴:把权力拆散。
中书省只管生信号,其他的别管;门下省专门负责挑刺,看见风险就否掉,不需要给任何人面子;尚书省就是个执行机器,上面说买就买,说卖就卖,不问为什么。这种设计让策略研究员变成了"提案者",而不是"决策者"。你的策略能不能上实盘,得看风控那关能不能过。
我觉得这个设计的精髓在于"制度高于人情"。唐朝人搞三省六部,就是怕皇帝一个人说了算会出乱子。量化交易里,策略研究员就是那个容易冲动的"皇帝"。门下省的存在,相当于在系统里永久性地植入了一个"冷静期"。
六部的分工也挺有意思。吏部管策略的"人事档案",谁在职谁离职一清二楚;户部管钱,每一分钱怎么来的怎么没的都得记账;礼部出报告,定期给你算算账、排排名;兵部管下单;刑部专门记黑账,哪笔交易违规了、哪次风控拦截了,全都留痕;工部最辛苦,负责洗数据。这六个部门各司其职,谁也别抢谁的活儿。
我在代码里看到一个挺贴心的设计——数据源支持热切换。Tushare挂了?切AkShare。不想用第三方API?直接连MySQL或者PostgreSQL。玩量化的人都知道,数据源掉链子是家常便饭,能把这块做得这么灵活,说明作者真在这行混过。
批量回测功能也值得一提。你可以同时测一堆策略、一堆股票、一堆时间段,系统会自动算覆盖率。要是你的策略只在牛市里测过,熊市和震荡市的数据一片空白,它会直接拒绝执行,逼你把功课补全。这种"硬门禁"对于防止过拟合特别管用。我见过太多策略,回测曲线漂亮得像艺术品,一上实盘就现原形,就是因为测试数据覆盖面不够。
说到底,这个项目让我重新思考了一个问题:写量化系统和写普通软件,到底有什么区别?
普通软件追求的是功能正确,量化系统追求的是"在人性弱点面前依然正确"。当市场暴涨的时候,你的系统能不能挡住FOMO(害怕错过)的情绪?当持仓浮亏的时候,你的系统能不能果断止损而不是死扛?这些都不是算法能解决的问题,这是架构设计的问题。
金策智算用三省六部制来命名,乍一听有点中二,但仔细想想,这是在向一种古老的智慧致敬。唐朝人没有计算机,但他们懂得怎么设计一个能自我纠错的组织。今天我们有了强大的算力,却在重复着古人犯过的错误——让同一个人既当运动员又当裁判员。
也许有时候,我们该少看点最新的论文,多翻翻历史书。
毕竟,市场不会因为你用的是最新的深度学习模型就对你手下留情。它考验的从来都不是你有多聪明,而是你能不能守住底线。