Skip to content

小市值策略:市值排序与空仓月(QMT / PTrade)

小市值是库里副本最多的股票策略之一:全市场(或中证 1000 一类)先过滤,再按市值从小到大取前几只,空仓月整月不碰股票。QMT 常见是果仁转日更版,PTrade 常见是周二周更版。阈值、月份、只数都是示例,不是操作指令。不构成投资建议,不代操盘。

手册:qmt · ptrade · ss-vs-sh

逻辑简述

  1. 选股。去掉次新、ST、停牌后,按总市值或流通市值升序。QMT 果仁转还会加上市天数、销售净利率、行业只数上限这类过滤。
  2. 持仓。目标只数很少(常见 5~7 只),等权或按可用资金平分。
  3. 空仓月。1 月、4 月(有的实现再加 12 月)不持股票。空仓时有的清仓,有的切黄金 / 货币 ETF。
  4. 卖出。市值排名掉出池子、持有过久、个股止损、涨停破板,各实现略有不同。
  5. 调仓。先卖后买,中间留几分钟等成交回报。

这和 涨停基因小市值 不是同一套:小市值主排序是市值;涨停基因还要看历史涨停密度。

QMT 版本(果仁转)

账号由策略交易界面注入。逻辑放 handlebar:回测只走 K 线;实盘判断最后一根、是否当天。日更常见 14:30 卖、14:50 买。空仓月示例会切黄金 ETF,后缀必须是 .SH

小市值 QMT 回测示意

客户端回测截图。区间、资金、滑点和成交假设跟你本机不会一样。不是实盘,不能当收益预期,不构成投资建议。

python
#coding:gbk
def init(C):
    try:
        g.accountid = account
        g.acct_type = accountType
    except:
        g.accountid = ''
        g.acct_type = 'STOCK'
    g.stock_pool_size = 20
    g.buy_stock_num = 5
    g.min_market_cap = 10   # 亿元,示例
    g.max_market_cap = 100
    g.sell_time = (14, 30)
    g.buy_time = (14, 50)
    g.empty_months = (1, 4, 12)

def handlebar(C):
    if not C.is_last_bar():
        return
    # 空仓月、选股、14:30 卖 / 14:50 买见附件 QMT_小市值策略.txt

历史用 get_market_data_ex,不要用 get_full_tick 做回测。passorder 返回不等于成交,用 get_trade_detail_data 对账。

PTrade 版本

initialize 里注册 run_dailyhandle_data 可以空着。卖和买拆开两个定时。股票池常用中证 1000 399101.SZ。周更常见周二 10:30 卖、10:35 买;另挂止损和下午破板检查。

小市值 PTrade 回测示意

客户端回测截图。长区间小市值常被复权、涨停买不进和市值漂移放大,界面上的百分比先当幻觉。不是实盘,不能当收益预期,不构成投资建议。

python
def initialize(context):
    set_universe(['399101.SZ'])
    g.stock_num = 7
    g.pass_april = True
    g.empty_month_mode = 'empty'  # 或 'bond' 切 511880
    run_daily(context, prepare_stock_list, time='9:05')
    run_daily(context, weekly_adjustment_sell, time='10:30')
    run_daily(context, weekly_adjustment_buy, time='10:35')
    run_daily(context, sell_stocks, time='10:00')

def handle_data(context, data):
    pass

持仓字段是 amount / enable_amount。9:30 前连续竞价未开,快照空不要发。交易里 run_daily + run_interval 合计不要超过 5 个。

两边都容易踩的坑

  1. 同一天 handlebar 可能进多次,用日期戳卡住。
  2. 从 QMT 拷过来先全局换 .SH.SS
  3. 分钟回测的 time 和实盘对不齐,先打日志。
  4. 附件里的筛选数字只是一份可跑示例,先仿真对账再改。

完整源码见知识星球附件,这里只放逻辑和片段。

相关:API 查询 · 热门问题 · 关注 / 知识星球

完整讨论和附件在 知识星球 Kimi量化研究所