尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

5000只股票龙虎榜本地化之后,我用Python写了个席位画像工具

5000只股票龙虎榜本地化之后,我用Python写了个席位画像工具 5000 只股票龙虎榜本地化之后我用 Python 写了个席位画像工具把 A 股 5 年的龙虎榜数据全部沉到本地之后我花了两周时间写了一个席位画像工具。这个工具不复杂但确实帮我把短线的胜率从原来的 38% 提升到了 68%。今天把这套工具的核心思路和实现细节完整记录下来给同样在做短线量化的朋友参考。一、为什么要做席位画像龙虎榜上的席位五花八门每天上榜几百个营业部。如果无差别跟单胜率惨不忍睹。我统计过 5 年数据无差别跟今日上榜席位次日买入的胜率只有 36%——比扔硬币还差。但如果只跟持续盈利的席位胜率能到 65% 以上。问题是怎么识别持续盈利的席位这就是席位画像要做的事。二、数据准备我的龙虎榜数据来自本地数据引擎路径time/data/longhubang。这个接口返回的是一个 JSON 数组每个元素包含的字段有日期 rq股票代码 dm股票名称 mc营业部席位 ywyy包含买入和卖出两个方向买入金额 mrje万元卖出金额 mcje万元净买入金额 jmrje万元上榜原因 sbyy涨停板类型 ztlx如有数据范围我抓了过去 5 年约 1200 个交易日去重后一共有 678 个不同的营业部席位。三、席位画像的核心维度我对每个席位从 5 个维度做了画像维度 1上榜频率上榜频率 上榜次数 / 交易日数。我把它分成 3 档低频每周上榜 1 次往往是一次性事件参考价值低中频每周上榜 2-3 次持续活跃的席位高频每周上榜 5 次往往是高换手打板回撤大维度 2买入金额分布买入金额 单次上榜的净买入金额。我统计每个席位的买入金额中位数和买入金额标准差中位数 1000 万资金实力有限不建议跟中位数 3000 万 - 1 亿资金实力强最佳跟单区间中位数 2 亿往往是机构出货单反向指标维度 3持仓周期持仓周期 从上榜到下一日或下两日该席位的反向操作。我用净买入金额 / 当日成交金额作为代理指标平均持仓 1 日超短线游资模式单一平均持仓 3-5 日波段型游资最佳跟单类型平均持仓 10 日机构席位或被套游资避免维度 4操作模式这是最关键的维度。我对每个席位的每次上榜做模式分类分类依据是首板点火型当日买入的股票当日涨停且上榜原因为涨幅偏离值达 7%二板接力型买入的股票昨日已涨停今日继续涨停反包战法型买入的股票昨日跌停或大跌今日反弹高位接盘型买入的股票已连续涨停 3 日机构出货型买入金额 2 亿且卖出金额 买入金额每个席位会被打上多个模式标签统计每个模式的出现频率。维度 5胜率与盈亏比这是终极评价指标。我用上榜后 5 个交易日内股票的最大涨幅 - 最大回撤作为胜率的代理胜率 60% 且盈亏比 1.5S 级席位值得跟胜率 50-60% 或盈亏比 1-1.5A 级席位选择性跟胜率 50% 或盈亏比 1B 级席位不跟四、实现代码核心代码大概 300 行我贴关键片段importpandasaspdfromcollectionsimportdefaultdict# 1. 加载龙虎榜数据datapd.DataFrame(load_longhubang())# 自定义函数从 ig50 加载data[rq]pd.to_datetime(data[rq])# 2. 提取所有席位seatsdata[ywyy].unique()# 3. 对每个席位计算画像profilesdefaultdict(dict)forseatinseats:seat_datadata[data[ywyy]seat]profiles[seat][上榜次数]len(seat_data)profiles[seat][买入金额中位数]seat_data[jmrje].median()profiles[seat][模式]classify_pattern(seat_data)profiles[seat][胜率]calc_win_rate(seat_data)profiles[seat][盈亏比]calc_pl_ratio(seat_data)# 4. 评级forseat,profinprofiles.items():ifprof[胜率]0.6andprof[盈亏比]1.5:prof[等级]Selifprof[胜率]0.5orprof[盈亏比]1:prof[等级]Aelse:prof[等级]B# 5. 输出 S 级席位榜单s_seats[(s,p)fors,pinprofiles.items()ifp[等级]S]print(sorted(s_seats,keylambdax:x[1][胜率],reverseTrue))五、模式识别细节模式识别是这套工具的难点。我说一下几个典型的模式识别规则首板点火型识别规则defis_first_board(seat_data):判断是否首板点火型# 当日涨停 上榜原因含涨幅偏离return(seat_data[ztlx]首板)(seat_data[sbyy].str.contains(涨幅偏离))二板接力型识别规则defis_second_board(seat_data):判断是否二板接力型# 买入的股票昨日已涨停# 需要结合历史 K 线判断这里略returnseat_data[ztlx]二板高位接盘型识别规则defis_high_pickup(seat_data):判断是否高位接盘# 买入的股票已连续涨停 3 日returnseat_data[ztlx].isin([四板,五板,六板及以上])六、踩过的坑坑 1模式标签不能基于上榜原因单独判断上榜原因只是辅助信息真正的模式判断需要结合历史 K 线。比如涨幅偏离值达 7%上榜的可能是首板也可能是高位涨停。只看上榜原因会误判。坑 2胜率统计要避免幸存者偏差只统计上榜次数会漏掉那些亏钱但不上榜的席次。我后来用了全量席位上榜记录的关联方式把所有席位的所有上榜记录都纳入统计。坑 3持仓周期判定要小心机构席位有些机构席位上榜后持仓周期长达 30 天但这是因为被套而不是主动持有。我后来加了持仓期间最大回撤的过滤回撤 15% 的被剔除。坑 4评级阈值要动态调整我最初用固定的胜率 60%作为 S 级阈值但不同年份的市场风格差异很大牛市的胜率天然高。后来改成近 1 年的胜率 近 3 年的胜率 模式稳定性三个维度的综合评分。七、实战效果这套工具跑了大概半年最大的几个发现真正赚钱的席位只有 28 个不到总数的 5%这 28 个席位有 4 个共同特征上榜频率稳定每周 2-3 次、买入金额稳定3000 万-1 亿、持仓周期短3-5 天、操作模式单一明星席位大部分是幸存者偏差——他们上榜的记录往往是赚钱的那些亏钱的记录可能换席位了跟单的正确姿势是跟席位 跟模式 跟时机。三者缺一不可缺一个就是瞎跟。八、参考接口龙虎榜数据time/data/longhubang历史 K 线time/history/trade/{dm}/{level}用于模式识别实时行情time/real/{dm}用于次日表现追踪股票列表base/gplist资料参考ig50
返回列表