当前位置: 首页 > article >正文

从‘茅台’到‘一篮子股票’:手把手教你用Supermind和Python扩展你的第一个量化策略

从单标到组合用Supermind和Python构建多股票量化策略实战指南在量化交易的世界里从单只股票策略扩展到多股票组合是每个交易者必须跨越的关键门槛。本文将带你深入探索如何将一个基础的双均线策略从单一股票如贵州茅台扩展到能够同时监控和交易多只股票的投资组合。通过Supermind平台和Python代码的实战演示你将掌握处理多标的数据、资金分配、信号同步等核心技能避开实际交易中的常见陷阱。1. 多股票策略的核心挑战与解决方案当我们将策略从单只股票扩展到多只股票时会面临几个关键的技术和逻辑挑战数据获取与处理需要同时获取和处理多只股票的历史价格数据信号生成与同步不同股票可能在同一时间产生相反的交易信号资金分配如何在多只股票之间合理分配有限资金风险管理组合层面的风险控制与单只股票有何不同在Supermind平台上我们可以利用其内置的多标的数据处理功能和Python的向量化计算能力来高效解决这些问题。以下是一个多股票策略的基本框架def init(context): # 设置要操作的股票列表示例为沪深300前5只成分股 context.security_list [ 600519.SH, # 贵州茅台 601318.SH, # 中国平安 600036.SH, # 招商银行 601888.SH, # 中国中免 000858.SZ # 五粮液 ] # 设置每只股票的最大资金占比 context.max_weight 0.2 # 每只股票最多分配20%资金2. 多标的数据处理与均线计算优化处理多只股票的历史数据时我们需要考虑性能和代码简洁性。Supermind的history函数原生支持多标的数据获取def handle_bar(context, bar_dict): # 一次性获取所有股票过去20天的收盘价数据 all_closeprice history(context.security_list, [close], 20, 1d, False, pre, is_panel1) # 计算每只股票的均线 for security in context.security_list: closeprice all_closeprice.minor_xs(security)[close] MA20 closeprice.mean() MA5 closeprice.iloc[-5:].mean() # 获取当前持仓比例 current_position context.portfolio.positions[security].value_percent # 交易逻辑 if MA5 MA20 and current_position context.max_weight: order_target_percent(security, context.max_weight) log.info(买入 %s % security) elif MA5 MA20 and current_position 0: order_target(security, 0) log.info(卖出 %s % security)注意使用minor_xs方法可以高效地从多标的面板数据中提取单个股票的数据这比循环获取每只股票的数据性能更高。3. 资金分配与组合管理策略在多股票策略中资金分配方式直接影响策略的风险收益特征。常见的资金分配方法包括分配方法优点缺点适用场景等权重分配简单易实现分散风险不考虑个股差异初期测试阶段波动率倒数分配平衡组合波动计算复杂成熟策略市值加权接近市场结构可能过度集中指数跟踪策略信号强度加权强化优质信号增加换手率趋势明显的市场环境在Supermind中实现动态资金分配的示例def calculate_dynamic_weights(context, signal_strength): 根据信号强度动态计算权重分配 signal_strength: 各股票信号强度的字典 {stock: strength} total_strength sum(signal_strength.values()) if total_strength 0: return {stock: 0 for stock in context.security_list} weights {} for stock in context.security_list: weights[stock] (signal_strength.get(stock, 0) / total_strength) * 0.9 # 保留10%现金 return weights4. 多股票策略的进阶优化技巧4.1 信号过滤与确认为了避免频繁交易和假信号可以引入以下过滤机制成交量确认只有当成交量放大时才确认信号时间延迟确认信号出现后观察1-2天再执行相关性过滤避免同时买入高度相关的股票# 添加成交量过滤的示例代码 def handle_bar_with_volume_filter(context, bar_dict): all_data history(context.security_list, [close, volume], 30, 1d, False, pre, is_panel1) for security in context.security_list: stock_data all_data.minor_xs(security) closeprice stock_data[close] volume stock_data[volume] MA20 closeprice.mean() MA5 closeprice.iloc[-5:].mean() avg_volume volume.mean() current_volume bar_dict[security].volume # 只有当成交量超过平均且出现信号时才交易 if MA5 MA20 and current_volume avg_volume * 1.5: order_target_percent(security, context.max_weight) elif MA5 MA20: order_target(security, 0)4.2 组合风险控制多股票策略需要从组合层面考虑风险控制最大回撤控制当组合回撤达到阈值时暂停交易个股止损对每只股票设置单独的止损线行业分散避免过度集中在单一行业# 组合风险控制示例 def handle_bar_with_risk_control(context, bar_dict): # 计算组合当前回撤 portfolio_value context.portfolio.total_value max_portfolio_value context.portfolio.max_portfolio_value drawdown (max_portfolio_value - portfolio_value) / max_portfolio_value if drawdown 0.1: # 回撤超过10%时停止交易 log.warn(组合回撤超过10%暂停交易) return # 正常交易逻辑 # ...5. 策略回测与性能分析要点在多股票策略回测时需要特别关注以下指标组合夏普比率衡量风险调整后收益个股贡献度分析每只股票对组合的贡献换手率评估交易成本影响最大回撤持续时间了解恢复周期信号分布检查信号是否集中在特定时间段在Supermind平台上进行多股票策略回测时可以使用以下代码记录关键指标def after_trading_end(context): # 记录每日组合表现 record( portfolio_valuecontext.portfolio.total_value, cashcontext.portfolio.cash, positionslen(context.portfolio.positions), leveragecontext.portfolio.portfolio_value / context.portfolio.total_value ) # 分析个股表现 for security in context.security_list: if security in context.portfolio.positions: position context.portfolio.positions[security] record(**{ f{security}_weight: position.value_percent, f{security}_pnl: position.pnl })6. 从回测到实盘的注意事项将多股票策略部署到实盘时需要特别注意交易成本影响多股票策略通常换手率更高流动性考量确保目标股票有足够流动性数据延迟处理部分股票可能停牌或数据延迟订单执行策略大额订单需要分拆执行# 实盘订单执行优化示例 def optimized_order_execution(context, security, target_weight): current_weight context.portfolio.positions[security].value_percent delta target_weight - current_weight if abs(delta) 0.01: # 变化小于1%时不交易 return # 大额订单分拆执行 if abs(delta) 0.05: steps int(abs(delta) / 0.02) 1 incremental_weight delta / steps for i in range(steps): order_target_percent(security, current_weight incremental_weight * (i 1)) log.info(分步执行订单 %s: 步骤 %d/%d % (security, i1, steps)) else: order_target_percent(security, target_weight)在实际项目中我发现多股票策略成功的关键在于平衡信号的准确性和组合的分散性。过度分散会稀释优质信号的收益而过度集中又失去了多股票策略的优势。经过多次迭代我通常会将股票数量控制在10-30只并根据市场波动率动态调整仓位集中度。

相关文章:

从‘茅台’到‘一篮子股票’:手把手教你用Supermind和Python扩展你的第一个量化策略

从单标到组合:用Supermind和Python构建多股票量化策略实战指南 在量化交易的世界里,从单只股票策略扩展到多股票组合是每个交易者必须跨越的关键门槛。本文将带你深入探索如何将一个基础的双均线策略从单一股票(如贵州茅台)扩展到…...

智能硬件开发:利用LFM2.5-1.2B-Instruct为DHT11温湿度传感器生成数据解析逻辑

智能硬件开发:利用LFM2.5-1.2B-Instruct为DHT11温湿度传感器生成数据解析逻辑 1. 引言:物联网开发中的传感器数据处理挑战 在智能家居和工业物联网项目中,温湿度传感器是最基础也最常用的感知设备之一。DHT11作为经典的数字温湿度传感器&am…...

告别懵圈!用CANoe实战图解AutoSar网络管理状态机(附报文分析)

CANoe实战:AutoSar网络管理状态机的可视化解析与报文诊断 刚接触AutoSar网络管理的工程师常被其状态机转换逻辑困扰——那些抽象的参数定义和理论描述,在真实车载网络中究竟如何体现?本文将用CANoe捕获的实际报文,结合状态跳变动图…...

绝地求生罗技鼠标宏终极指南:5分钟实现自动压枪的完整教程

绝地求生罗技鼠标宏终极指南:5分钟实现自动压枪的完整教程 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中难以…...

ROS Noetic用户看过来:别再为PyKDL的ModuleNotFoundError头疼了,手把手教你从源码编译到环境配置

ROS Noetic用户必读:PyKDL模块缺失问题的深度解析与实战解决方案 引言:当机器人开发遇上Python环境冲突 在ROS Noetic的日常开发中,许多开发者都经历过这样的场景:当你满怀信心地启动一个依赖tf或tf2的机器人程序包时,…...

如何用Python工具完整备份QQ空间青春记忆:GetQzonehistory终极指南

如何用Python工具完整备份QQ空间青春记忆:GetQzonehistory终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里那些珍贵的青春记忆会随着时间流逝而消…...

CL4267 500mA线性锂离子电池充电器

概述 CL4267是一款性能优异的单节锂离子电池恒流/恒压线性充电器。CL4267采用SOT23-6L封装配合较少的外围原件使其非常适用于便携式产品,并且适合给USB电源以及适配器电源供电。 基于特殊的内部MOSFET架构以及防倒充电路,CL4267不需要外接检测电阻和隔离…...

用74LS00和74LS10芯片手把手教你搭建三人表决器(附完整电路图与实测数据)

用74LS00和74LS10芯片搭建三人表决器的实战指南 在数字电路实验中,三人表决器是一个经典的教学案例。它不仅能够帮助初学者理解基本逻辑门的工作原理,还能培养实际动手搭建电路的能力。本文将带你从零开始,使用74LS00(四路2输入与…...

解码亚马逊的“自动购买按钮”:哪些信号在替你替客户做决定?

在商业与消费行为中,存在着一种令人着迷又颇具效率的模式:“固定行为模式”。就像雌火鸡一听到“叽叽”声就会自动触发全套哺育行为,哪怕声音来自天敌臭鼬玩具;雄性知更鸟看到一簇红色胸羽就会猛烈攻击,无论它是否来自…...

终极指南:如何彻底解决Cursor API限制,实现无限免费使用

终极指南:如何彻底解决Cursor API限制,实现无限免费使用 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve rea…...

别再手动建模块了!用Spring Initializr + Maven Archetype 5分钟搞定SpringCloud多模块项目骨架

5分钟极速搭建SpringCloud多模块项目:告别重复劳动的工程化实践 每次启动新微服务项目时,你是否还在重复这些机械操作?新建父工程→配置pom.xml→逐个创建子模块→复制依赖声明→调整项目结构。这种低效的手工作坊模式,在需要频繁…...

MyTV-Android:开源电视直播软件的完整开发与使用指南

MyTV-Android:开源电视直播软件的完整开发与使用指南 【免费下载链接】mytv-android 使用Android原生开发的电视直播软件 项目地址: https://gitcode.com/gh_mirrors/myt/mytv-android MyTV-Android是一款基于Android原生开发的电视直播应用,专为…...

别再扔烙铁头了!从氧化到锈蚀,一份针对不同‘伤势’的烙铁头修复实战手册

烙铁头修复全攻略:从氧化到锈蚀的精准‘诊疗’方案 烙铁头就像外科医生的手术刀,一旦钝化或生锈,焊接精度就会直线下降。我见过太多电子爱好者因为烙铁头氧化就直接更换新头,其实90%的‘报废’烙铁头都能通过系统修复重获新生。本…...

ComfyUI-Impact-Pack完整指南:AI图像增强的终极解决方案

ComfyUI-Impact-Pack完整指南:AI图像增强的终极解决方案 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: https:…...

保姆级教程:在uni-app中集成FFmpeg 7.1播放RTSP流(Android原生插件实战)

在uni-app中集成FFmpeg 7.1实现RTSP流播放的完整指南 跨平台开发中处理实时视频流一直是技术难点,尤其是RTSP协议的视频流播放。本文将手把手带你完成从FFmpeg编译到uni-app插件集成的全流程,解决Android平台下RTSP播放的痛点问题。 1. 环境准备与FFmp…...

5分钟精通:foobar2000开源歌词插件完整使用与配置指南

5分钟精通:foobar2000开源歌词插件完整使用与配置指南 【免费下载链接】foo_openlyrics An open-source lyric display panel for foobar2000 项目地址: https://gitcode.com/gh_mirrors/fo/foo_openlyrics 在音乐播放体验中,歌词显示不仅仅是文字…...

Ubuntu双系统安装翻车实录:从‘试用版’假象到成功引导的完整避坑指南

Ubuntu双系统安装中的"假成功"陷阱与终极解决方案 当你在安装Ubuntu双系统时看到"安装程序向硬盘复制文件时遇到错误[Errno 5]"的提示,却依然能进入桌面环境,这可能是最令人困惑的体验之一。许多用户会误以为安装已经成功&#xff0…...

Windows热键侦探:精准定位快捷键冲突的终极方案

Windows热键侦探:精准定位快捷键冲突的终极方案 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经遇到…...

3分钟学会安卓位置伪装:FakeLocation应用级虚拟定位终极指南

3分钟学会安卓位置伪装:FakeLocation应用级虚拟定位终极指南 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 还在为社交软件暴露真实位置而烦恼吗?想在游戏…...

PowerShell ImportExcel模块终极指南:无需Excel的完整数据处理解决方案

PowerShell ImportExcel模块终极指南:无需Excel的完整数据处理解决方案 【免费下载链接】ImportExcel PowerShell module to import/export Excel spreadsheets, without Excel 项目地址: https://gitcode.com/gh_mirrors/im/ImportExcel 还在为Excel自动化而…...

别再手动传文件了!用Alfresco Community 201707搭建企业文档共享中心(附Word在线编辑避坑指南)

企业级文档协作革命:Alfresco Community实战指南 研发团队每周的文档管理例会总是充满火药味——"最新版需求文档在哪?""我改了三次的PPT怎么又被覆盖了?""这个10MB的产品手册打不开!"这些场景是否…...

告别低效业务开发,大模型赋能程序员高效办公

文章目录 前言一、醒醒!2026年了,你还在靠堆时间写CRUD内卷?1.1 扎心现实:传统业务开发,正在陷入“越忙越穷”的死循环1.2 90%的程序员,都用错了大模型1.3 真相:大模型不是来抢饭碗的&#xff0…...

别再纠结了!从京东3000台服务器实战看Doris和ClickHouse到底怎么选

从京东3000台服务器实战看Doris和ClickHouse的选型决策 在数据驱动的商业环境中,选择合适的OLAP引擎往往决定着企业数据分析能力的上限。面对Doris和ClickHouse这两个当前最热门的开源分析型数据库,技术决策者常常陷入"性能优先"还是"易…...

STM32用memcpy拷贝结构体数据总出错?试试这个#pragma pack(1)的魔法指令

STM32结构体拷贝的陷阱:揭秘#pragma pack(1)的底层原理与实战应用 在嵌入式开发领域,STM32系列微控制器因其出色的性能和丰富的外设资源而广受欢迎。然而,当开发者从其他平台(如DSP或PC)转向STM32时,常常会…...

如何免费激活Windows和Office?终极KMS智能激活脚本使用指南

如何免费激活Windows和Office?终极KMS智能激活脚本使用指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活问题而烦恼吗?Office软件突然变成只读模…...

LLM驱动的系统优化:VULCAN框架解析与实践

1. 项目概述:当LLM遇见系统优化缓存策略和内存分层技术就像计算机系统的"交通管制员",它们决定了数据应该存放在哪里、何时移动、以及哪些数据可以被舍弃。传统方法依赖人工设计的启发式算法(如LRU、FIFO),就…...

AI模型选型:效率与性能的平衡实践

1. 模型选择的核心挑战:效率与性能的平衡 在AI应用落地的实际场景中,我们常常面临一个关键抉择:究竟应该选择参数规模庞大的尖端模型,还是采用更轻量化的解决方案?这个问题看似简单,实则涉及到计算资源、环…...

提升macOS视频管理效率的完整指南:QLVideo视频预览插件详解

提升macOS视频管理效率的完整指南:QLVideo视频预览插件详解 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://g…...

DsHidMini:让PS3手柄在Windows系统重获新生的兼容性驱动方案

DsHidMini:让PS3手柄在Windows系统重获新生的兼容性驱动方案 【免费下载链接】DsHidMini Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers 项目地址: https://gitcode.com/gh_mirrors/ds/DsHidMini DsHidMini是一款开源的虚拟HID迷你用…...

从零到上架:用Fyne v2.3.5给你的Go项目加个酷炫的图形界面(Mac/Linux/Windows全平台指南)

从零到上架:用Fyne v2.3.5给你的Go项目加个酷炫的图形界面(Mac/Linux/Windows全平台指南) 如果你已经掌握了Go语言的基础,但厌倦了命令行工具的单调输出,或者想为你的后台服务添加一个用户友好的交互界面,…...