{
    "app": {
        "name": "ashare-screener",
        "description": "A股每日盘前短线标的智能筛选(v6.22.36)。基于前一日收盘数据，通过37步筛选流程+自动整改+策略级胜率监控熔断，输出短线标的_YYYYMMDD.md和可视化HTML报告。同策略+跨策略冠军PK采用基本面+技术面融合12维度。回测报告新增👑皇冠回测板块+按日期均匀采样交易明细。",
        "mode": "advanced-chat",
        "model_config": {
            "provider": "deepseek",
            "model": "deepseek-chat",
            "parameters": {
                "temperature": 0.7,
                "max_tokens": 4096
            }
        }
    },
    "instructions": "name ashare-screener description A股每日盘前短线标的智能筛选(v6.22.36)。基于前一日收盘数据，通过37步筛选流程+自动整改+策略级胜率监控熔断，输出短线标的_YYYYMMDD.md和可视化HTML报告。同策略+跨策略冠军PK采用基本面+技术面融合12维度。回测报告新增👑皇冠回测板块+按日期均匀采样交易明细。 A股盘前短线标的筛选 v6.22.36 版本历史 v6.22.36 : 策略A震荡市完全关闭(shock_market_limit 1→0); 策略C止损收紧0.94→0.93(近4周27.8%胜率); 策略I止损收紧0.93→0.92(近4周29.7%胜率); 策略L止损收紧0.94→0.935(近4周31.0%胜率) v6.22.35 : 取消数量上限截断+皇冠回测补全: 冠军标的取消截断剔除(保证回测可追踪); backtest.py冠军筛选边界修正(<today→<=today); generate_backtest_report新增皇冠回测MD章节(此前仅HTML有); 历史推荐补录09-09/09-10冠军记录 v6.22.34 : 买入池期望≥0过滤+数量上限: 独立步骤(不改主筛选/不改胜率监控/不绕过SSOT), 只把期望≥门槛且样本≥5的策略标的写入推荐历史, 每日买入池上限10只(达标不足时不硬凑); B/J/F/H正期望被保留, D/C/G/A/I负期望被剔除 v6.22.33 : 冠军胜率优化: 方案一(候选策略胜率门槛剔除)+方案二(12维度权重向短线动量倾斜v参数)+方案三(历史加成衰减+重复夺冠冷却)+step28独立冠军胜率阈值自动开关 v6.22.32 : 冠军PK维度扩展至12维度: 新增技术动能(MACD柱+RSI+布林带宽)/机构认可度(龙虎榜机构席位+净买额+融资融券)/趋势强度(均线多头排列+涨停天数+60日位置)/市值风格(小市值优先+低PE)/量价匹配(放量上涨加分) v6.22.31 : 增加历史板块参考: 冠军PK新增第9维度—板块资金净流入+0.5/板块历史胜率>=30%+0.5/>=40%+0.5 v6.22.30 : 皇冠标的评选增加历史回测盈利加成: 有盈利样本+0.5/胜率>=30%+0.5/均收正+0.5 v6.22.29 : 全策略历史回测数据驱动调参: 放宽止损止盈区间提胜率; 策略E阈值1500万→1000万; 熔断阈值10→8/观察期2→3周 v6.22.28 : 回测列改用图标序列：每个样本对应一个图标，不再使用数字表示 v6.22.27 : 修复 real_return_pct 全空: step0C 由单日严格窗口(prediction_date==today)改为回溯补采 v6.22.26 : 修复: 最近交易明细采样上限过低(30→200条,15→50条/日) v6.22.25 : 修复: 预测板块HTML区块占位符未替换(Python .format()优先级Bug) v6.22.24 : 新增预测板块HTML区块(基于历史资金流向预测下个交易日上涨板块并映射龙头标的)+行业资金历史.json跨天持久化(step0A回拉/step26推送) v6.22.23 : 新增 day-level 防重(步骤0D)：按 prediction_date 判定，MD+HTML 均已存在则 sys.exit(0) 跳过当日筛选，避免同一天多次运行互相污染(实时资金快照不同+推荐历史累加导致冠军易主)；支持 LV_FORCE_RERUN=1 强制重跑 v6.22.22 : 验证并确认下个交易日板块上涨预测能力(三因子打分)已集成,同步MD/HTML输出;本轮版本号递增至v6.22.22 v6.22.21 : 新增下个交易日板块上涨预测能力：基于板块近15日主力净流入的三因子打分(连续流入40%+近3日均35%+当日强度25%)预测上涨板块并映射龙头标的,支持输出MD/HTML报告 v6.22.20 : 推荐历史新增次日真实收益字段(step0C);监控/统计切换真实口径(real_return_pct优先) v6.22.19 : 修复资金去向流出为-: step10C_fetch_industry_flow_rank 双方向拉取净流入(po=1)+净流出(po=0)合并去重, 流出列/资金流出TOP5正常展示 v6.22.18 : 版本同步：由 sync_version.py 从 VERSION 写入 v6.22.17 : 版本同步：由 sync_version.py 从 VERSION 写入 v6.22.16 : K线数据源修复: web.ifzq.gtimg.cn → proxy.finance.qq.com/ifzqgtimg (沙箱内旧域名被L7拦截返回501, 修复后K线500只有效, 回测胜率恢复正常) v6.22.15 : 限价未成交不再次日开盘追入，直接标注no_entry并独立统计；no_entry排除出有效样本，胜率/均收/盈亏比/夏普/最大回撤均不含no_entry v6.22.13 : 策略A震荡市上限收紧: strategy_a_shock_market_limit 1→1, 震荡市策略A回测胜率仅23.1%需进一步控制敞口 v6.22.12 : v6.22.12 版本治理: 修复自动整改路径未触发SSOT同步(sync_version.py); 新增SKILL.md版本历史同步+quality-gate自检拦截(未同步则中止推送) v6.22.11 : v6.22.11 自动整改(1项): 策略C震荡市上限收紧: strategy_c_shock_market_limit 3→2, 震荡市策略C回测胜率仅20.8%需进一步控制敞口 v6.22.9 : 皇冠回测交易明细显示不全修复——(1)冠军标的完整历史补全: cutoff过滤后将冠军标的的所有历史记录(含超出28天窗口的)纳入回测，确保皇冠回测交易明细不受窗口限制; (2)主交易明细表强制包含冠军: HTML/Markdown报告均匀采样后追加遗漏的冠军交易行; (3)新增日志打印补全条数 v6.22.7 : 行业资金排名数据源修复——东方财富API域名从push2.eastmoney.com迁移至push2delay.eastmoney.com(原域名返回Empty reply), 涉及三处URL: (1)step10C_fetch_industry_flow_rank板块级行业主力净流入排名; (2)step10C_flow_fetch_main_inflow个股主力净流入; (3)step10C_lhb_fetch龙虎榜备用源 v6.22.2 : 策略级胜率监控熔断重建——(1)win_rate_drop_threshold/consecutive_weeks/max_adjust_params以活参数恢复回DEFAULT_PARAMS; (2)步骤28新增检查6——策略级胜率监控熔断，记录每日各策略回测胜率，检测到单策略连续N期胜率下降超阈值时自动触发熔断(收紧止损0.5%); (3)新增_recorcd_strategy_win_rates/_detect_strategy_circuit_breaker/_incr_strategy_adj_count等辅助函数; (4)调参计数受max_adjust_params限制，超限跳过防无限调整 v6.22.0 : 新闻源全网替换——(1)移除Bing网页搜索(反爬/超时/不稳定), 替换为东方财富个股新闻(AKShare直连, 覆盖全市场财经新闻); (2)新增财联社个股新闻(csw API直连, 电报快讯级实时新闻); (3)正面新闻搜索同步改为东方财富, 过滤负面标题; (4)5源并行: 巨潮资讯网+麦蕊智数(公告+跌停)+东方财富+财联社, 可用源从4→5 v6.21.4 : 新增步骤28自动整改——筛选完成后自动分析问题(步骤警告/行业资金排名/策略A胜率/新闻源/回测整体), 发现问题自动生成整改方案、修改代码、更新版本、推送GitHub，每次筛选都是自我优化的闭环。 版本号单一真相源(SSOT) ： VERSION 文件为唯一来源。 ashare_screener.py / pre-check-version.py 运行时读取 VERSION ；本文件与 策略调整记录.json 由 scripts/sync_version.py 在发版时同步， 禁止手工硬编码版本号 。 版本重编号说明（2026-08-05） ：原 v6.16.38 / v6.16.39 / v6.16.40 三个补丁实际发生在基线 v6.20.2 之后 ，编号低于基线属版本回落，现依时间顺序重编号为 v6.20.3 / v6.20.4 / v6.20.5 。代码注释与本文件已同步。历史 commit message 中的旧编号不再改写，以此说明为准。 版本回落修正说明（sunday_industry_pull.py，2026-08-08） ：commit f399e69 / fcec3aa 在基线 v6.20.6 时将 sunday_industry_pull.py 的版本标记写为 v6.13.38 ，回落 7 个次版本且长期无留档。依 @since 约定（P2-1）该标记已改为引入版本语义 @since v6.13.39 （记录该特性实际引入版本，非当前版本）；文件\"当前版本\"声明点（docstring 首行 L4 与 print 语句 L481）同步至 v6.20.12 （SSOT 锚点，由 sync_version.py 保证与 VERSION 一致）。版本回落门禁现覆盖该文件：提交信息级 commit_gate （commit-msg 钩子 + CI commit-gate 步骤 + 脚本内自动提交前置校验）对 全部 .py 文件的提交 生效，含 sunday_industry_pull.py 的自动提交（P0 Task 1 已接入）；文件级「当前版本」声明点由 sync_version.py 锚点校验保证与 VERSION 一致（8 锚点含 sunday L4/L481）。历史 commit message 中的旧编号不再改写，以此说明为准。 代码注释版本号约定（P2-1，@since 语义标记） ：为从根源消除\"内联版本注释未随发版同步\"的遗漏， 所有代码注释/docstring 中的版本号一律使用 @since vX.Y.Z 形式 ，表示\"引入版本\"， 不随发版变动 、不参与同步。 仅 scripts/sync_version.py 的 8 个锚点 + SKILL.md 版本历史 为\" 当前版本 \"声明点，发版（含步骤28自动整改）时由 sync_version.py 强制同步： SKILL.md frontmatter + H1 + ## 版本历史 最新条目 、ashare_screener.py 模块 docstring 首行 + 兜底常量、pre-check-version.py 兜底常量、lib/backtest.py 模块头 + 兜底常量、sunday_industry_pull.py docstring 首行、_meta.json version 字段，以及 策略调整记录.json 头部。任一处未对齐， sync_version.py --check 即报错， 自动整改路径会据此中止推送（quality-gate 拦截） 。 其余内联版本标记（含本次 v6.20.12 的回测日期口径修复、行业白名单治理等）均为 @since v6.20.12 ，即使发版到 v6.20.13 也 保持不动 ——它们记录\"该特性引入于何版本\"，而非\"当前版本\"。 策略调整记录.json 的 \"version\" 字段是数据记录（每条记录描述\"该版本引入了哪些变更\"），同理不随发版改写，不采用 @since 前缀。 v6.20.6 : 版本治理 P0 整改——(1)scripts/sync_version.py 改锚定正则多点同步， --check 真校验真退出 (2)scripts/pre_push_check.py 增加 VERSION 单调性校验、lib 全量编译、提交信息低版本检测 (3)新增 .github/workflows/quality-gate.yml 接入 CI (4)修复自动提交双 v 前缀 (5)策略调整记录.json 追加方向修正为 insert(0) 与 ashare_screener.py 对齐 v6.20.5 : 皇冠冠军锁定prediction_date<=today约束——排除未来买入日冠军被误选为最新一期（原记为 v6.16.40，因低于当时基线 v6.20.2 已重编号） v6.20.4 : step22推荐历史is_champion归一化——(1)写推荐历史后对文件全部记录重算is_champion，清旧标记仅本次champion_code标True (2)修复去重跳过导致冠军标的已存在时无法补标、is_champion停留在最早写入冠军(000603错标、002015漏标)的Bug，使推荐历史冠军与主报告冠军一致（原记为 v6.16.39，因低于当时基线 v6.20.2 已重编号） v6.20.3 : 皇冠回测修复——(1)run_backtest改取完整history中prediction_date最大的is_champion记录作为本期冠军；旧\"仅当日\"匹配因命中记录随即被\"排除当天预测\"过滤踢除而取不到标的 (2)对冠军记录豁免\"排除当天预测\"过滤，使其在买入日收盘后可回测（原记为 v6.16.38，因低于当时基线 v6.20.2 已重编号） v6.20.2 : 仓库治理整改（报告#3-#7）——(1).gitattributes 标记生成物 linguist-vendored/generated 修正仓库被识别为HTML (2).gitignore 忽略 .github_token/日志 防凭证泄露 (3)新增 scripts/pre_push_check.py 发版前质量门禁 (4)新增 scripts/lint_commit_msg.py 规范提交信息(type: desc, 拒绝双v) (5)统一机器人提交身份为 ashare-screener/ashare- bot@github.com 常量, 自动提交前缀 data: v6.20.1 : 版本号统一——全部来源(VERSION/SKILL.md/策略调整记录.json/ashare_screener.py)经 SSOT 机制收敛至 v6.20.1，禁止手工硬编码。 v6.16.37 : 行业缓存健壮性——(1)新增步骤0B: 筛选前确保 /workspace 行业缓存文件存在且有效，缺失/损坏自动从 GitHub 克隆同步 (2)缓存加载失败/为空改为硬性飞书告警并中止筛选，杜绝静默降级到 L2 代码段映射导致的行业分类错误 (3)SKILL.md 步骤0B 描述同步更新 v6.16.34 : 五项整改——(1)策略A震荡市限制: step13新增震荡市A策略上限检查, 超过strategy_a_shock_market_limit(5)只时按评分降序截断; (2)策略E扩大生效: 主力净流入阈值从硬编码3000万改为可配置参数strategy_e_expand_threshold(默认1500万); (3)行业缓存补全: 42只推荐标的行业数据全部命中,无需拉取; (4)废弃API清理: step10D/step11移除质押/商誉/解禁废弃参数和注释; (5)回测优化: no_entry限价未成交改为次日开盘价追入, 按比例调整止损止盈, 追入交易计入有效样本, 预期胜率更真实反映策略有效性。 v6.16.33 : 行业缓存修复——(1)修复10只行业分类错误:神火股份/浪潮信息/兴业银锡/中矿资源/赣锋锂业/精达股份/保变电气/华电能源/博源化工/格林美 (2)二级行业补全:47只标的二级行业列为空需排查缓存加载 (3)策略E扩大生效(3→10只),弱市策略A正确关闭(0只)。 v6.16.32 : 日期验证——(1)新增步骤-1 date-validator.py，筛选前多源交叉验证北京时间 (2)验证prediction_date是否为今日+交易日 (3)验证data_date是否为交易日 (4)验证输出文件名YYYYMMDD与北京时间一致 (5)验证失败立即中止筛选并发送飞书告警，杜绝日期错位输出。 v6.16.31 : 震荡市策略权重优化——(1)新增strategy_a_shock_market_limit=5，震荡市A策略最多入选5只（回测胜率仅20%） (2)strategy_e_expand_threshold从3000降至2000万，扩大资金埋伏策略候选池（胜率87.5%表现最优）。 行业白名单治理（P0-4，v6.20.12） sunday_industry_pull.py 的 _INDUSTRY_CORRECTION 白名单 不是根治方案 ，受以下治理机制约束，防无限膨胀： 条目强制字段 ：每条目为 {primary, secondary, source, effective_date, ttl_days} ，缺 source / effective_date 视为非法（schema 校验不过）。 source 写清依据（年报/申万指数/人工核定）， effective_date 为生效日， ttl_days 默认 90。 多源交叉校验 ：热循环对每只股票做 东方财富 + 申万(push2 f127) + 同花顺(最佳努力) 交叉校验；两源一致才采信，不一致且无白名单 → 告警并回退东方财富；某源连续失败(≥20次)自动禁用该源防拖垮墙钟。 月度自动复核（≥30天） ： _monthly_review 重新拉取白名单标的多源，若上游已与白名单一致（自修正）→ 自动摘除 （记入 removed ，运行时抑制该条强制覆盖）；TTL 过期 → 标记需人工复核（保留应用+告警）。复核记录落盘 行业白名单复核记录.json （ last_review_date + reviews[] + removed{} ）。 审计抽样 ：每月对非白名单标的抽样 60 只做多源校验，发现不一致 → 告警（候选补白名单）。 维护 ：新增条目在 _INDUSTRY_CORRECTION 追加一条含 source/effective_date/ttl_days 的记录；命中\"upstream_corrected\"摘除后，可同步删除该 .py 条目保持单一事实源。 行业白名单复核记录.json 由脚本自动维护、随缓存一并提交。 验收口径 ：白名单条目具备 TTL 与复核记录；行业缓存主题（行业缓存.json/二级行业缓存.json）仅在真实变更时提交，缓存预热后月度提交数 < 3。 关键字段口径说明 前置阻断项（2026-08-06 逐代码校验） ：以下字段口径已核验，任何涉及「收益/标签」的下游用途（回测、建模、打分）须严格遵循，避免时间错位导致结论失真。 change_pct —— 实际当日涨跌幅（非次日、非预期） 口径 ： (最新价 - 昨收) / 昨收 × 100 ，单位 %。三处计算完全一致：腾讯 ashare_screener.py:549 、新浪 :1296 、pytdx :1333 。 性质 ：基于真实行情快照的 已实现（realized）当日涨跌幅 ，纯算术、无模型、无预测。 盘前语义 ：盘前拉取的是「前一日收盘数据」，故 change_pct 反映 已收盘的前一交易日 涨跌幅，绝非「下一个交易日会涨多少」。 不是 ：既非「次日收益」，也非「预期/预测收益」。 用途边界 ： ✅ 作筛选/评分 特征 ：如 lib/score.py 按贴近目标涨跌幅打分、 lib/match.py 策略匹配区间、 lib/output.py 展示列。 ❌ 不可 当作「次日收益标签」做回测 / 监督学习——时间错位一天。 正确的「次日/持仓收益」来源 ： lib/backtest.py 的 return_pct （按 entry→exit 真实 K 线模拟）；或基于 prediction_date 当日开盘/收盘相对 entry 计算。 前瞻逻辑所在 ： prediction_date 框架（ :609 ）+ _calc_entry() （ :4029 推算次日合理进场价）。二者 以 change_pct 为输入特征 ，产出 entry 价，不产出「预测涨跌幅」。 回测日期口径 —— 运行日 date vs 买入日 prediction_date （v6.20.12 修复） 两个日期字段 ： date （= data_date ）：推荐记录 实际生成日 （盘前/盘后运行的当天）， ashare_screener.py:5525 赋值。 prediction_date ：该标的 实际买入日 （盘前=当日；盘后=下一交易日）。 旧 bug ： run_backtest 旧逻辑完全以 prediction_date 做包含过滤与报表分组。盘后运行的推荐被打上 prediction_date=次日 ，当回测在「买入日当天」运行时， prediction_date < today 不成立 → 整批被排除，表现为「回测报告没有昨日数据」。 修复（lib/backtest.py v6.20.12） ： 包含/窗口过滤改用 date （运行日）；过去任一运行日产生的推荐都应呈现。 K线获取起点仍用 prediction_date （买入日），保证从实际买入日开盘回放。 报表分组与「日期」列改用 date ，使「昨日（运行日）」可定位。 买入日尚未收盘（ prediction_date >= today ）的推荐标记 holding （ no_data ），仅展示、 不计入胜率 ，待买入日收盘后自动转为有效样本——避免盘中噪声污染统计。 核对要点 ：回测明细「日期」列 = 推荐运行日；要看实际买入日查 prediction_date 。盘后推荐在「买入日当天」回测会显示「持有中」，属正常，次日自动转为有效样本。 步骤 -1: 日期验证（v6.16.32 新增） 在所有筛选开始前强制执行 。调用 references/date-validator.py 从权威授时源（timeapi.io → worldtimeapi.org）获取实时北京时间，交叉验证： prediction_date 必须等于北京时间今日，且为交易日（非周末/节假日） data_date 必须为交易日 输出文件名 YYYYMMDD 必须与北京时间一致 验证失败 → 立即中止筛选， log_alert ERROR ，发送飞书红色告警卡片 验证通过 → 打印确认日志，继续步骤0。 步骤0: 北京时间 使用内置 step0_get_beijing_time() 获取北京时间，计算 data_date （数据来源日期）和 prediction_date （预测日期）。 步骤0A: 拉取持仓 从 GitHub 同步 持仓跟踪.xlsx 和推荐历史JSON文件。 步骤0B: 行业缓存同步（v6.16.37 新增） 筛选前校验 /workspace 下 行业缓存.json 与 二级行业缓存.json 是否存在且有效（非空 dict）。缺失/损坏时从数据仓（lc132/lv-data）自动克隆同步；同步失败则发送飞书红色告警并 中止筛选 ，不再静默降级到 L2 代码段映射，防止行业分类错误污染结果。 步骤1-9C: 市场环境检查 步骤1: 节假日检查 步骤2: 极端行情 步骤2A: 极端行情修复监测（v6.15.0新增）——检测前一日极端行情后的修复力度，4维度评分(上证/深证/创业板/均涨幅，满分10分)，动态调整仓位(40%/25%/20%) 步骤3: 外围市场 步骤3A: 大盘代理 步骤4-4C: 持仓同步/做T/持仓跟踪/持仓危机 步骤5: 推荐历史清理 步骤6: 文件初始化（版本检查） 步骤7: 财报季 步骤8: 大盘环境判断（强市/震荡/弱市，决定仓位比例） 步骤9-9C: 板块轮动/最大持仓天数/回撤断路器/兑现率闭环 步骤10A: 全市场拉取 腾讯一级 > 新浪二级 > pytdx三级降级策略。 步骤10B: 行业补全 所有日期统一仅读取磁盘缓存，不执行HTTP拉取。行业缓存由 sunday_industry_pull.py 单独维护。 步骤10C: 历史K线 三级降级策略：pytdx → 东方财富HTTP → iTick API。计算MA/MACD/KDJ/BOLL等指标。 步骤10D-10H: 数据采集 10D: 财务数据（质押/商誉/解禁API已废弃降级） 10E: F10基本面 10F: 风险事件（解禁API降级使用内置数据缓冲） 10G: 拥挤度（机构持仓+融资过热代理） 10H: 二级行业赋值 步骤11-19: 筛选流程 步骤11: 13项硬排除（ST/科创/北交/创业板/7日涨幅>7%/涨停/跌停/次新/30日涨幅>30%/庄股/7日新高/7日跌幅>12%/财务异常） 步骤12: 27项信号过滤 步骤13: 20策略匹配（ABCDEFGHIJKLMNOPQ + RST主力共振） R 主力共振(强) : 底仓≥3分 + 起爆≥4分，双重确认 S 主力共振(弱) : 底仓≥2分 + 起爆≥3分 T 主力观察 : 底仓≥2分 + 起爆≥2分，仅观察不推荐 步骤14: 评分（含MACD+K线技术指标加分，最多+8分） 步骤15: 微观结构过滤（流动性+消息敏感度） 步骤15A: 主力资金流向（东方财富push2主力净流入API）+ 龙虎榜机构席位（东财RPT_DAILYBILLBOARD_DETAILSNEW，单次覆盖全市场）+ 融资融券日变动（同花顺rzrqgg个股页HTML解析，限定final短名单）；接口不可达/限流时优雅降级，绝不阻塞主流程 步骤15B: AI策略分析（市场全景+板块研判+个股深度研判，基于最终精选TOP10） 步骤16: 综合评分+平局打破 步骤17: 行业限制（行业集中度控制，弹性+5）",
    "variables": [],
    "opening_statement": "你好，我是 ashare-screener，A股每日盘前短线标的智能筛选(v6.22.36)。基于前一日收盘数据，通过37步筛选流程+自动整改+...",
    "suggested_questions": [],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=lc132-lv-skill-md"
}