问:小虾米,这是一个小市值量化策略,你评价一下。[淘股吧]


筛选出市值介于20-30亿的股票,选取其中市值最小的三只股票,
每天开盘买入,持有五个交易日,然后调仓。
‘‘‘

## 初始化函数,设定要操作的股票、基准等等
def initialize(context):
# 设定沪深300作为基准
set_benchmark(‘000300.XSHG‘)
# True为开启动态复权模式,使用真实价格交易
set_option(‘use_real_price‘, True)
# 设定成交量比例
set_option(‘order_volume_ratio‘, 1)
# 股票类交易手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
set_order_cost(OrderCost(open_tax=0, close_tax=0.001,
open_commission=0.0003, close_commission=0.0003,
close_today_commission=0, min_commission=5), type=‘stock‘)
# 持仓数量
g.stocknum = 3
# 交易日计时器
g.days = 0
# 调仓频率
g.refresh_rate = 5
# 运行函数
run_daily(trade, ‘every_bar‘)

## 选出小市值股票
def check_stocks(context):
# 设定查询条件
q = query(
valuation.code,
valuation.market_cap
).filter(
valuation.market_cap.between(20,30)
).order_by(
valuation.market_cap.asc()
)

# 选出低市值的股票,构成buylist
df = get_fundamentals(q)
buylist =list(df[‘code‘])

# 过滤停牌股票
buylist = filter_paused_stock(buylist)

return buylist[:g.stocknum]

## 交易函数
def trade(context):
if g.days%g.refresh_rate == 0:

## 获取持仓列表
sell_list = list(context.portfolio.positions.keys())
# 如果有持仓,则卖出
if len(sell_list) > 0 :
for stock in sell_list:
order_target_value(stock, 0)

## 分配资金
if len(context.portfolio.positions) 3000万的过滤

2. 黑天鹅风险
小盘股容易踩雷(财务造假、突然ST)
没有ST过滤,可能买入停牌或退市风险股
建议增加:valuation.is_st == 0

3. 回撤控制缺失
没有止损机制,小盘股跌起来可以腰斩
2015/2018/2022年小市值策略都曾大幅回撤

4. 市场环境适应性差
2016-2018年大盘蓝筹风格时,小市值策略连续亏损
注册制推行后,小市值因子有效性下降


其他建议:
仓位分散:至少选10-20只,单只仓位不超过10%
止损机制:单只亏损超过15%强制卖出
市场环境过滤:大盘指数跌破200日均线时停止建仓
增加价值因子:避免买入垃圾小票(加PE、PB过滤)



结论
这个策略的思路是对的,但执行细节需要大幅优化:
✅ 方向正确:小市值因子是A股长期有效的因子

⚠️ 风险太高:只买3只+没有过滤,容易暴雷

🔧 必须改进:增加ST过滤、流动性过滤、止损机制

适合的资金规模:50万以内的小资金玩玩,大资金别碰(冲击成本高)
建议先用这个策略在聚宽回测3年以上数据,看看最大回撤能否接受。