§0
顶层架构总览
Top-Level Architecture Overview
定位 · POSITIONING
为 OpenClaw 20 标的核心交易池提供「候选源」与「淘汰路径」的全量化闭环系统。所有阈值均量化、无模糊描述、可直接转 Python/SQL。
A fully quantified closed-loop system providing "candidate sourcing" and "elimination pathways" for the OpenClaw 20-stock core trading pool. All thresholds are quantified, unambiguous, and directly translatable to Python/SQL.
数据源层
Data Sources
Yahoo Most Active
IBKR API
Polygon.io
EarningsWhispers
SEC EDGAR
FRED
初筛闸门
Initial Gate
IG-01~IG-09
9项强制通过 · 任一失败→L4黑名单
池子分层
Pool Layers
L0 ≤200
L1 =100
L2 30-60
L3 20-40
L4 黑名单
闭环运作
Closed Loop
每日 Daily Loop
→
周报 Weekly Report
→
存档 Archive
→
OpenClaw 衔接
§1
标的池分层结构
Pool Hierarchy
1.1 五层定义
Five-Layer Definition
| 层级 / Layer | 名称 / Name | 容量 / Capacity | 来源 / Source | 用途 / Purpose | 持久化 / Persistence |
|---|---|---|---|---|---|
| L0 | 全量备选池 Master PoolMaster Pool | ≤ 200 | Yahoo Top100 累计沉淀Yahoo Top100 accumulation | 长期跟踪库Long-term tracking | 永久(直到清退)Permanent until delisted |
| L1 | 当日候选池 Daily CandidateDaily Candidate Pool | = 100 | Yahoo 实时抓取Yahoo real-time scrape | 当日初筛入口Daily screening entry | 24h 刷新24h refresh |
| L2 | 观察池 Watch ListWatch List | 30-60 | L0+L1 交集筛选L0+L1 intersection filter | 准交易,未达全部门槛Pre-trade, not yet qualifying | 滚动Rolling |
| L3 | 交易池 Active PoolActive Trading Pool | 20-40 | L2 升级 + OpenClaw 20L2 promoted + OpenClaw 20 | 可推 Wheel 信号Eligible for Wheel signals | 滚动Rolling |
| L4 | 黑名单 BlacklistBlacklist | 不限 | 触发清退规则Demotion rule triggered | 拒入 + 留痕Reject + audit trail | 限时/永久Timed / Permanent |
1.2 标的状态机
Ticker State Machine
UNTRACKED
未追踪
未追踪
→
L1 CANDIDATE
候选
候选
→
L0 MASTER
备选
备选
→
L2 WATCH
观察
观察
→
L3 ACTIVE
交易
交易
→
OpenClaw
20-Pool
人工确认门
20-Pool
人工确认门
L4 BLACKLIST
← 任意层触发 DG 规则即清退
/ Triggered from any layer via DG rules
1.3 标的 Schema 字段
Ticker Schema
# 每只标的在系统中维护以下字段 / Fields maintained per ticker { "ticker": "AAPL", "layer": "L3", # L0/L1/L2/L3/L4 "first_seen": "2026-01-15", # 首次进入L0日期 / First seen in L0 "consec_top100_days": 18, # 连续上榜Top100天数 "cum_top100_days_30d": 22, # 30交易日内累计上榜 "consec_warn_days": 0, # 连续警示天数 "score": 78.5, # 综合评分 0-100 / Composite score "tier_hint": "B", # 推断OpenClaw层级 A/B/C/D "blacklist_until": null, # null = 永久 / permanent }
§2
每日自动化抓取与更新 SOP
Daily Automated Fetch & Update SOP
执行时间 · SCHEDULE
每日盘前 08:00 SGT(UTC+8),美东开盘前约 90 分钟。失败重试:每步最多 3 次,间隔 60s;连续 2 日失败触发飞书告警。
Daily pre-market 08:00 SGT (UTC+8), ~90 min before US open. Retry policy: max 3 attempts per step, 60s interval; 2 consecutive failures trigger Feishu alert.
08:00 SGT · T-1
抓取 Yahoo Most Active Top100Fetch Yahoo Most Active Top100
01_fetch_yahoo.py · 5 min · 降级→Polygon/Tradier
08:05 SGT · T-2
合并/更新 L0 全量池(容量管理 ≤200)Merge/update L0 master pool (capacity ≤200)
02_master_pool_update.py · 3 min
08:10 SGT · T-3
拉取期权链 + Greeks(IBKR API)Fetch option chain + Greeks (IBKR API)
03_options_data.py · 10 min · 降级→Tradier/Polygon
08:20 SGT · T-4
拉取基本面 + 财报日历 + 事件日历Fetch fundamentals + earnings calendar + event calendar
04_fundamentals.py · 5 min
08:25 SGT · T-5
全维度校验 + 综合评分计算Full-dimension screening + composite score calculation
05_screening.py · 5 min · 26 metrics, 7 dimensions
08:30 SGT · T-6
升降级/剔除决策(强制剔除 50 只)Promote/demote/eviction decisions (mandatory 50 evictions)
06_promote_demote.py · 3 min · DG Rules
08:35 SGT · T-7
风控兜底扫描(妖股/悬崖检测/8-K/加密复核)Risk overlay scan (memestock/cliff/8-K/crypto audit)
07_risk_overlay.py · 2 min
08:38 SGT · T-8
存档 + 推送早报 + 生成 OpenClaw L3 清单Archive + push morning report + generate OpenClaw L3 list
08_archive_notify.py · 2 min · 飞书Webhook
21:30 SGT · Intraday(可选)
盘中实时监控Intraday real-time monitoring (optional)
09_intraday_watch.py · 持续运行
次日 05:30 SGT · EOD
美股收盘后日终结算End-of-day settlement after US market close
10_eod_settlement.py · 5 min
§3
入池标准 / 留存标准 / 量化剔除规则
Entry Gates / Hold Gates / Demotion Gates
3.1 初筛闸门 IG — Yahoo Top100 → L0
Initial Gate: Yahoo → L0
强制规则 · MANDATORY
任一不通过则进入 L4 黑名单(限时 30 天)
Any failure → L4 Blacklist (30-day timed ban)
| 代码 | 检查项 / Check | 阈值 / Threshold | 数据源 | 失败动作 / Failure |
|---|---|---|---|---|
| IG-01 | 股价 Price | ≥ $10.00 | Yahoo | L4 限时 30d |
| IG-02 | 市值 Market Cap | ≥ $5B | Yahoo/IBKR | L4 限时 30d |
| IG-03 | 3M日均成交额 ADV | ≥ $200M | Yahoo | L4 限时 30d |
| IG-04 | 期权链存在 Options Chain | 必须存在 | IBKR | L4 永久 |
| IG-05 | 期权到期日数 Expiries | ≥ 4个 | IBKR | L4 限时 60d |
| IG-06 | 标的类型 SecType | STK/ETF only | IBKR | L4 永久 (拒SPAC/ADR/OTC) |
| IG-07 | 上市天数 Listing Age | ≥ 180天 | IBKR | L4 限时至180d |
| IG-08 | 板块过滤 Sector | 非生科III期前/非OTC/非Penny | GICS | L4 永久 |
| IG-09 | 退市/并购传闻 | 无 None | SEC 8-K | L4 永久 |
3.2a 升级门 PG-A — L0 → L2 观察池
Promotion Gate A: L0 → L2 Watch
AND 逻辑 · ALL CONDITIONS REQUIRED
所有条件 AND 满足,且持续 5 个交易日
All conditions must be met, sustained for 5 consecutive trading days
| 代码 | 指标 / Metric | 阈值 / Threshold | 备注 |
|---|---|---|---|
| PG-A-01 | 连续上榜 Top100 | ≥ 5 日 | consec_top100_days ≥ 5 |
| PG-A-02 | 30日累计上榜 | ≥ 12 日 | cum_top100_days_30d ≥ 12 |
| PG-A-03 | 期权日成交量(5日均) | ≥ 1,000 张 | 日<1000不计 |
| PG-A-04 | 期权未平仓 OI | ≥ 5,000 张 | 跨所有到期日 |
| PG-A-05 | ATM bid-ask spread | ≤ 5% | (ask-bid)/mid |
| PG-A-06 | 5日 ADV 美元 | ≥ $200M | 含集合竞价 |
| PG-A-07 | HV30 历史波动率 | 15% ≤ HV30 ≤ 80% | 过低无溢价/过高踩雷 |
| PG-A-08 | 财报距离 | ≥ 14 天 | EarningsWhispers |
| PG-A-09 | 综合评分 Score | ≥ 50 | 三因子 + 期权流动性 |
3.2b 升级门 PG-B — L2 → L3 交易池
Promotion Gate B: L2 → L3 Active
叠加条件 · ADDITIONAL REQUIREMENTS
在 PG-A 全部满足基础上,叠加以下条件,持续 3 个交易日
On top of all PG-A conditions, add the following, sustained 3 trading days
| 代码 | 指标 / Metric | 阈值 / Threshold | 备注 |
|---|---|---|---|
| PG-B-01 | 期权日成交量(5日均) | ≥ 5,000 张 | 真正可交易 |
| PG-B-02 | 期权 OI | ≥ 20,000 张 | 跨到期日 |
| PG-B-03 | ATM bid-ask spread | ≤ 2% | 严格滑点控制 |
| PG-B-04 | 5日 ADV 美元 | ≥ $500M | 蓝筹门槛 |
| PG-B-05 | IVR 隐波排名 | 30 ≤ IVR ≤ 80 | A/B层范围 |
| PG-B-06 | 综合评分 Score | ≥ 70 | 高质量标准 |
| PG-B-07 | 20池查重 | 不重复 | 新增标的不与20池重叠 |
| PG-B-08 | 单标的敞口预算 | ≤ NLV × 10% | PM-1 单标上限 |
| PG-B-09 | 行业重仓预算 | ≤ NLV × 30% | PM-1 单行业上限 |
PG-C · L3 → OpenClaw 20-Pool
不自动升级。每周报告标记 L3 中评分 ≥ 85 的标的作为「20池替补候选」,由用户人工决定是否更换 20 池中的弱者。
No automatic promotion. Weekly report flags L3 tickers with score ≥ 85 as "20-pool replacement candidates". User manually decides whether to replace weaker members in the 20-pool.
3.3 留存标准 HG — 每日检查
Hold Gate: Daily Check
警示机制 · WARN MECHANISM
L2/L3 每日必须满足,任一不达标进入"警示"状态(warn_day++)
L2/L3 must satisfy daily. Any failure triggers "warn" state (warn_day++)
| 代码 | 指标 | L2 阈值 | L3 阈值 | 触发 |
|---|---|---|---|---|
| HG-01 | 期权日成交量 | ≥ 1,000 | ≥ 3,000 | 单日不达 → warn |
| HG-02 | 期权 OI | ≥ 5,000 | ≥ 15,000 | 单日不达 → warn |
| HG-03 | ATM spread | ≤ 5% | ≤ 3% | 超阈 → warn |
| HG-04 | 单日跌幅 | ≤ 10% | 触发 → warn | |
| HG-05 | 5日 ADV | ≥ $150M | ≥ $400M | 单日不达 → warn |
| HG-06 | HV30 | ≤ 100% | 超过 → warn | |
| HG-07 | IVR异常飙升 | ΔIVR ≤ 25/日 | 事件预警 | |
| HG-08 | 距财报天数 | ≥ 7 天 | ≥ 14 天 | 进禁区 → warn |
| HG-09 | 综合评分 | ≥ 40 | ≥ 60 | 不达 → warn |
3.4 量化剔除规则 DG
Demotion / Delisting Gates
3.4.1 强制即时剔除 — 任一触发立即清退至 L4
3.4.1 Immediate Forced Demotion — Any trigger → L4 immediately
| 代码 | 条件 / Condition | 黑名单期 / Ban |
|---|---|---|
| DG-IMM-01 | 股价跌破 $5 | 永久(满足IG后90d可申诉) |
| DG-IMM-02 | 单日跌幅 > 25% | 90 天 |
| DG-IMM-03 | Vol Z-score > 5 + 跌幅 > 15% | 60 天 |
| DG-IMM-04 | 5日 ADV < $50M(流动性悬崖) | 90 天 |
| DG-IMM-05 | 期权链消失/周合约停牌 | 60 天 |
| DG-IMM-06 | 财报盘后跌幅 > 20% | 90 天 |
| DG-IMM-07 | SEC 8-K 重大不利事件 | 永久 |
| DG-IMM-08 | 妖股:单日涨幅 > 30%,连续 2 日 | 60 天 |
| DG-IMM-09 | bid-ask spread > 10% 连续 2 日 | 60 天 |
| DG-IMM-10 | 退市/被收购/合并公告 | 永久 |
3.4.2 累计阈值剔除 — 双指标避免单日抖动误杀
3.4.2 Cumulative Demotion — Dual metric to avoid single-day false positives
| 代码 | 条件 / Condition | 动作 / Action | 黑名单期 |
|---|---|---|---|
| DG-CUM-01 | L1候选 连续 3 日掉出 Top100 | 不进 L0 | — |
| DG-CUM-02 | L0/L2 连续 5 日掉出 Top100 | 降级 + warn | — |
| DG-CUM-03 | 连续 10 日掉出 Top100 | → L4 | 60 天 |
| DG-CUM-04 | 30日内累计 20 日掉出 Top100 | → L4 | 90 天 |
| DG-CUM-05 | 连续 5 日触发 HG 警示 | 降一层 | — |
| DG-CUM-06 | 30日累计 10 日触发 HG 警示 | → L4 | 60 天 |
| DG-CUM-07 | 连续 3 日 IVR > 90 | → L4 妖股化 | 90 天 |
| DG-CUM-09 | 综合评分连续 7 日 < 30 | → L4 | 90 天 |
| DG-CUM-10 | 综合评分连续 14 日 < 50 | → L0 深度观察 | — |
3.4.4 每日强制剔除 50 只 — 两阶段算法
3.4.4 Daily mandatory eviction of 50 — Two-phase algorithm
def daily_eviction_50(): # 阶段1 / Phase 1: 规则触发强制剔除 → L4 forced = check_all_dg_rules(pool) # DG-IMM + DG-CUM triggered n_forced = len(forced) # 阶段2 / Phase 2: 补足50只 — 恶化分末位淘汰(仅L0/L1) remaining_quota = max(0, 50 - n_forced) if remaining_quota > 0: worst = sorted(pool_L0_L1, key=lambda x: x.deter_score)[: -remaining_quota] # 退回 UNTRACKED,不入黑名单 move_back_to_untracked(worst)
§4
每日分析指标体系与综合评分
Daily Screening Metrics & Composite Score
4.1 七维度 26 指标
7 Dimensions, 26 Metrics
流动性
Liquidity
20%
4 指标 · LIQ-01~04
期权流动性
Options Liquidity
25%
4 指标 · OPT-01~04
波动率
Volatility
15%
3 指标 · VOL-01~03
基本面
Fundamentals
15%
4 指标 · FUN-01~04
事件风险
Event Risk
10%
3 指标 · EVT-01~03
技术面
Technical
10%
3 指标 · TEC-01~03
风控叠加
Risk Overlay
5%
5 指标 · RSK-01~05
4.3 综合评分公式
Composite Score Formula
score = (
liq * 0.20 # 流动性 Liquidity
+ opt * 0.25 # 期权流动性 Options Liquidity
+ vol * 0.15 # 波动率U型 Volatility (U-shape, optimal 25-50%)
+ fun * 0.15 # 基本面 Fundamentals
+ evt * 0.10 # 事件 Events (财报/8-K penalty)
+ tec * 0.10 # 技术面 Technical
+ rsk * 0.05 # 风控 Risk Overlay
) # 返回 0-100 / Returns 0-100
4.4 评分分层映射
Score-to-Layer Mapping
| 综合评分 / Score | 推断层级 / Inferred Layer | 推荐动作 / Action |
|---|---|---|
| ≥ 85 | 候补 OpenClaw 20 池 A 层OpenClaw 20-pool Tier A candidate | 周报标记,人工评估Flag in weekly report, manual review |
| 70-84 | L3 交易池 | 可推 Wheel 信号(需 PG-B 全通过)Eligible for Wheel signals (requires PG-B) |
| 50-69 | L2 观察池 | 留存观察Hold and monitor |
| 30-49 | L0 备选池 | 持续跟踪Continue tracking |
| < 30 | L4 黑名单候选 | 触发末位淘汰Bottom-rank eviction trigger |
§5
每周报告模板
Weekly Report Template
生成时间 · GENERATION SCHEDULE
每周五美股收盘后 → 周六 06:00 SGT。格式:HTML + CSV附件 + 飞书卡片摘要。路径:reports/weekly/WW{YYYY-WW}_pool_report.{html,csv}
Every Friday after US close → Saturday 06:00 SGT. Format: HTML + CSV attachment + Feishu card summary. Path: reports/weekly/WW{YYYY-WW}_pool_report.{html,csv}
| # | 报告章节 / Section | 内容 / Content |
|---|---|---|
| S1 | 执行摘要Executive Summary | 池子总览、净变化、市场环境VIX/SPXPool overview, net changes, market snapshot VIX/SPX |
| S2 | TOP10 潜力股 (Rising Stars)TOP10 Rising Stars | Δ评分≥+10, 连续上榜≥7日, 期权OI环比≥+20%, IVR 30-70, 距财报≥21天Δscore≥+10, top100≥7d, OI ≥+20%, IVR 30-70, days-to-earnings≥21 |
| S3 | BOTTOM10 垃圾股 (Falling Stars)BOTTOM10 Falling Stars | Δ评分≤-10, 连续掉榜≥3日, 流动性恶化≥30%Δscore≤-10, off-top100≥3d, liquidity drop≥30% |
| S4 | 黑名单本周变动Blacklist Changes | 新增/解禁/规则码/解禁日期New entries / releases / rule codes / unban dates |
| S5 | L3 交易池现状L3 Active Pool Status | 全部L3标的:评分/IVR/距财报/是否在20池All L3 tickers: score/IVR/DTE/in 20-pool? |
| S6 | OpenClaw 20池替换建议OpenClaw 20-Pool Replacement | 仅L3评分≥85且优于20池末位≥10分时输出,需人工确认Only when L3 score≥85 and beats last in 20-pool by ≥10. Human confirmation required. |
| S7 | 风险预警事件存档Risk Alert Archive | 妖股/流动性悬崖/财报暴雷/8-K各计N次 + 操作链路Memestock/cliff/earnings-bomb/8-K counts + operation trail |
| S8 | 行业分布健康度Sector Distribution Health | 各GICS板块在L2+L3数量 + PM-1行业敞口检查GICS sector counts in L2+L3 + PM-1 sector exposure check |
| S9 | 数据源健康度Data Source Health | 各源本周可用率/平均延迟/降级次数Uptime/latency/fallback counts per source |
| S10 | 下周关注清单Next Week Watch List | 财报禁区标的/宏观事件/即将解禁黑名单Earnings blackout tickers / macro events / upcoming unbans |
§6
全流程存档机制
Full-Process Archive System
sellput_pool/ ├── data/ │ ├── raw/ # Yahoo Top100 / IBKR Options / Earnings Calendar │ ├── processed/ # L0~L3 每日快照 + L4 黑名单总表 │ ├── metrics/ # daily_metrics.parquet + scores.csv │ └── events/ # eviction / promotion / alerts / corp_actions ├── reports/ │ ├── daily/ # 早报 HTML │ ├── weekly/ # 周报 HTML + CSV │ └── monthly/ # 月报 ├── logs/ # pipeline logs (30d) + error logs └── state/ # streak_counters / score_history / pool_state.json
| 数据类型 / Data Type | 保留期 / Retention | 备份策略 / Backup |
|---|---|---|
| 原始抓取 Raw Data | 365 天 | 每日云端冷备份 |
| 处理后数据 Processed | 永久 | 双地域热备 |
| 指标 Metrics | 永久 | 双地域热备 |
| 事件日志 Events | 永久 | 双地域 + 区块链存证(可选) |
| 早报 Daily Reports | 90 天 | 单地域 |
| 周报 Weekly Reports | 永久 | 双地域热备 |
| Pipeline 日志 | 30 天 | 单地域 |
§7
风控兜底条款
Risk Overlay Layer
核心理念 · PHILOSOPHY
在 Pre-screen Gate / PG / HG / DG 之外,多加一层「异常检测」防止边缘情况漏过。每日 T-7 步骤执行。
An additional anomaly detection layer on top of PG/HG/DG to catch edge cases. Executed at pipeline step T-7 daily.
| 检测器 / Detector | 逻辑 / Logic | 触发规则 |
|---|---|---|
| 妖股识别Memestock Detector | 连续2日涨幅>30% / IVR单日跳升>40 / Vol Z>5+涨幅>15% / 借券率>25% — 任2项触发2d run >30% / IVR jump >40 / Vol Z>5+return>15% / borrow rate>25% — Any 2 | DG-IMM-08 |
| 流动性悬崖Liquidity Cliff | 5日成交量较30日均跌 > 50%5d ADV / 30d ADV < 0.50 | DG-IMM-04 |
| 财报暴雷监控Post-Earnings Monitor | 盘后跌幅 > 20% → L4;跌幅 > 10% → warnAH return < -20% → L4; < -10% → warn | DG-IMM-06 |
| SEC 8-K | Item 2.04 / 4.01 / 4.02 / 5.02 / 8.01 等负面条款Items 2.04 / 4.01 / 4.02 / 5.02 / 8.01 negative filings | DG-IMM-07 |
| 加密总控复核Crypto Overlay | IBIT/COIN/MSTR/HOOD/CRCL/MARA — L3中最多3只,超出按评分降级Max 3 crypto-related in L3. Excess ranked by score → demote to L2 | PM-1 加密子条款 |
7.8 兜底总开关 Kill Switch
Master Kill Switch
| 触发条件 / Trigger | 动作 / Action |
|---|---|
| VIX > 40 | L3 全部冻结新晋升,仅维护Freeze all L3 promotions, maintenance only |
| SPX 单日 -5% | 当日跳过升级,仅做剔除Skip all promotions for the day, demotion only |
| Yahoo + Polygon 双源失败 | 沿用 T-1 池子 + 飞书告警Use T-1 pool snapshot + Feishu alert |
| 黑名单当日新增 > 30 只Blacklist surge > 30 new entries | 异常告警,人工 review 后才执行Alert flagged, human review before execution |
| 评分中位数日变化 > ±15Score median daily change > ±15 | 数据质量异常,暂停升降级Data quality anomaly, suspend promotions/demotions |
§8
与 OpenClaw 20 池的衔接
OpenClaw 20-Pool Integration
| 原则 / Principle | 说明 / Description |
|---|---|
| L3 与 20池可重叠L3 and 20-pool may overlap | 20池标的同时存在于L3,但参数严格按 tickers-20pool.md 执行20-pool tickers also exist in L3, but parameters strictly follow tickers-20pool.md |
| 新L3不能直接入20池New L3 cannot enter 20-pool directly | 必须经周报建议 + 用户人工确认Requires weekly report recommendation + manual user confirmation |
| 加密4%总控 / 张数上限 / 财报禁区Crypto 4% cap / contract limits / earnings blackout | 完全沿用 OpenClaw 既定值,不在本系统重新定义Fully inherited from OpenClaw, not redefined here |
| 串行闸门Serial gates | 本系统 PG-A/PG-B 为「池子准入」门,OpenClaw 5项 Pre-screen Gate 为「信号推送」门,串行执行PG-A/PG-B = "pool admission" gate; OpenClaw 5-item Pre-screen = "signal push" gate. Run in series. |
8.3 反向反馈机制
Feedback Loop
| 事件 / Event | 反馈动作 / Feedback Action |
|---|---|
| 信号人工拒绝率连续 5 次 ≥ 80%Manual reject rate ≥80% for 5 consecutive signals | 评分 penalty -10 |
| 信号执行后 30 天内被分配(assigned)Assigned within 30 days of signal execution | 评分 bonus +5 |
| 信号执行后亏损 > 1RLoss > 1R after signal execution | 7日降级冷却 |
§9
部署架构 / 技术栈
Deployment Architecture / Tech Stack
| 层 / Layer | 组件 / Component | 说明 / Notes |
|---|---|---|
| 抓取 Scraping | Playwright + httpx + tenacity | Yahoo 反爬 + 重试 |
| 数据存储 Storage | DuckDB + Parquet / TimescaleDB | 列式 + 时序(轻量/重型) |
| 期权数据 Options | ib_insync / Polygon Python SDK | 主备切换 |
| 调度 Scheduler | Prefect 2 / Airflow | DAG + 重试 |
| 评分计算 Scoring | Pandas + NumPy | 向量化批处理 |
| 推送 Notify | 飞书 Webhook | 早报/警示/异常告警 |
| 报告 Report | Jinja2 + Plotly + WeasyPrint | HTML/PDF 周报 |
| 日志 Logging | Loguru + Sentry | 异常监控 |
| 部署 Deploy | Docker + pm2 | 与 OpenClaw 同栈 |
| 时区 Timezone | pytz (SGT/UTC/US-Eastern) | 严格区分三地 |
9.1 Crontab (SGT)
# 盘前主流水线 / Pre-market main pipeline 0 8 * * 1-5 /opt/sellput_pool/run_daily_premarket.sh # 盘中实时监控(可选)/ Intraday monitoring (optional) */30 21-23,0-4 * * 1-5 /opt/sellput_pool/run_intraday_check.sh # 盘后日终结算 / EOD settlement 30 5 * * 2-6 /opt/sellput_pool/run_eod_settlement.sh # 周报 / Weekly report 0 6 * * 6 /opt/sellput_pool/run_weekly_report.sh # 月报 / Monthly report 0 7 1 * * /opt/sellput_pool/run_monthly_report.sh
§10
待人工决策事项 (Human-in-the-Loop)
Human Decision Items
⚠ 永不自动执行 · NEVER AUTOMATED
以下事项永不自动执行,需用户手动确认
The following items are NEVER executed automatically and require manual user confirmation
| 事项 / Item | 触发条件 / Trigger | 决策方 / Decision Owner |
|---|---|---|
| OpenClaw 20池替换 | L3 评分≥85 且优于20池末位≥10分L3 score≥85 and beats 20-pool last by ≥10 | 用户每周确认User weekly confirmation |
| 永久清退解禁Permanent ban lift | DG-IMM-07/10/DG-PERM-XX 黑名单DG-IMM-07/10/DG-PERM-XX blacklist | 用户人工 reviewManual user review |
| 黑名单异常激增Blacklist surge | 单日新增 > 30 只Single day > 30 new entries | 用户审核后才执行Execute only after user review |
| 数据源全部失败All data sources fail | Yahoo + Polygon 同时不可用Yahoo + Polygon simultaneously unavailable | 用户决定是否沿用 T-1 数据User decides whether to use T-1 snapshot |
| 加密标的进入 L3Crypto ticker enters L3 | 任何加密标的从 L2 升 L3Any crypto ticker promotes from L2 to L3 | 用户确认 PM-1 加密子条款不破User confirms PM-1 crypto clause not violated |
| Kill Switch 恢复Recovery | VIX>40 / SPX单日-5% 触发冻结后After VIX>40 / SPX -5% freeze triggered | 用户决定何时恢复User decides when to resume |
§11
实施路线图
Implementation Roadmap
PHASE 1
1 周 / 1 week
数据接入 + L0/L1建立Data ingestion + L0/L1 setup
01_fetch_yahoo.py
02_master_pool_update.py
初版 200 只 L0
02_master_pool_update.py
初版 200 只 L0
PHASE 2
2 周 / 2 weeks
全维度指标 + 评分 + L2/L3升级Full metrics + scoring + L2/L3 upgrade
03~05 模块
评分历史回填 30 天
评分历史回填 30 天
PHASE 3
1 周 / 1 week
剔除算法 + 黑名单 + DG规则Eviction algo + blacklist + DG rules
06_promote_demote.py
黑名单总表
黑名单总表
PHASE 4
1 周 / 1 week
风控兜底 + 妖股/悬崖/8-K检测Risk overlay + memestock/cliff/8-K
07_risk_overlay.py
PHASE 5
1 周 / 1 week
周报 + 飞书推送 + OpenClaw衔接Weekly report + Feishu + OpenClaw link
weekly_report.py
08_archive_notify.py
08_archive_notify.py
PHASE 6
持续 / Ongoing
回测 + 参数调优 + 月度复盘Backtesting + param tuning + monthly review
月报 + 反馈环Monthly report + feedback loop
§12
关键参数集中表
Central Parameter Reference
配置文件 · CONFIG FILE
所有可调参数集中维护于 config/thresholds.yaml,修改无需改代码。
All tunable parameters maintained in config/thresholds.yaml. No code changes required for threshold adjustments.
pool_capacity: L0_max: 200 | L1_daily: 100 | L2_max: 60 | L3_max: 40 initial_gate: min_price: 10.0 min_market_cap_usd: 5e9 min_adv_3m_dollar: 200e6 min_option_expiries: 4 min_listing_days: 180 promotion_L0_to_L2: consec_top100_days: 5 cum_top100_days_30d: 12 min_opt_volume_5d: 1000 min_opt_oi: 5000 max_atm_spread_pct: 0.05 min_adv_5d_dollar: 200e6 hv30_range: [15, 80] min_days_to_earnings: 14 min_score: 50 promotion_L2_to_L3: consec_satisfy_days: 3 min_opt_volume_5d: 5000 min_opt_oi: 20000 max_atm_spread_pct: 0.02 min_adv_5d_dollar: 500e6 ivr_range: [30, 80] min_score: 70 scoring_weights: liquidity: 0.20 options_liquidity: 0.25 volatility: 0.15 fundamentals: 0.15 events: 0.10 technicals: 0.10 risk_overlay: 0.05 kill_switch: vix_freeze: 40 spx_daily_drop_freeze: -0.05 blacklist_surge_count: 30 crypto_overlay: member_tickers: ["IBIT", "COIN", "MSTR", "HOOD", "CRCL", "MARA"] max_in_L3: 3
A
完整规则编码索引
Rule Code Index
| 编码 / Code Range | 类型 / Type | 说明 / Description |
|---|---|---|
| IG-01 ~ IG-09 | 初筛闸门 | Yahoo Top100 → L0 准入 |
| PG-A-01 ~ PG-A-09 | 升级 L0→L2 | 观察池准入 |
| PG-B-01 ~ PG-B-09 | 升级 L2→L3 | 交易池准入 |
| PG-C | 升级 L3→20池 | 仅周报建议,人工确认 |
| HG-01 ~ HG-09 | 留存日检 | 每日检查,触发 warn 计数 |
| DG-IMM-01 ~ 10 | 即时清退 | 触发立即 → L4 |
| DG-CUM-01 ~ 10 | 累计清退 | 连续/累计阈值 → L4 或降级 |
| DG-PERM-01 ~ 03 | 永久清退 | 解禁需人工 |
| PM-1 ~ PM-6 | 继承OpenClaw | PM 风控铁律 |
B
数据源失败降级矩阵
Data Source Fallback Matrix
| 主源 / Primary | 降级 1 / Fallback 1 | 降级 2 / Fallback 2 | 终止条件 / Termination |
|---|---|---|---|
| Yahoo Most Active | Polygon /most_active | Tradier /markets/most-active | 三源全失败 → 沿用T-1 + 飞书告警All 3 fail → use T-1 + Feishu alert |
| IBKR 期权链 | Tradier 期权链 | Polygon options snapshot | 三源全失败 → 跳过期权指标计算All 3 fail → skip options metrics |
| EarningsWhispers | Yahoo Earnings Calendar | Polygon Reference API | 双源失败 → 财报字段标NA + 警示Both fail → earnings field = NA + warn |
| SEC EDGAR 8-K | EDGAR 备用接口 | RSS 订阅 | 失败 → 跳过当日 DG-IMM-07 检查Fail → skip DG-IMM-07 for the day |
| FRED 宏观日历 | 自维护 JSON 日历 | — | 自维护即兜底Self-maintained is the final fallback |