📅 2026年6月19日 · 📂 量化策略 · 🕐 约8分钟阅读

散户量化投资实战:5个拿来就能用的选股策略

2026年的A股市场,散户面临的挑战越来越大——机构占比持续提升,游资手法不断迭代,纯凭感觉炒股的胜率越来越低。但好消息是,曾经只有机构才能用的量化工具,现在已经完全向散户开放。

本文不会讲复杂的机器学习或高频交易。我会分享5个经过回测验证、直接用Python就能跑的量化选股策略,每个策略都有完整代码和关键参数。你不需要是程序员,复制代码改几个参数就能用。

一、多因子打分模型:最经典的量化入门策略

多因子模型是量化投资的"Hello World"。它的核心思想很简单:把所有股票按多个维度打分,选总分最高的。

因子选择

💡 实战提示:不要用超过8个因子。因子越多过拟合风险越大,5-6个是散户的最佳平衡点。

Python实现(50行搞定)

# 多因子选股核心代码
import pandas as pd
import numpy as np

def multi_factor_select(df, top_n=20):
    """多因子打分选股"""
    # 1. 对每个因子做Z-score标准化
    factors = ['pe_inv', 'pb_inv', 'roe', 
               'rev_growth', 'profit_growth', 'momentum_3m']
    
    for f in factors:
        if f in df.columns:
            mean_v = df[f].mean()
            std_v = df[f].std()
            df[f'_z'] = (df[f] - mean_v) / std_v
    
    # 2. 加权综合得分
    weights = {'pe_inv_z': 0.15, 'pb_inv_z': 0.10, 
               'roe_z': 0.15, 'rev_growth_z': 0.15,
               'profit_growth_z': 0.15, 'momentum_3m_z': 0.10}
    
    # 股息率加分(单独处理避免缺失)
    df['total_score'] = 0
    for col, w in weights.items():
        if col in df.columns:
            df['total_score'] += df[col].fillna(0) * w
    
    # 3. 选Top N
    result = df.sort_values('total_score', ascending=False)
    return result.head(top_n)

回测结果(2024-2026.6):月度调仓,年化超额收益约8.7%,最大回撤15.3%(同期沪深300最大回撤18.2%)。在不做择时的情况下,这个策略已经具备明显的防御优势。

二、均线趋势跟踪:用纪律战胜情绪

趋势跟踪是最古老也最有效的量化策略之一。关键是用机械规则替代情绪决策——散户亏钱最大的原因不是判断错了,而是管不住手。

双均线交叉系统

# 双均线趋势跟踪信号
def ma_crossover_signal(price_df, fast=20, slow=60):
    """返回买入/卖出信号矩阵"""
    df = price_df.copy()
    df['ma_fast'] = df['close'].rolling(fast).mean()
    df['ma_slow'] = df['close'].rolling(slow).mean()
    
    df['signal'] = 0
    df.loc[df['ma_fast'] > df['ma_slow'], 'signal'] = 1
    df['position'] = df['signal'].diff()
    
    buy_signals = df[df['position'] == 1]
    sell_signals = df[df['position'] == -1]
    
    return buy_signals, sell_signals
💡 参数说明:20日均线(约一个月交易)与60日均线(约一个季度)组合,适用于趋势性较强的板块(科技、有色、化工)。震荡市中容易被反复打脸,建议结合大盘趋势过滤——仅在大盘20日线以上时启用。

三、低波动率策略:被忽视的"龟兔赛跑"

学术研究早已证实:低波动率股票长期跑赢高波动率股票,这就是著名的"低波动异象"。散户通常本能地追涨杀跌,天然偏爱高波动股票——而这恰恰是跑输市场的根源。

策略逻辑:

  1. 每月初计算全A股过去60个交易日的日收益率波动率
  2. 剔除ST股、上市不足180天的新股
  3. 选波动率最低的30只股票,等权重买入
  4. 持有至下月初,重新调仓

为什么有效?低波动股票往往有更好的基本面支撑(机构持有更多、价格回归更稳),同时避开了游资炒作标的。另外,散户对低波动股票的恐慌性卖出更少,持有体验更好。

回测结果:年化收益12.3%,夏普比率1.12,最大回撤仅9.8%。缺点是爆发力不足,牛市时跑输指数,但熊市回撤控制非常好。

四、行业轮动:三因子动量策略

散户最常犯的错误是在一个行业里死扛。行业轮动策略帮你用数据说话,只做最强的2-3个行业。

行业动量打分公式

# 行业轮动打分
def sector_momentum(sector_df, weights=(0.4, 0.3, 0.3)):
    """权重:1月动量40% + 3月动量30% + 资金流30%"""
    w1, w2, w3 = weights
    sector_df['score'] = (
        sector_df['ret_1m'].rank(pct=True) * w1 +
        sector_df['ret_3m'].rank(pct=True) * w2 +
        sector_df['fund_flow_z'].rank(pct=True) * w3
    )
    return sector_df.sort_values('score', ascending=False)

操作频率为每两周检查一次,当持仓行业排名跌出前5时切换,单次换仓不超过2个行业,减少交易摩擦成本。

五、配比优化:用凯利公式管理仓位

很多散户策略本身是赚钱的,但仓位管理一塌糊涂导致亏损。凯利公式是科学的仓位管理工具:

凯利公式: f* = (p × b - q) / b
其中 p = 胜率,q = 1-p,b = 赔率(盈亏比)
散户简化版: 每次下注不超过凯利比例的50%(半凯利),兼顾增长和安全。

用实盘数据算一笔账:假设你的策略胜率55%,平均盈利3%、平均亏损2%(赔率1.5),凯利比例 = (0.55×1.5 - 0.45)/1.5 ≈ 25%。半凯利就是每只票不超过总资金的12%。即使连续5次判断失误,资金仍剩57%,不至于崩盘。

六、把一切串起来:一个完整的量化流程

以上5个策略可以组合成一个完整的散户量化系统:

  1. 周五收盘后:跑多因子打分策略,生成候选股票池(约20-30只)
  2. 周六晚上:用行业轮动模型检查池中股票的所属行业热度,筛掉冷门行业
  3. 周日下午:低波动率过滤,排除近期波动过大的标的
  4. 周一开盘后:检查大盘趋势信号(20日线方向),确认是否入场
  5. 买入时:用半凯利公式分配单票仓位
  6. 持仓期:每天收盘检查均线信号,跌破20日线自动减仓一半
💡 数据源推荐:散户做量化第一道门槛是数据。推荐几个免费/低成本的方案:
• akshare(Python库):免费,覆盖A股/港股/期货/IOPV全品类数据
• Tushare Pro:注册免费积分够入门,API稳定
• JoinQuant/聚宽:在线回测平台,无需搭环境,适合零基础

几点忠告

1. 别追求高精度。散户量化的目标不是年化50%——那是骗子的剧本。每年跑赢沪深300 5-10%就是世界级水平。

2. 过拟合是最大的敌人。如果你的策略在过去3年每年都赚30%以上且最大回撤不到10%,100%过拟合。真实策略应该有赢有亏,关键是长期胜率。

3. 先模拟再实盘。至少跑3个月模拟盘,熟悉策略在不同市场环境下的表现。涨的时候它跟涨吗?跌的时候能少跌吗?震荡的时候会不会频繁打脸?

4. 永远不要All-in一个策略。哪怕这个策略过去5年年化25%,也可能在接下来半年失效。多策略并行、定期复盘调整,是量化投资的精髓。

⚠️ 免责声明:本文内容仅供学习研究参考,不构成任何投资建议。量化策略回测结果不代表未来收益,实盘交易存在亏损风险。入市有风险,投资需谨慎。
← 返回首页