2026春晚四大机器人同台:宇树科技、银河通用、魔法原子、松延动力。
这不是机器人首次登上春节舞台,最早可追溯至2016年。去年蛇年春晚,人形机器人穿着花棉袄转手绢的亮相引爆社交网络,而今年马年春晚的“技惊四座”,再度点燃了市场对机器人板块的想象空间。
股评专家说:2026年是人形机器人商业化元年。
通过通达信梳理发现,节前最后一个交易日,人形机器人概念板块共有5只个股涨停,分别是东杰智能(11.09%)、深科技(10%)、天奇股份(10%)、克来机电(10%)和风语筑(10%),其中克来机电四天两板。
更多就不说了,毕竟咱是做量化的,所以就按热度和相关性筛选了一下个股,这个部分可以AI完成,也可以自己筛选。
需要注意的是,在关注机器人投资机会的时候,需要关注板块高度、个股涨幅和高低切换三个问题。
就此,西西就写了一个机器人行业多因子策略,策略模型主要由计算机器人相关度综合评分,评分维度如下:

1. 基本面:营收增速、研发投入
2. 技术面:动量、波动率
3. 热度:成交量变化、资金流入
4. 产业链位置权重(Tier1权重最高)
这些我的思路的和部分细节,关于实施方面,例如跌停的调仓处理可以看代码,大家可以根据自己的偏好进行修改,因为行业是长期看好,所以也是月度调仓。仅供参考,不支持回测。
大家注意,这种一下暴热的题材不支持回测哈,例如上轮的商业航天,2025年初由deepseek引爆的ai产业链,都是不支持回测的。
一定要有一个认知,不是所有策略都支持回测。
新能源在过去的五年都很好,但是后续的五年就不确定了。
像机器人这种新兴产业,肯定不是一蹴而就的,长期看好,且有很大的发展空间,起步阶段,炒的是预期收益。
代码:
# 2026年机器人概念热度股筛选策略from jqdata import *import pandas as pdimport numpy as npfrom datetime import datetime, timedelta# ============ 初始化设置 ============def initialize(context):    # 设置基准    set_benchmark('000300.XSHG')    # 开启动态复权    set_option('use_real_price'True)    # 设置滑点    set_slippage(FixedSlippage(0.002))    # 设置交易成本    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))    # 设置持仓数量    g.hold_count = 10    # 设置调仓周期(每月第一个交易日)    g.trade_days = 0    # 机器人概念股池(按相关度分类)    # Tier 1: 核心零部件供应商(最高相关度)    g.tier1_stocks = [        '603728.XSHG',  # 鸣志电器 - 运动控制/空心杯电机        '688017.XSHG',  # 绿的谐波 - 谐波减速器龙头        '002050.XSHE',  # 三花智控 - 热管理/执行器        '601689.XSHG',  # 拓普集团 - 执行器/电驱        '003021.XSHE',  # 兆威机电 - 微型传动        '688160.XSHG',  # 步科股份 - 无框力矩电机        '002472.XSHE',  # 双环传动 - 精密减速器    ]    # Tier 2: 重要零部件及系统供应商    g.tier2_stocks = [        '300124.XSHE',  # 汇川技术 - 伺服系统        '002747.XSHE',  # 埃斯顿 - 工业机器人        '002896.XSHE',  # 中大力德 - 减速器        '603662.XSHG',  # 柯力传感 - 力矩传感器        '300503.XSHE',  # 昊志机电 - 电主轴/谐波        '603009.XSHG',  # 北特科技 - 丝杠        '603667.XSHG',  # 五洲新春 - 轴承/丝杠        '301368.XSHE',  # 丰立智能 - 减速器    ]    # Tier 3: 整机及应用端    g.tier3_stocks = [        '688218.XSHG',  # 江苏北人 - 工业机器人系统        '002698.XSHE',  # 博实股份 - 特种机器人        '300607.XSHE',  # 拓斯达 - 工业机器人        '688255.XSHG',  # 凯尔达 - 焊接机器人        '300024.XSHE',  # 机器人 - 新松机器人    ]    # 合并所有股票池    g.all_stocks = g.tier1_stocks + g.tier2_stocks + g.tier3_stocks    # 运行定时任务(每月第一个交易日调仓)    run_monthly(rebalance, 1, time='09:30')# ============ 选股与评分函数 ============def get_robot_score(context, stock_list):    """    计算机器人相关度综合评分    评分维度:    1. 基本面:营收增速、研发投入    2. 技术面:动量、波动率    3. 热度:成交量变化、资金流入    4. 产业链位置权重(Tier1权重最高)    """    scores = {}    for stock in stock_list:        try:            score = 0            # ===== 1. 产业链位置权重(基础分)=====            if stock in g.tier1_stocks:                base_score = 40  # 核心零部件最高分            elif stock in g.tier2_stocks:                base_score = 30  # 重要供应商            else:                base_score = 20  # 整机应用端            score += base_score            # ===== 2. 技术面评分(动量)=====            # 获取历史价格            hist = attribute_history(stock, 60'1d', ['close''volume'], skip_paused=True)            if len(hist) < 20:                continue            # 计算20日、60日涨跌幅            returns_20 = (hist['close'][-1] / hist['close'][-20] - 1) * 100            returns_60 = (hist['close'][-1] / hist['close'][0] - 1) * 100            # 动量得分(偏好温和上涨,避免暴涨暴跌)            if 0 < returns_20 < 30:                score += 15            elif 30 <= returns_20 < 50:                score += 20            elif returns_20 >= 50:                score += 10  # 涨幅过大,降低分数            # 趋势持续性            if returns_20 > returns_60 / 3:  # 短期强于长期趋势的1/3                score += 10            # ===== 3. 成交量热度 ======            vol_mean_20 = hist['volume'][-20:].mean()            vol_mean_60 = hist['volume'][:20].mean()            vol_ratio = vol_mean_20 / vol_mean_60 if vol_mean_60 > 0 else 1            if 1.2 <= vol_ratio < 3:  # 成交量温和放大                score += 15            elif vol_ratio >= 3:  # 过度放量                score += 5            # ===== 4. 基本面过滤 ======            # 获取财务数据(季度营收增速)            q = query(indicator).filter(indicator.code == stock)            df = get_fundamentals(q)            if not df.empty:                revenue_growth = df['indicator.inc_revenue'][0]                if revenue_growth and revenue_growth > 20:  # 营收增速>20%                    score += 10                elif revenue_growth and revenue_growth > 0:                    score += 5            # ===== 5. 市值与流动性过滤 ======            current_data = get_current_data()[stock]            market_cap = current_data.market_cap  # 总市值(亿)            if market_cap and market_cap > 50:  # 市值大于50亿                score += 5            if market_cap and market_cap > 200:  # 大市值龙头加分                score += 5            scores[stock] = score        except Exception as e:            log.error(f"计算{stock}分数出错: {str(e)}")            continue    return scores# ============ 调仓逻辑 ============def rebalance(context):    # 获取评分    scores = get_robot_score(context, g.all_stocks)    if not scores:        log.info("未获取到有效评分,跳过本次调仓")        return    # 按评分排序    sorted_stocks = sorted(scores.items(), key=lambda x: x[1], reverse=True)    # 选择前N只股票    target_stocks = [stock for stock, score in sorted_stocks[:g.hold_count]]    # 输出选股结果    log.info("========== 本周期机器人概念股排名 ==========")    for i, (stock, score) in enumerate(sorted_stocks[:15], 1):        name = get_security_info(stock).display_name        tier = "T1" if stock in g.tier1_stocks else ("T2" if stock in g.tier2_stocks else "T3")        log.info(f"{i}{name}({stock}) - {tier} - 评分: {score}")    # 调仓执行    adjust_positions(context, target_stocks)def adjust_positions(context, target_stocks):    """    调整持仓:卖出不在目标列表的股票,买入目标股票    """    current_holdings = list(context.portfolio.positions.keys())    # 1. 卖出不在目标列表的股票    for stock in current_holdings:        if stock not in target_stocks:            order_target(stock, 0)            log.info(f"卖出: {stock}")    # 2. 计算每只目标股票的仓位    if target_stocks:        weight = 1.0 / len(target_stocks)        cash_per_stock = context.portfolio.total_value * weight        for stock in target_stocks:            current_data = get_current_data()[stock]            if current_data.paused or current_data.is_st or current_data.is_ht:  # 停牌、ST、退市整理                continue            # 获取当前价格            current_price = current_data.day_open            if current_price == 0:                current_price = current_data.last_price            # 计算目标股数            target_value = context.portfolio.total_value * weight            current_value = context.portfolio.positions[stock].value if stock in context.portfolio.positions else 0            if abs(target_value - current_value) / context.portfolio.total_value > 0.02:  # 仓位变化>2%才调整                order_target_value(stock, target_value)                log.info(f"买入/调整: {stock}, 目标市值: {target_value:.2f}")# ============ 盘中风控(可选)===========def handle_data(context, data):    """    盘中风控:跌停板风险控制    根据记忆:用户之前要求增加"跌停收盘"条件,股票必须收在跌停价才算翘板成功    """    current_holdings = list(context.portfolio.positions.keys())    for stock in current_holdings:        current_data = get_current_data()[stock]        # 获取跌停价(A股跌停为前收盘价的90%)        pre_close = current_data.pre_close        limit_down = pre_close * 0.9        # 如果当前价格触及跌停且封单较大,考虑卖出        current_price = current_data.last_price        if current_price <= limit_down * 1.005:  # 接近跌停(考虑浮点误差)            # 检查是否封死跌停(买一价=跌停价且买量很小)            # 这里简化处理:如果当日跌幅>9.5%且是持仓股,风控卖出            log.info(f"风控卖出跌停股: {stock}")            order_target(stock, 0)# ============ 盘后分析 ============def after_trading_end(context):    # 记录当日持仓    log.info("========== 当日持仓 ==========")    for stock in context.portfolio.positions:        pos = context.portfolio.positions[stock]        name = get_security_info(stock).display_name        log.info(f"{name}({stock}): 市值{pos.value:.2f}, 收益率{pos.pnl_ratio*100:.2f}%")

聚宽实盘可以看这个:

QMT使用教程14 - 聚宽+QMT进行自动交易啦

需要量化软件介绍可以看一下这篇文章,这个文章就是介绍:
2026年了,这两款完全免费量化软件您一定不要再错过了!!
希望大家在2026年获得自己想要的收益。
温馨提示:
所有想法仅个人思路,觉得自己适合即可尝试,实际操作需要匹配自身财务状况、风险承受能力和投资目标。

如果您对某个想法或者策略感兴趣,想获得更详细的落地方案,欢迎留言或私信我。我们可以进行一对一的免费初步交流,期待为您提供真正有价值的帮助。

开户也可以咨询。