量化圈是有周期更替的。今年以来,传统的微盘轮动阴跌不止,已成了一潭死水。
但流动性枯竭的只是主板垃圾股,主打高波动的“创业板小市值”生态,目前不仅风华正茂,甚至走出了极强的独立超额行情。今天,我们就来拆解一套专吃这波红利的硬核底座。
1. 🎯 审计官判决
看到满社区泛滥的“剔除创业板”的小微盘策略,我早就审美疲劳了。今天测的这套7年56倍源码,反其道而行之,直接杀进高波动的创业板池子,而且居然把回撤压住了!
代码底子非常扎实。它没有去垃圾堆里无脑捡烟蒂,而是把高波动的创业板当成了印钞机,配合严苛的财务排雷,绝对是个能拿来直接当“实战基座”的极品框架。
【📊 策略体检报告】
| 测评维度 | 数据表现 | 审计官点评 |
|---|---|---|
| 标称年化收益 | 76.48% | 20CM涨跌幅带来的极致爆发力 |
| 最大回撤 | 31.89% | 在创业板策略里,这风控属于教科书级别 |
| 夏普比率/胜率 | 2.1 / 65% | 收益与风险的极佳平衡点 |
| 过度拟合指数 | ⭐⭐ (2星) | 核心逻辑清晰,没加乱七八糟的拼凑参数 |
| 实战可行性 | ⭐⭐⭐⭐ (4星) | 底座极佳,补上流动性补丁就能上战场 |
2. 🧐 策略逻辑大白话 & 源码解析
大爷大妈们听好了,一般的策略是在平静的湖面(主板10%涨跌幅)里钓小鱼;这套策略是开着快艇去狂风巨浪的大海(创业板20%涨跌幅)里捞大鱼。
为了防止翻船,它穿了两层保命装:第一层是财务排雷(只买盈利且非标审计的);第二层是看天吃饭(大盘不好,立刻减仓甚至空仓)。
q = query(
valuation.code,
).filter(
valuation.code.in_(initial_list),
valuation.market_cap.between(g.min_mv, g.max_mv), # 总市值 circulating_market_cap/market_cap 单位:亿元
income.np_parent_company_owners %3E 0, # 归属于母公司所有者的净利润(元)
income.net_profit > 0, # 净利润(元)
income.operating_revenue > 1e8 # 营业收入 (元)
).order_by(valuation.circulating_market_cap.asc()).limit(g.stock_num*3)
df = get_fundamentals(q)
if g.filter_audit:
before_audit_filter = len(df)
df['audit'] = df['code'].apply(lambda x: filter_audit(context, x))
df_audit = df[df['audit'] == True]
log.info(f'去除掉了存在审计问题的股票{len(df)-before_audit_filter}只')>)
我们直接看它最精髓的选股池与动态仓位代码:
# 核心差异化:锁定创业板综指,拒绝烂大街的主板微盘
MKT_index = '399102.XSHE' # 创业板综指!`这才是超额收益的来源`
initial_list = filter_stocks(context, get_index_stocks(MKT_index))
# 极品底座机制:根据大盘均线动态调整持仓数量
def adjust_stock_num(context):
index_df = get_price('399101.XSHE', count=10, fields='close'...)
diff = last_row - ma
# 大盘好就多买,大盘暴跌就缩减到只买3只甚至更少
result = 3 if diff >= 500 else \
4 if -200 <= diff < 200 else \
6
return result
💡 逻辑点评:
这策略最聪明的地方就是认清了现实:玩创业板,收益高但死得也快。
如果不写 adjust_stock_num(动态调整持仓个数),一旦遇到创业板杀估值,绝对底裤都亏没。它用中小板指(399101)的10日均线乖离率来控制仓位,这套“大盘择时+高弹性票”的组合拳,确实是老手的写法。
3. 🔪 深度拆解与照妖镜
既然是基座好策略,今天我就少骂两句。但要把它从回测搬到真刀真枪的实盘,依旧有几个致命隐患必须拔除:
⚠️ 回测陷阱揭秘:20CM的滑点是魔鬼
回测里设定的 FixedSlippage(3/10000) 在创业板里简直是自欺欺人!
主板跌停是10%,创业板跌停可是20%(20CM大面)。当极端行情来临,这套代码里的趋势止损(stoploss_market)会触发市价砸盘。在实盘中,这种瞬间抢跑的滑点根本不是万分之三,很可能是直接低开5%甚至更惨。
📉 核心弱点:市值排序的单因子脆弱性
选股的最后一步依然是 order_by(valuation.circulating_market_cap.asc())(按流通市值从小到大买)。
虽然限制了10-100亿的盘子,但在创业板里,纯按市值最小去无脑轮动,一旦市场风格切换到“创蓝筹”(如宁德时代等大票拉升),这套策略会经历漫长且痛苦的阴跌期。
🛠️ 实盘重构建议:我会怎么改?
把它当做终极基座,我们要往里面加真家伙:
- 注入成交额血液:选股时必须加上
money > 5000万的硬性条件。创业板每天成交量几百万的仙股绝对碰不得! - 升级选股内核:把单薄的“市值最小”,替换成**“市值低估 + 动量反转因子”**。找那些在创业板里跌到底部、且最近开始放量的票,吃20CM反弹的确定性更高。
- 改写20CM止损单:实盘跑创业板,坚决不能用简单的
order_target_value止损。必须引入分批撤单重报逻辑,防止被按在跌停板上摩擦。
4. 🎁 源码获取
这套代码的**【创业板选股池 + 均线动态仓位 + 财务排雷】**底座,秒杀市面上90%的垃圾微盘股框架!
以它为基座,打上了流动性补丁,并优化了创业板20CM滑点测试环境,做成了聚宽可以直接跑的**【高弹性实战基座版】**。有了这个底座,你后续往里加任何Alpha因子都稳如老狗。
👇 请关注公众号:量化学习实战笔记,并回复关键词:【创业基座】 ,直接带走!
5. ⚠️ 免责声明
本账号所有量化策略和量化技术仅作技术交流和量化思路分享,帮你避开回测自嗨陷阱,不构成任何投资建议。代码写得再好,据此操作风险自负,实盘亏了算你自己的,本人不承担任何直接或间接责任。