全部
文章&策略
学习干货
问答
官方
用户头像me_361829775857
2026-06-05 发布
做量化这行已经有好多年了,从一开始自己写代码分析到现在十几个agent共同配合自动分析,中间踩了很多坑。这里我大概总结了一下,数据坑、代码坑、接口坑、agent坑等等,每次好不容易找到了一个稳定的策略,都会遇到数据不稳定,接口不稳定,agent失控等等问题,这里把最重要的问题记个笔记。 数据是整个过程中最重要的,我以前是各种找数据库,最后明白了,找一个稳定的数据源是最重要的。 先说说最常被问到的,就是“逐笔成交”和“十档行情”到底有啥区别。简单讲,一个是“结果”,一个是“过程”。逐笔成交告诉你每一笔交易最终以什么价格、多少成交量成交了。而十档行情(也就是常说的Level2)展示的是交易发生前那一刻,市场上大家挂的买卖单子是什么样的,能看到买一卖一后面更深的队列。 这俩数据通常得配合着看。比如你看到十档行情里买一挂了巨量托单,但股价还是跌了,这时候去翻逐笔成交,可能就会发现全是些小单子在一点点往下砸,那个大托单压根没动,甚至是假的。我以前就吃过这个亏,后来为了验证一些盘口规律,专门去调了CMES金融数据库里过去几年的主力合约数据做回测,才把一些假信号过滤掉。 下面具体看看这些数据文件的字段。数据一般是按股票代码和日期分文件存的,比如sh600000_20240105.csv这样。 逐笔成交数据字段: 这个数据记录每一笔撮合成交的明细。核心字段就几个: timestamp: 成交发生的时间,精确到毫秒。这是所有高频分析的灵魂。 price: 成交价格。 volume: 成交手数(注意A股是1手=100股)。 turnover: 成交金额(通常是price * volume * 100)。 bid_order_id & ask_order_id: 买方和卖方的委托订单号。这个超级重要,可以用来追踪大单的拆分行为。如果一个机构想大笔卖出,他会把单子拆成很多小单,但这些小单的bid_order_id或ask_order_id可能是关联的。 trade_type: 成交类型。比如是主动性买盘(‘B’)还是主动性卖盘(‘S’),或者其它(像‘C’是撤销,但成交里少见)。这个字段不同数据源定义可能微差,用的时候要查清楚文档。 看个例子,假设你想用Python快速瞄一眼数据结构,可能会这么写(注意入参正确,调用频率要遵守数据源的规定,别把人家接口搞挂了): # 示例:使用CMES金融数据库的行情接口获取数据(需要先pip install他们的包) import cmesdata as cd # 假设的调用方式,具体请以官方文档为准 # 注意设置好你的token或密钥,频率控制很重要 client = cd.Client(api_key='your_api_key_here') # 获取某股票某日的逐笔成交 tick_data = client.get_tick_data(symbol='600000.SH', date='2024-01-05') print(tick_data.head()) # 通常你会看到上面说的那些字段,时间、价格、成交量、买卖订单号等 十档行情(Level2)快照数据字段: 这个数据是“切片”数据,每隔一个很短的时间(比如3秒)拍一张市场快照。字段就多得多了,主要是买卖各十档的价量。 timestamp: 快照时间,也是毫秒级。 last_price: 最新成交价。 open, high, low, close: 当日开盘、最高、最低、收盘价(在盘中,close就是当前最新价)。 volume & turnover: 累计成交量和成交额。 bid_price1 ~ bid_price10: 买一价到买十价。 bid_volume1 ~ bid_volume10: 买一量到买十量(单位是手)。 ask_price1 ~ ask_price10: 卖一价到卖十价。 ask_volume1 ~ ask_volume10: 卖一量到卖十量。 total_bid_volume & total_ask_volume: 总委买量和总委卖量(十档总和)。 有了这些,你就能计算像委比、委差、买卖盘压力这些指标了。但说实话,直接处理原始的CSV文件很麻烦,数据清洗和对齐就能搞死人。我后来图省事,直接用了一些已经处理好时间序列对齐的数据源,虽然花点积分,但效率高太多了。 最后简单对比下,给个直观感受: 数据类别 它像什么 数据量级 主要用途 新手友好度 逐笔成交 市场的“记账本” 极大,一天一只股票几十万条 微观结构分析,订单流分析,识别大单拆分 ⭐⭐(容易懵) 十档快照 市场的“定妆照” 很大,但比逐笔少 盘口分析,计算买卖压力,量价分析 ⭐⭐⭐(相对好理解) 对了,提醒一下,在各大平台发这类文章,特别是涉及具体数据获取代码和接口时,措辞要谨慎。别写“教你免费爬取”这种,容易被判违规。就老老实实分享数据字段解读和使用心得就好,别碰红线。 数据本身是座金矿,但挖矿的铲子(你的硬件和代码能力)得跟上。刚开始建议别直接怼Tick数据,先从日线、分钟线玩起,不然真的会怀疑人生。今天就先聊这么多,手都打酸了,我去搞杯咖啡续命。
浏览21
评论1
收藏0
用户头像sh_****860vaj
2026-01-22 发布
点石成金的交易秘诀 一个普通人,真的能用16个月,把100万本金做到一个亿吗?这个听起来像天方夜谭的战绩,据说是一位顶级操盘手创下的真实记录。而他所依赖的核心武器,就是一套被称为“一夜持股法”的短线交易策略。 这套战法的核心思想,是巧妙利用A股的T+1交易规则。通过在“下午买入,隔日开盘卖出”的固定操作,将原本需要隔天才能卖出的限制,硬生生变成了一种“准T+0”的短线套利模式。 听起来似乎并不复杂,但其背后隐藏的是一套看似简单却极其严格的“六步选股法”。这才是整个策略能否成功的关键。下面,我们将为您完整揭秘这套方法的每一个细节。 核心战法:下午两点半后的猎杀时刻 在深入了解选股细节之前,我们必须先明白这套战法的底层逻辑。其目的非常纯粹:通过在前一天尾盘潜伏,机械化地捕捉第二天早盘的拉升惯性。 当前市场中,许多主力资金习惯在早盘集中力量拉高股价,制造繁荣景象以吸引散户跟风。而“一夜持股法”正是利用了这一市场心理和操盘习惯。其操作原则简单到近乎残酷: · 买入时机: 前一天下午两点半后,根据严格标准筛选出目标股并买入。 · 卖出原则: 这是整个策略的铁律——第二天集合竞价或开盘第一瞬间,无论盈亏,必须无条件卖出。没有犹豫,没有例外。 整个操作的核心纪律在于“绝不贪心”,甚至可以说是“放弃思考”。它不追求卖在最高点,只为捕获开盘那一瞬间的冲高概率。这种机械化的执行,剔除了所有的人性贪婪与恐惧,也是该策略最反人性、最难坚持的地方。 六步选股法:精确筛选明日之星 现在,我们来详细拆解这套著名的“六步选股法”的六个关键筛选标准。只有当一支股票同时满足以下所有条件时,它才能进入我们的备选池。 第一步:锁定目标区间(涨幅3%-5%) 规则: 在下午两点半后开始选股,只关注当天涨幅在3%到5%之间的股票。 逻辑: 这个区间是经过精心设计的。涨幅太小(低于3%),说明股票上涨动力不足,冲劲不够,第二天未必有好的表现;而涨幅太大(高于5%),则有可能是“强弩之末”,尾盘追入的风险会急剧增加。 第二步:寻找“涨停记忆” 规则: 只选择在过去三到四天内有过涨停板记录的股票。 逻辑: 最近有过涨停的股票,通常带有“涨停记忆”。这意味着它曾经是市场的焦点,人气和关注度都比较高,更容易在短期内再次吸引资金的注意,从而产生上涨动力。 第三步:剔除大盘股(市值<200亿) 规则: 排除所有市值超过200亿的股票。 逻辑: “盘子太大了,短线拉不动”。大市值股票需要巨量资金才能推动,其股性通常不活跃,弹性较差。对于追求短期快速波动的策略而言,这类股票显然不是理想的选择。 第四步:确认资金关注度(量比>1) 规则: 股票的量比必须大于1。 逻辑: 量比是衡量成交量相对活跃程度的指标。量比大于1,说明当天的成交量相比过去一段时间是放大的,证明有活跃资金正在关注和参与这只股票,它不是“一潭死水”。 第五步:检查市场情绪(换手率5%-10%) 规则: 换手率最好在5%到10%之间。 逻辑: 换手率反映了市场交易的活跃度和筹码的交换情况。换手率太低,说明股票没人气,关注者寥寥;而换手率过高,则可能意味着多空分歧巨大,甚至是主力资金正在出货的信号,风险较高。 第六步:观察分时图信号 规则: 这是最后一个,也是最需要技术判断的一步。符合条件的股票,其分时图必须呈现以下特征: 股价全天都运行在黄色的均价线之上。 在下午两点半之后,股价能够创出当天的新高。 创出新高后有回踩动作,但回踩并未跌破下方的均价线。 逻辑: 当这三个信号同时出现时,就构成了一个非常理想的介入信号。它表明股价走势强劲,承接有力,并且在尾盘再次展现出向上突破的意愿。 技巧之上,是心性 将这六个步骤分解来看,每一个听起来似乎都很简单。然而,日复一日地严格执行,却极其困难。 在股票交易的世界里,最难的从来不是技巧,而是交易者的“心性”。能否在机会来临时果断出击,能否在规则要求时(比如次日开盘)坚决离场,能否在连续盈利或亏损后依旧坚守纪律,这些都考验着每一个人的内心。 技巧决定了你能走多快,而心性才决定了你能走多远。 掌握了这套方法,你准备好修炼自己的内心了吗?
浏览29069
评论3
收藏8
用户头像sh_***174w0d
2026-06-05 发布
导语:散户的“涨停焦虑症”与高手的“盘口语言” 对于很多散户来说,最纠结的时刻不是股票大跌,而是股票涨停后的第二天:是继续持股博连板,还是赶紧落袋为安防止利润回撤? 这种由于缺乏确定标准而产生的焦虑,我称之为“涨停焦虑症”。 我刚入券商行研时,一位资深前辈曾给我复盘两支票:一支开盘冲高回落,套死无数短线客;另一支则强势连板,开启翻倍行情。我当时搬出各种宏观逻辑、板块轮动去解释,前辈只是摆摆手:“复杂是执行的敌人。判断主力今早是想拉升还是跑路,只需在9点25分花30秒算一道‘小学数学题’,答案就在盘口里。” 核心秘密:开盘溢价率(The Opening Premium Rate) 决定一支涨停股次日命运的,不是昨晚的消息面,而是开盘溢价率。它直接反映了主力在集合竞价阶段的真实底牌:是志在必得的“抢筹”,还是虚晃一枪的“诱多”? 核心公式: 关键时间点: 必须盯准 9点25****分 集合竞价结束的瞬间。这个数据一旦生成,全天的情绪基调便已定下。 “看盘不需要看那些乱七八糟的指标,看多了反而容易乱。你只需看9点25分这个瞬间,它对全天走势起到了决定性作用。” —— 资深交易前辈 第一梯队:溢价率 > 5% —— 顶级强势,强者恒强 当溢价率直接跳空5%以上开盘,这在盘口语言中被称为“积极抢筹”。 【主力底牌】 主力上攻意愿极强,不惜以极高的成本在开盘阶段拿货,这是典型的“妖股”基因。 【实战指令】 只要开盘后股价不快速回落跌破**3%**涨幅线,大概率会继续冲高甚至封死连板。此时应坚定持股,享受主升浪。 【警戒线】 若开盘后瞬间放量下杀跌破3%且无法收回,需警惕主力利用高开进行“自杀式”出货。 第二梯队:溢价率 2% - 5% —— 强势震荡,见好就收 这个区间的溢价属于“标准强势”,但主力并未展现出绝对的统治力。 【主力底牌】 市场合力依然偏强,但盘中大概率会存在剧烈的多空博弈和洗盘震荡。 【实战指令】 密切观察。**如果盘中股价冲高到****7%**以上但迟迟不能封死涨停,建议先减仓一半, 溢价出局,锁定既得利润。 【警戒线】 这种梯队的股票最忌讳“幻觉”,若7%以上封板失败,剩下的仓位必须随时准备撤离。 第三梯队:溢价率 0% - 2% —— 弱势预警,立决即行 如果昨天的涨停板只换来今天微弱的高开,这是一个明确的弱势信号。 【主力底牌】 主力拉升动能近乎枯竭,或市场接力意愿极低。昨天的涨停可能只是为了今天的“诱多”出逃。 【实战指令】 死守**“30分钟准则”****:如果开盘半小时内没有伴随成交量放大的向上猛攻,必须立即执行清仓,** 绝不要有任何幻想。 【警戒线】 短线交易中,犹豫的代价通常是巨大的回撤。 第四梯队:溢价率为负 —— 绝情回信,开盘即永别 最危险的情况莫过于涨停次日居然“低开”,这是主力给散户写的“绝情信”。 【主力底牌】 主力已经开启不计成本的派发模式,甚至已经弃庄离场。开盘价往往就是全天的最高点。 【实战指令】 立马挂单,开盘即跑。 不要去看任何支撑位,也不要等所谓的“反抽”,低开即意味着逻辑被彻底破坏。 【警戒线】 留下一秒钟的犹豫,换来的可能就是深不见底的杀跌。 实战背书:十六年的验证与“两箱青岛大虾” 这套策略并非纸上谈兵,而是经过了我16年的实战洗礼。从2015年的市场巨震,到2019年的硬科技爆发,再到2021年的新能源大周期,这套“溢价率法则”始终是我筛选连板票的秘密武器。 曾有一位粉丝,深陷“卖飞大牛股、接盘垃圾股”的怪圈。在系统学习了这套公式后,他在一周内通过溢价率精准识别了两支连板股。上周他凭借“辽某”股票成功吃下三个涨停板,兴奋地给我寄了两大箱“青岛大虾”以示感谢。 事实证明:在情绪博弈的市场里,唯有冰冷的数学逻辑不会骗人。 结语:你是凭感觉赌博,还是用逻辑交易? 炒股不是玄学,更不应是赌博。散户之所以反复被收割,本质上是因为缺乏一套硬性的“执行标准”,从而陷入了贪婪与恐惧的反复横跳。 开盘溢价率,就是为你交易安装的一把标尺。当数据告诉你该离场时,请务必管住那颗躁动的心。 今日思考题: 请翻开你的交易记录,回顾你最近操作的一支涨停股,它次日的开盘溢价率是多少?你当时的决策是基于逻辑,还是基于“我觉得它还要涨”的感觉?去复盘一下,看看这道数学题是否能保住你的利润。
浏览29
评论0
收藏0
用户头像9点半量化
2026-06-05 发布
**1.悬念引流:打破“交易难”**的认知偏差 **90%的散户都亏在“太努力”**了! 别再迷信那些高深莫测的技术战法,更不要埋头于复杂的数值指标。事实上,炒股赚钱真没那么难,普通散户想要翻身,最简单的路径有且只有一条:找到一支绝不会退市的股票,一辈子死磕到底。 这就是炒股的最高境界。它简单到不需要你研究任何K线组合,却能从心理上彻底治愈你的交易焦虑。这不仅是策略的简化,更是认知的降维打击——放弃对所有波动的贪婪,转而追求对单一标的极致的专注。 这种化繁为简的力量,才是普通人穿越牛熊的终极武器。 **2.**核心战法:复利与波段的深度结合 这一策略的具体执行逻辑非常硬核,只有一句话:死磕一支票,用一生的时间去打磨。 ●**坚守底仓: 无论行情怎么变,始终保持三层底仓**稳如泰山,绝不空仓,不慌不忙。 **●**底部加仓,顶部减仓: 股价在底部就大幅加仓,涨到顶部就减回三层底仓。 ●横盘做T**:** 在震荡行情里,利用你对这支票波动规律的熟悉,反复做T。 **●**顺势而为: 趋势一旦形成,就顺着势头做大波段。 这种操作的战略目标只有一个:利用时间价值实现持仓成本降为负数,同时让持股数量持续增加​。这就是复利的本质。 听起来很简单,但你能做到吗?能做到的朋友,请在评论区打一个**“能”****!** 建议你一定要收藏这篇内容,手痒的时候出来看看,时刻提醒自己坚守初心,别让无谓的操作毁掉你的复利曲线。 **3.标的筛选:寻找“永不退市”**的确定性 想要死磕到底,选对票是所有逻辑的原点。由于要拿一辈子,你选的必须是经济的地基。硬指标只有两个: 第一,离不开的刚需产品。 别去碰那些听起来高大上、但你永远看不懂怎么赚钱的公司。最好的标的就在你身边:喝的酱油、用的水电、存钱的银行、生病吃的医药。这些生意或许“不性感”,但只要人类还要过日子,它们的生意就不会停,这就是永不退市最硬的底气。 第二,硬核靠山与国家信用。 标的必须能扛得住几十年的风浪。最简单的筛选方法就是看股东背景:国资控股、尤其是央企,相当于有国家信用为你兜底。再退一步,也必须是行业内摸爬滚打几十年的老龙头。 这类公司最核心的魅力在于:即便你被阶段性套牢,你也敢拿着等分红,心里不慌。因为你知道,它的确定性足以穿越任何波段。 **4.**总结升华与互动标签 股市的博弈,修的是财富,行的是心力。 一辈子的时间很长,长到足够让那些浮躁、频繁换向的人折腾一生却一无所获;一辈子的时间也很短,短到只够我们沉下心来,把“死磕一支优质股”这一件事做到极致,然后静待花开。 在焦虑的市场里,找准你的“压舱石”。记住,投资不是为了赢过所有人,而是为了在岁月的沉淀中,实现属于自己的财富自由。
浏览19
评论0
收藏0
用户头像sh_****447dvu
2026-06-05 发布
一、研究背景 在外汇相关量化建模、历史回测与实盘策略开发过程中,实时汇率 API 是基础数据源。常规交易日行情 Tick 高频推送,数据连续性充足,可直接接入量化模型进行参数演算、收益回测;但周末及境外法定节假日市场休盘后,同源接口返回数据出现形态异变。前期回测复盘时多次发现,未区分开市 / 休市数据会造成回测失真、实盘信号误触发,为此针对主流数据源开展实测研究,总结数据规律与工程适配方案。 二、休市阶段汇率 API 三类数据返回特征 基于多厂商接口批量实测,非交易时段报价返回模式归纳为三类: 全字段完整返回,报价锚定前一交易日收盘价恒定不变; 持续输出行情快照,价格冻结,时间戳字段停止刷新; 返回市场闭盘状态标识,实时报价字段暂停推送。 数据源厂商产品定位决定输出逻辑:侧重前端展示的接口固定参考报价持续下发;风控类数据源休市后直接关停实时行情字段。 三、量化研发关键痛点:休市异常数据干扰回测与实盘运行 单纯观测价格数值难以甄别数据有效性,通过时间戳与 Tick 更新频次监控可发现隐患:周五收盘至次周开市前,数据推送由秒级逐步拉长至分钟、小时级别更新,盘面价格看似连续,实质为历史收盘快照复用。 量化开发中常见问题:策略代码未增加市场状态判别逻辑,将休市冻结数据等同实时行情代入模型运算,直接导致回测结果失真、实盘风控阈值误触发。部分接口休市阶段存在小幅随机扰动报价,仿真实盘波动,进一步提升数据甄别难度。 四、量化落地:双层分级数据处理框架(适配回测 + 实盘双场景) 结合实盘部署与历史回测优化经验,采用分层数据处理架构隔离两类行情: 交易时段:全量接入 WebSocket 实时 Tick 数据流,原始数据直接用于模型迭代、实盘开平仓逻辑与精细化回测; 休市时段:程序识别闭盘标记或长期数据停滞信号后,自动切换至参考数据模式,静态报价不再参与量化运算。 标准化落地手段:本地缓存各品种上一交易日收盘基准数据,实时轮询接口更新频率;数据源正常高频更新则启用原生实时数据,一旦判定行情冻结,自动降级仅用于盘面展示,从数据源层面隔绝脏数据干扰模型。 五、AllTick API 实测代码(休市数据复现) 通过 AllTick WebSocket 接口实证休市价格冻结现象,代码可用于本地调试、数据源校验: import websocket import json def on_message(ws, message): data = json.loads(message) # 非交易日返回上一交易日收盘快照价格 print("Price:", data['last_price'], "Updated at:", data['timestamp']) ws = websocket.WebSocketApp("wss://api.alltick.co/forex/tick", on_message=on_message) ws.run_forever() 量化实操备注:该类休市静态报价仅用作行情查看,禁止导入回测样本集与实盘交易模型。 六、研究小结 非交易时段汇率接口并非服务异常,本质为延续休盘前最后一笔有效行情,各服务商数据规则不统一是数据分化的核心原因。量化开发中,在数据预处理模块增加开市 / 休市状态判断逻辑,可有效规避非交易日数据带来的回测偏移与策略异常,提升模型落地稳定性。
浏览17
评论0
收藏0
用户头像sh_*219t3e
2025-09-29 发布
之前我分享过一个小工具网站,支持国内主流量化平台,可以让 AI 直接帮你写各个平台的策略代码,直接生成可运行的策略代码,代码质量远高于直接使用 DeepSeek、Trae 等平台。上线之后获得了非常多朋友的好评。 大家可以直接用描述策略,然后一键生成可运行的完整策略代码,也可以把它当做一个API 查询工具。 AI工具平台:https://iris.findtruman.io/ai/tool/ai-quantitative-trading/ 我看平台正在开发SuperMind支持,很快就能支持同花顺了
浏览2957
评论69
收藏10
用户头像9点半量化
2026-06-04 发布
上一篇文章里,我作为一个量化小白,花了不少篇幅拆解了社区大佬的小市值策略——五道风控防线、九项年报排雷、动态持仓调节……拆完之后我有一个很直观的感受:这套策略的内核是"活得久",靠的是极致风控 + 小市值弹性。 但最近两个月盯盘下来,我发现一个问题:ETF行情太好了。 纳指ETF、黄金ETF、港股互联网ETF……这些标的动辄月涨10%+,而且波动远小于小市值个股。我手里的小市值策略虽然在A股震荡行情里能吃到肉,但碰到「市场整体偏弱、ETF板块性行情轮动」的阶段,就会显得力不从心——小市值在休息,ETF在狂飙,两边接不上。 于是我开始在社区里大量翻阅ETF轮动相关的帖子和策略,学习各位大佬的思路。看了十几篇帖子之后,我萌生了一个想法:能不能把小市值和ETF轮动组合起来,搞一个"双核引擎"? 说实话,ETF轮动这块我是完完全全的新手。下面文章里涉及的ETF池子构建、动量打分、滤波器选择等,都是我在社区里反复学习、参考了多位大佬的策略和文章后,慢慢拼凑理解出来的。如果有理解不到位的地方,还请各位前辈多多指教? 小市值负责在A股弹性行情里捕捉超额;ETF轮动负责在板块行情里追趋势。两个引擎交替发力,互相补位——我给它起了个名字:「双龙出海」。 一、为什么要加ETF?先看数据说话 单跑小市值策略,5年30倍,年化收益极高,但有一个问题:回撤集中在大盘系统性下跌的阶段。当大盘暴跌时,小市值股票的跌幅往往比大盘还狠。 而ETF轮动策略有一个天然优势:它可以在全球资产中切换。A股不行就切港股ETF,港股不行就切纳指ETF,纳指也不行就直接买货币基金(银华日利 511880)躺平。 加上ETF之后效果怎么样?我跑了2021年至今的回测,结果直接把我看傻了: 指标 双龙出海(小市值+ETF) 基准(沪深300) 总收益 4632.93%(约47倍) -9.11% 年化收益 112.53% — 最大回撤 15.50% — 夏普比率 4.589 — 索提诺比率 7.535 — 胜率 56.7% — 盈亏比 2.505 — 阿尔法 1.115 — 贝塔 0.502 — 5年47倍,年化112%,最大回撤才15.5%——对比上一篇纯小市值的"5年30倍17回撤",收益从30倍提升到47倍,回撤反而从17%降到了15.5%。 说白了就是:加了ETF引擎之后,不仅赚得更多了,还更稳了。这不就是"既要又要"的最佳答案么? 维度 纯小市值 小市值 + ETF轮动 进攻性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ 防守性 ⭐⭐⭐ ⭐⭐⭐⭐⭐ 行情适应性 A股弹性行情 全市场+全球资产 空仓时的机会成本 高(只能买货币ETF) 低(自动切到强势ETF) 核心逻辑:小市值是矛,ETF轮动是盾——双核协同,攻守兼备。 二、架构设计:两个子账户,各管各的 双核策略的架构其实不复杂,核心就是子账户隔离: 总资金 100% ├── 子账户0:小市值策略(50%) │ └── 每周二调仓,选中证1000最小市值股票 └── 子账户1:五福ETF轮动(50%) └── 每日午后轮动,从100+只ETF中挑最强的1只 聚宽提供了 set_subportfolios 的功能,可以把一个账户拆成两个独立子账户,各自有独立的持仓和资金,互不干扰: set_subportfolios([ SubPortfolioConfig(cash=小市值资金, type='stock'), # 子账户0 SubPortfolioConfig(cash=ETF资金, type='stock'), # 子账户1 ]) 这样做的好处是: 策略之间完全隔离:小市值止损不会影响ETF持仓,反之亦然 资金分配清晰:各占50%,不会出现一边吃掉另一边资金的情况 独立记录收益:可以分别看两个策略各自的表现,方便归因分析 三、ETF轮动引擎拆解(站在大佬肩膀上) 小市值部分的逻辑我在上一篇已经拆过了,这里重点讲ETF轮动部分。 先说声感谢:ETF轮动这块我参考了社区里很多大佬的策略和思路,包括ETF池子的构建方式、动量打分的数学方法、震荡期切换机制等。我做的更多是「学习→理解→整合」的工作,算不上什么原创,更像是一个学习笔记。如果哪位大佬看到觉得某个模块眼熟,那大概率就是从您那学来的? 3.1 ETF池子:固定池 + 动态池,双池合并 ETF轮动的第一个难题是:从哪些ETF里选? 我学习到的一个很聪明的做法——固定池 + 动态池合并: 固定池​(108只):手工精选的优质ETF,覆盖黄金、白银、纳指、恒生、各行业板块等 动态池​(全市场扫描):每天从全市场ETF中自动筛选流动性达标的头部标的,去重后取行业最强的那一只 关键过滤逻辑: 剔除宽基指数ETF(沪深300、中证500等——这些不是行业轮动标的) 剔除债券/货币类ETF(短融、国债、可转债等——这些不是趋势标的) 流动性门槛:日均成交额低于全市场ETF均值/20000的,直接淘汰 行业去重:同行业多只ETF时,只保留成交额最高的那一只 最终合并出约100-150只ETF的"作战池"。 3.2 动量打分:拉普拉斯滤波 + 高斯滤波 ETF轮动最核心的问题是:怎么判断哪只ETF最强? 策略用的是加权线性回归 + 数学滤波器的组合方案: 动量得分计算(25日回看): 1. 对收盘价取对数 2. 用加权最小二乘法拟合趋势线(近期数据权重更高) 3. 斜率年化 → 年化收益率 4. 计算R²(拟合优度)→ 趋势稳定度 5. 动量得分 = 年化收益率 × R² 说人话就是:涨得快还涨得稳的ETF,得分最高。 但这还不够。策略额外加了两层数学滤波器,用来判断"该不该现在买": 滤波器 用途 触发条件 拉普拉斯滤波(正常期使用) 平滑价格,识别趋势 价格 > 滤波值 且 斜率 > 0.002 高斯滤波(震荡期使用) 更强的降噪,更保守 价格 > 滤波值 且 斜率 > 0.002 正常行情用拉普拉斯(灵敏一点,抓趋势),震荡行情切高斯(保守一点,少挨打)。两个滤波器自动切换,这个设计很巧妙。 3.3 震荡期自动切换:市场的"红绿灯" 策略有一套完整的"红绿灯"机制来判断当前是正常期还是震荡期: 进入震荡期(亮红灯)——满足任一条件: 沪深300的乖离率(BIAS)> 8%(涨太多了,有回调风险) RSI从70以上回落到65以下(超买后开始回落) 当天触发了止损(市场可能在变差) 退出震荡期(亮绿灯)——满足任一条件: 从近20日低点反弹超过4% 回撤收窄 + 多个复苏信号连续出现 震荡期持续超过20个交易日(强制退出,不能永远观望) 还有一个冷却期设计:每次红绿灯切换后,3个交易日内不允许再次切换,防止频繁反复。 3.4 多层过滤漏斗 从作战池到最终买入,要过七道关: 100+只ETF → 动量得分过滤(0 ≤ 得分 ≤ 5) → R²过滤(> 0.4,趋势不稳的排除) → 成交量过滤(量比 <1.8,异常放量的排除) → 短期风控(近3天没有单日跌 > 3%) → 溢价率过滤(可选,防止QDII高溢价陷阱) → 动态滤波过滤(正常期/震荡期分别用不同滤波器) → 最终只选1只! 没错,最终只持有1只ETF。这是一个非常激进但也非常纯粹的设计——全仓轮动,不分散。因为分散在ETF轮动里反而是稀释收益,不如集中火力追最强的那个。 3.5 分钟级止损:最后的保险丝 ETF策略还有一个分钟级的止损机制(every_bar 频率运行): 固定止损:当前价格跌破成本价的95%时,立刻卖出 日内跌幅止损(可选):如果当天相对昨收跌超过5%,也立刻卖出 触发止损后会标记 stop_loss_triggered_today,在午后13:10的检查中自动触发进入震荡期——止损不仅是保护本金,还会触发策略整体进入防守姿态。 四、双核协同的几个关键细节 4.1 资金分配 当前是简单的50:50平分。但我在想,未来可以根据市场状态动态调整——比如A股弹性好的时候多给小市值,ETF板块轮动强的时候多给ETF。这是一个可以继续优化的方向。 4.2 独立收益记录 策略每日收盘后会分别记录两个子策略的累计收益率,方便做归因分析。用 record() 函数输出到回测图表上,可以直观看到两条收益曲线。 def record_daily_performance(context): for i, strategy_key in enumerate(['strategy1', 'strategy2']): sub_portfolio = context.subportfolios[i] cumulative_return = (sub_portfolio.total_value / initial_cash - 1) * 100 # 记录到图表 record(小市值=小市值收益率, 五福ETF=ETF收益率) 4.3 滑点和佣金的差异化设置 很多人忽略的一个细节——股票和ETF的交易成本是不一样的: set_slippage(FixedSlippage(0.002), type="stock") # 股票:固定滑点 set_slippage(PriceRelatedSlippage(0.0001), type="fund") # ETF:比例滑点 # 股票佣金:万0.85,卖出还有千分之0.5的印花税 # ETF佣金:万0.5,无印花税 ETF的交易成本天然比股票低很多,这也是ETF轮动策略能频繁调仓的基础。 五、一个小白的学习感悟 不要只盯一个赛道。小市值再好,碰到风格切换也会歇菜。加一个ETF轮动引擎,相当于给自己多开了一个全球化的战场。 站在巨人肩膀上学得更快。ETF轮动这一整套逻辑,如果让我从零开始写,可能半年都写不出来。但社区里有那么多大佬无私分享代码和思路,我做的只是把不同的模块学懂、拼到一起。聚宽社区的开源氛围真的很好,感谢每一位分享策略的前辈。 数学滤波器很有意思。拉普拉斯、高斯这些信号处理领域的工具,用到金融数据上效果很好。作为小白第一次接触这些概念,说实话还没有完全吃透,后面还要继续啃论文和代码。 震荡期切换是ETF轮动的灵魂。没有这个机制,ETF轮动在震荡行情里会被反复打脸。有了红绿灯+冷却期,策略才能在"追趋势"和"认怂"之间优雅切换。 子账户隔离是个好设计。让两个策略各管各的,不争抢资金,不相互干扰。简单粗暴但有效。 最后还是那句话:风控是一切的基础。不管是小市值的五道防线,还是ETF的分钟级止损,核心都是同一个信仰——先活着,再赚钱。 六、实战检验 说得再好不如跑起来看。我已经把这套「小市值+ETF轮动_双龙出海」策略上传到了 9db量化竞技场,用真实模拟盘每天跑。 欢迎围观、拍砖。在9db上可以看到每天的交易记录、持仓变化、收益曲线。比回测更真实,因为是每天实时跑的——好不好,跑几周就知道了。 也欢迎大家去看看其他大佬的策略表现,和自己的策略做个对比。量化这条路,闭门造车不如多看多学。 作为一个刚入门的量化小白,文中很多理解可能不够深入甚至有偏差,欢迎各位大佬在评论区指正。也特别感谢社区里那些无私分享策略和思路的前辈们,没有你们的开源精神,就没有这篇学习笔记。 免责声明:以上内容仅为个人学习记录,不构成任何投资建议。股市有风险,投资需谨慎。
浏览74
评论0
收藏1
用户头像9点半量化
2026-06-04 发布
最近的股市行情,让不少散户朋友感到“苦不堪言”。我也知道你们难,每天盯盘复盘,甚至焦虑到夜不能寐。但我要泼一盆冷水:在交易的世界里,盲目的努力往往是负债。如果交易逻辑不对,越努力,可能亏损得越快。 今天我要分享的这十条交易口诀,当年只在极小的圈子里传阅。它们是老手们用血和泪换来的看家本事,是真金白银和数轮牛熊周期冲刷出的“生存底牌”。 我曾在券商工作多年,亲眼见过无数人破产,也见过少数人把小资金做成天文数字。最让我印象深刻的是“老臣”——早年一个挖煤矿发家的爆发户。他没有任何高超的技术背景,学历也一般,但他却成了圈内有名的顶级游资。他的秘诀很简单:不再自己瞎琢磨,而是站在成功者的肩膀上,将交易打磨成一套机械执行的系统。 如果你还在迷茫,请把这套口诀刻在心里。如果你觉得不好用,我随时接受你的“灵魂拷问”。 1.高位时的“反直觉”:别在风险转移时接棒 在股价高位时,普通散户的直觉往往是错的。看到放量拉升就觉得“人气爆棚”想冲进去,看到缩量横盘就觉得“没戏了”赶紧下车。这恰恰落入了主力转移风险的圈套。 “高位无量要拿,拿错也要拿;高位放量要跑,跑错也要跑。” 深度分析: 高位“无量”说明主力筹码高度锁定(锁仓),行情大概率还没走完,此时下车多半会拍断大腿。而高位一旦出现“巨量炸开”,别以为是承接力强,那其实是主力在制造虚假繁荣,利用流动性完成筹码向散户的换手出货。散户眼中所谓的“机会”,往往是主力换手出逃的掩护。记住,高位巨量不跑,等待你的可能就是长达数年的“高位站岗”。 2.低位布局:识别主力亮牌前的暗流 低位博弈,拼的是耐心,读的是“量在价先”的真理。 “低位放量要跟,量在价先。” 深度分析: **●**低位无量要等: 没人气、没成交并不代表这只票没戏,只是主力还没到亮牌的时候。除了那些毫无生气的“杂毛股”,此时需要静观其变,不必急于入场。 **●**低位放量要跟: 股价在底部突然放量,意味着筹码开始从散户手中向主力聚集。这是主升浪爆发的前兆,是资金入场的明确信号。在这个阶段,读懂成交量这个“先行指标”,比盯着波动看更有意义。 3.量价的共振与背离:识破“对倒”的骗局 学会识别主力“对倒”制造的假象,是你保护本金的关键。 **●**量增价平(撤退信号): 钱在大笔砸入,股价却原地踏步。这往往是主力在通过对倒制造虚假成交量,实则在偷偷撤退。 **●量增价升/**量平价升(上车信号): ♦****量增价升是典型的多头号角,必须果断跟进。 ♦****量平价升则说明量能极其稳定,上方几乎没有抛压,上升趋势已经稳固形成。 **●**量平价跌(出局信号): 当量能枯竭伴随股价阴跌,这是趋势转弱的先兆。此时别谈什么“信仰”,离场是保命的唯一选择。 4.趋势与缺口:资金强度的“质量测试” “淹死的都是会游泳的”,这句话送给那些总想在弱势行情里秀操作的技术派。在趋势面前,个人技术微不足道。 “大盘破位,空仓为王。” 深度分析: **●**顺势而为: 交易的第一条铁律永远是顺势。大盘趋势一旦破坏,再牛的高手也要收手。保住本金永远是第一优先级。 **●**缺口的价值: 带有跳空缺口的上攻,尤其是突破性缺口,如果回踩而不补,这就是最强的质量测试。它说明资金根本不想给任何人拿便宜筹码的机会,这是强弩之势。 **●**年线的生命力: 年线是股市的“生死分界线”。年线走平要高度警惕,说明趋势在激烈拉扯;而当年线上翘后的回踩,往往就是所谓的“黄金坑”,是难得的布局机会。 5.交易的底层哲学:系统胜过勤奋 市场从不讲道理,它只讲筹码交换。真正的赢家,从来不是最勤奋的那批人,而是能将逻辑打磨成系统并严格执行的人。 正如当年的老臣,他明白悟道的本质其实就是:放下一边倒的消息和基本面,回归纪律和心态。交易的第一条是纪律,第二条是心态。所谓的成功,就是不再受盘口波动的诱惑,只在系统发出信号时扣动扳机。 结语 股市不是比谁做得多,而是比谁活得久。当你能够冷静地对照口诀,剥离贪婪与恐惧的直觉,识别出主力的进退路线时,你就已经站在了成功者的肩膀上。 在下一次面对盘中“巨量拉升”的诱惑时,你会选择追随那种让你“血脉偾张”的直觉,还是选择坚守这套用血泪换来的交易系统?点个关注,我陪你一起在这个残酷的市场中,打磨出属于你自己的生存体系。
浏览30
评论0
收藏0
用户头像sh_****447dvu
2026-06-04 发布
在港股数据归集、策略回测与实盘建模过程中,港股通标的定期、临时变动是造成回测失真、历史统计出错的高频诱因。不少研究人员直接将标的清单固化在代码配置中,忽略标的增减对应的生效时点,最终出现历史回测与实盘口径不一致问题。结合项目落地经验,从监管规则、日期判定、数据获取、工程优化几个维度做技术分享。 一、标的调整规则与生效时间逻辑 港股通标的调整由沪深交易所、港交所协同划定,分为季度定期调整与突发事件临时调整两类,所有变更细则以交易所官方公告为基准。公告关键要素包含调整类型、证券代码、基准参考日、正式生效日四项内容。 公告披露日期和实际生效日期并不统一,监管预留过渡期用于券商、清算机构完成系统参数配置: 季度定期调整:常规在公告发布后的第二个交易日正式生效; 临时异动调整:受退市、长期停牌等因素触发,生效区间多为公告后 1~3 个交易日。 实操举例:标的剔除公告于周三披露,个股通常延后数个交易日起移出港股通可交易标的池。 二、生效日期的两类获取方案 1. 人工查阅公告 从三大交易所官方披露平台调取公告文本,手动提取标的变更及生效时间,适合小范围标的抽样核验,难以满足批量自动化数据运维需求。 2. API 动态拉取(量化工程优选方案) 自动化数据架构下,通过接口动态同步标的范围与生效日期是标准化方案。多数通用行情接口仅返回当日有效标的,如需回溯历史变更时点,需接口支持变更明细与生效字段输出。 日常研究工作中借助 AllTick API 获取港股盘口与标的归属信息,接口同步附带港股通变更生效时间字段,以下为 WebSocket 订阅参考代码: import websocket import json ws_url = "wss://ws.alltick.co/stock" def on_message(ws, message): data = json.loads(message) # 数据包包含tick行情、港股通准入状态、标的调整生效日期 print("收到数据:", data) def on_open(ws): subscribe_msg = { "action": "subscribe", "stocks": ["00001.HK", "00700.HK"] } ws.send(json.dumps(subscribe_msg)) def on_error(ws, error): print("WebSocket错误:", error) def on_close(ws): print("WebSocket关闭") ws = websocket.WebSocketApp( ws_url, on_message=on_message, on_open=on_open, on_error=on_error, on_close=on_close ) ws.run_forever() 依托接口实时同步,系统可按任意历史日期精准判别个股是否隶属于港股通,有效支撑历史数据拼接、多周期回测建模。 三、量化建模与数据处理关键要点 杜绝代码内硬编码标的清单:季度常态化调样持续变更成分范围,静态清单会随时间逐步偏离真实市场结构; 以生效日期作为数据拆分边界:新增标的自生效日纳入统计样本,剔除标的从生效日起剔除,统一回测统计口径; 持续监控临时非标调整:突发风险事件带来的临时增减无固定周期,依托接口动态更新能够规避非常规变动带来的数据漏洞。 结语 港股通标的生效时间依托成熟的监管规则,小体量基本面研究可依托公告人工整理,系统化量化项目建议接入行情接口实现标的与生效日期动态管理。围绕生效日期搭建数据筛选逻辑,是提升数据源可信度、优化回测与实盘拟合度的重要一环。
浏览26
评论0
收藏0
用户头像sh_***494to70PW
2026-06-04 发布
在长期的量化策略研究与模型迭代过程中,我发现多数短线策略回测失真的核心原因,往往不在于算法逻辑,而在于行情数据颗粒度不足。标准行情数据源仅保留固定周期的K线与逐笔明细,盘中瞬时的盘口状态、小幅价格波动、量能微妙切换等高频细节都会被抹平。 这就导致很多短线模型在回测阶段表现优异,落地实盘却频繁失效。为了解决高频策略的数据偏差问题,我搭建了一套定时行情快照采集工具,通过实时行情接口持续抓取盘面状态,以5秒为固定周期完成全域标的数据存档,为短周期策略复盘、盘口规律统计、模型精度优化提供精细化的原始数据支撑。 这套工具的整体实现逻辑十分务实:持续订阅实时行情数据流,将动态刷新的盘口信息进行内存缓存,再通过定时任务完成数据切片落地。整体开发门槛较低,程序运行稳定性强,能够完美适配个人量化研究者的日常数据积累需求。 一、实时行情数据流订阅与缓存搭建 在高频数据采集场景中,轮询式数据请求存在延迟不稳定、接口请求冗余、容易丢失瞬时数据等问题,因此行业内主流方案均采用WebSocket长连接推送模式。建立稳定连接后,只需提前配置需要监控的标的列表,即可被动、持续接收全量Tick行情数据,最大程度贴合实时盘面变化。 在我的量化工具迭代过程中,会采用AllTick API稳定的推送服务作为行情数据源,保障高频采集场景下的数据完整性与低延迟特性。完整的行情订阅与本地缓存实现代码如下: import websocket import json current_snapshot = {} def on_message(ws, message): data = json.loads(message) symbol = data.get("symbol") if symbol: current_snapshot[symbol] = data def on_open(ws): req = { "action": "subscribe", "symbols": ["AAPL", "TSLA", "MSFT"] } ws.send(json.dumps(req)) ws = websocket.WebSocketApp( "wss://api.alltick.co/stock", on_message=on_message, on_open=on_open ) ws.run_forever() 代码中的 current_snapshot 字典是整套采集系统的核心枢纽,它会实时覆盖更新每一个订阅标的的最新盘口数据,始终保存当前最新的盘面状态,为后续定时快照存储提供完整、实时的数据基底。 二、基于多线程的5秒周期快照落地方案 市场行情是连续不间断波动的,但量化建模与数据分析需要结构化、离散化的时序数据。为了实现连续数据流的精准切片存储,我采用多线程分离的架构设计,将行情接收与数据存储逻辑解耦。 单独开启独立守护线程,以5秒为固定时间间隔,周期性读取内存中的最新缓存数据,批量写入本地文件或数据库,实现自动化、无人值守的数据采集。具体实现代码如下: import time import threading def save_snapshot(): while True: time.sleep(5) ts = time.strftime("%Y-%m-%d %H:%M:%S") for symbol, data in current_snapshot.items(): price = data.get("price") volume = data.get("volume") with open("snapshot.csv", "a") as f: f.write(f"{ts},{symbol},{price},{volume}\n") threading.Thread(target=save_snapshot, daemon=True).start() 该本地化CSV存储方案结构简洁、无需复杂配置,适合中小规模标的监控场景。若研究过程中需要同时订阅数十乃至上百只标的,可将存储逻辑升级为批量异步写入或数据库持久化,有效规避高频读写带来的性能瓶颈,保障系统平稳运行。 三、高频采集场景的数据优化策略 5秒级的高频采样模式,在多标的监控场景下会持续生成海量时序数据,若不做优化,容易出现文件冗余、读写卡顿、数据检索低效等问题。结合长期量化数据积累的实战经验,分享三套适配个人研究场景的轻量化优化方案: 第一,精简数据存储维度。舍弃行情数据中冗余的非核心字段,仅保留时间戳、标的代码、最新价格、成交量等模型回测必需的核心参数,在不影响研究精度的前提下压缩数据体积。 第二,优化IO读写逻辑。摒弃单条数据逐行写入的低效模式,采用批量攒批、异步写入的方式,降低频繁磁盘操作带来的性能损耗,提升程序运行效率。 第三,建立历史数据归档机制。定期对过期的历史快照数据进行分档存储与压缩处理,避免单一文件体积过大,保障长期数据采集与后续数据检索、分析的效率。 需要明确的是,行情快照数据与逐笔成交明细属于两类不同的研究数据源。快照数据记录的是特定时间节点的全局盘口静态状态,更适配短周期趋势研判、高频策略回测、盘口状态相关性分析等场景,是短线量化研究的核心数据之一。 四、5秒采样周期的量化逻辑解析 不少量化研究者在搭建快照系统时,都会纠结采样周期的参数选择。这个参数的核心取舍逻辑,是平衡数据信噪比与行情捕捉完整性。 1秒级的超高频采样会收录大量市场随机噪音,无效数据占比极高,不仅增加存储压力,还会干扰模型的特征提取;而10秒及以上的长间隔采样,时间颗粒度过于粗放,会丢失短线快速异动、瞬时量能拐点等关键交易信号,无法支撑高频策略的精细化回测。 经过多轮实盘测试与数据对比,5秒是适配短线量化研究的最优折中参数,既能完整捕捉有效短期行情波动,又能合理控制数据体量,适配绝大多数个人高频策略的研究需求。 五、实战运行效果与应用总结 我曾基于这套架构,长期对数十只标的进行不间断数据采集,实测系统延迟稳定维持在数十毫秒级别,数据同步精度较高。相较于传统手动抓数、平台导出历史数据等方式,自动化快照采集体系实现了时序数据的连续性与可控性,极大方便了后续的数据统计、可视化分析与策略迭代优化。 从量化应用角度来说,这套工具的落地门槛较低,核心稳定运行的关键仅有三点:可靠的行情长连接通道、精准的标的订阅配置、稳定的数据持久化逻辑。满足这三个条件,即可长期稳定完成数十至上百只标的的高频快照采集,为策略回测、模型优化、盘口规律研究提供高质量的精细化行情数据集,有效解决短线量化模型回测失真、拟合不准的行业常见问题。
浏览35
评论0
收藏0