字:
关灯 护眼
一心文学 > 造个系统做金融 > 067 张远独立建模

067 张远独立建模

    陈帆的手指还悬在鼠标上方,盯着主屏右下角那条刚刚弹出的警告信息。系统判定新一轮基差机会出现,信号清晰,逻辑闭环完整。他正要开口,张远却先动了。

    没有提加仓,也没问要不要再跑一遍流程。张远调出后台数据流,把过去七十二小时的所有套利记录导了出来,连同历史价差波动曲线、成交密度分布图一起拖进分析窗口。他的动作很稳,但敲击键盘的节奏比平时快半拍。

    “我想试试看,能不能找出规律。”他说。

    李阳从代码界面抬眼:“什么规律?”

    “不是单次操作的节奏,是整个过程的共性。”张远指着屏幕上三组并列的折线,“每次偏离发生时,市场状态其实不一样。有的流动性差,有的机构持仓突变,有的是政策预期扰动。但我们每次都用同一套逻辑应对。我在想,能不能反过来——先判断环境,再决定是否介入。”

    陈帆靠向椅背,没打断。他知道张远的意思。跨市场套利的成功让他们看到了系统的价值,但也暴露了一个问题:策略模块太依赖预设条件,缺乏对“何时不该出手”的识别能力。

    “你想建个筛选器?”陈帆问。

    “更像是一个前置模型。”张远点头,“只盯上证50成分股,结合估值、动量和股东结构,提前判断哪些时候容易出现定价偏差。”

    李阳皱眉:“三个因子?怎么加权?你有回测数据支撑吗?”

    “还没有。”张远坦然承认,“但我可以试。”

    陈帆看了他一眼:“那就做。先把框架搭出来,我们一起来调。”

    接下来两天,张远几乎没离开过操作台。他把系统里所有与个股相关的底层模块拆解了一遍,参考了波动率计算层的时间序列处理方式,也借用了MACD背离检测中的滑动窗口逻辑。但他没照搬,而是重新定义了输入变量。

    第一个因子是“估值分位数”,取每只股票近五年市盈率所处的历史位置;第二个是“动量斜率”,不采用简单涨跌幅,而是通过线性回归拟合最近二十个交易日的价格趋势线,提取斜率值;第三个是“机构持仓集中度”,用前十大流通股东持股比例之和,剔除大股东后计算变动率。

    初版模型运行结果并不理想。第一次输出名单里,出现了好几只基本面疲软、短期被炒作的标的。李阳立刻指出问题:“动量因子权重过高,你在追高。”

    “我知道。”张远没反驳,“是因为窗口期选得太短,反应滞后。我打算改用动态周期——当价格突破布林带上轨且成交量放大时,自动缩短观察区间,增强敏感性。”

    “那你得加上衰减机制。”李阳提醒,“不然容易反复打脸。”

    张远记下建议,当晚就把算法重写了一遍。他在趋势判定部分引入了陈帆在国债分析中使用的“持续性验证”逻辑:只有连续两个周期方向一致,才确认趋势成立。同时为每个因子设置置信区间,低于阈值的直接过滤。

    第三天清晨,新版本模型首次跑通回测。测试范围是过去两年内上证50成分股中涨幅进入前10%的个股,共47只。模型成功覆盖其中31只,准确率66%,显著高于随机选择。

    更关键的是,它避开了大部分“伪强势”行情。比如某白酒股在一季度末因渠道囤货导致短期放量上涨,传统动量策略会误判为启动信号,但该模型因估值已处98%分位而自动排除。

    “可以试实盘了。”张远说。

    李阳仍持保留意见:“样本量不够大,而且没经历极端行情检验。万一遇到暴跌或停牌呢?”

    “那就小规模验证。”陈帆开口,“用社团资金5%,建个模拟组合。不下实单,只走全流程,看信号稳定性。”

    三人达成一致。系统接入实时行情后,模型开始每日扫描。第一天无提示,第二天触发两只备选,均因流动性不足被自动过滤。直到第三日早盘,屏幕中央跳出一条醒目标记:

    【三因子模型信号激活】

    标的:浦发银行(600000)

    当前评分:8.3/10

    触发原因:估值位于历史低位(23%分位),动量斜率由负转正持续两日,机构持仓集中度环比上升4.7个百分点

    “这只股最近很安静。”李阳盯着K线图,“一个月没大涨,也没消息。”

    “正因为安静。”张远指着资金流向图,“北向资金连续三天净买入,昨天券商席位挂出大买单,但股价没动。说明有人在吸筹。”

    “可财报还没出。”李阳坚持,“现在买等于赌业绩。”

    “不是赌。”张远摇头,“是概率博弈。模型不保证一定涨,但告诉我们现在这个位置,上涨的可能性大于下跌。”

    陈帆沉默片刻,点了头:“按计划执行。全程监控,七日内若未启动则清零信号。”

    账户权限开放后,虚拟组合立即生成。系统将5%资金划入独立单元,锁定浦发银行为唯一持仓目标,等待最佳买入时机。

    当天下午两点十八分,盘口出现变化。卖一档挂单量骤减,买二、买三迅速补位,形成阶梯式托单结构。同时成交量温和放大,换手率从0.3%升至0.6%。

    “量价配合不错。”张远调出委托队列,“不像砸盘出货。”

    “像有人在接。”李阳补充,“但规模不大,可能是自营盘。”

    就在此时,系统自动标记:“晨星形态确认”。这是K线组合中常见的底部反转信号,通常出现在下跌末端,由一根长阴线、一根低开十字星和一根阳线构成。模型将其纳入辅助验证条件,一旦匹配,立即提升优先级。

    倒计时三分钟后,买入指令发出。虚拟仓位完成建仓,成本价12.47元。

    接下来两天,股价小幅震荡上行。第五日开盘,交易所发布上市公司信息披露提示函,提及多家银行即将披露季度财报。午后,财经媒体传出风声,称部分股份制银行业绩超预期。

    收盘前半小时,浦发银行突然放量拉升,一笔三千手的大单直接扫掉上方所有卖单。股价冲上涨停板,封单坚决。

    龙虎榜尚未公布,但所有人都明白发生了什么。

    “净利润同比增17%。”张远看着新闻快讯,“今天刚审计完,明天正式公告。”

    李阳盯着屏幕上的收益曲线,缓缓吐出一口气:“提前三个交易日抓到,这不算运气了。”

    陈帆打开模型文档,一页页翻阅张远提交的技术说明。从因子选取依据,到权重分配逻辑,再到异常值处理方案,条理清晰,可追溯性强。最关键的是,整个架构留有扩展接口,未来能接入更多维度。

    他合上文档,转向张远:“你出师了。”

    然后调出资金管理界面,在权限列表中新增一条记录:张远,账户级别A,操作限额30%,风控规则同步生效。

    张远没说话。他重新打开了回测程序,把测试周期延长到三年,加入了2008年四季度和2015年股灾阶段的数据段。光标停留在参数调节栏,手指微动,一点点调整动量因子的衰减系数。

    李阳站到他身后,看着副屏上滚动的输出结果。“你准备加入波动率修正吗?”他问。

    “已经在写了。”张远回,“如果市场整体波动超过阈值,动量信号应该降权。”

    李阳点点头,转身走向自己的终端。“那我把这部分代码结构调整一下,提高运算效率。”

    陈帆坐在主控台前,目光扫过三个屏幕。左侧是国债期货的基差监控,中间是情绪因子模块的实时评分,右侧则是刚刚生成的“三因子上证50”全样本回测报告。

    服务器风扇稳定运转,指示灯绿光流转,行情数据流持续刷新。

    张远敲下回车,新一版模型开始加载。
『加入书签,方便阅读』