关于 kanchi-dividend-sop
kanchi-dividend-sop 是面向美国股票分红投资者的结构化筛选与买入流程,依据 Kanchi 五步法生成可审计的评估和交易计划。它强调分行业安全检查、数据新鲜度及未解决风险的保守处理。
主要功能
- 01Kanchi 五步筛选流程
- 02行业适配的派息安全评估
- 03股息数据新鲜度与陷阱检查
- 04结构性事件扫描及风险阻断
- 05生成评估备忘录和分批计划
适用场景
- 01按收益目标筛选美国分红股票
- 02为候选股票制定回撤买入条件
- 03记录估值依据及投资论点失效条件
- 04将筛选结果交接给监控或税务流程
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tradermonty/ claude-trading-skills --skill kanchi-dividend-sop安装后在 Claude Code 中输入/kanchi-dividend-sop确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
requirements.txtagents/openai.yamlreferences/default-thresholds.mdsector-step2-modules.mdstock-note-template.mdvaluation-and-one-off-checks.mdscripts/build_entry_signals.pybuild_sop_plan.pydividend_basis.pyevent_scanner.pyfmp_client.pypayout_safety.pythresholds.pyverdict.pyscripts/tests/conftest.pytest_build_entry_signals.pytest_build_sop_plan.pytest_dividend_basis.pytest_event_scanner.pytest_fifth_review_fixes.pytest_golden_p0_sector.pytest_golden_p0.pytest_payout_safety.pytest_seventh_review_fixes.pytest_shared_fmp_transport.pytest_sixth_review_fixes.pytest_verdict.py详细介绍
Kanchi 股息 SOP
概述
将 Kanchi 的 5 步方法实现为面向美国股息投资的确定性工作流。 优先考虑安全性和可重复性,而非激进追逐高收益。
适用场景
在用户需要以下内容时使用此技能:
- 适用于美国股票的 Kanchi 风格股息选股。
- 可重复的筛选和回调入场流程,而不是临时挑选股票。
- 明确列出失效条件的一页式承销备忘录。
- 用于监控和税务/账户定位工作流的交接材料包。
前提条件
API 密钥设置
入场信号脚本需要 FMP API 访问权限:
export FMP_API_KEY=your_api_key_here
输入来源
运行工作流前,请准备以下一种输入:
skills/value-dividend-screener/scripts/screen_dividend_stocks.py的输出。skills/dividend-growth-pullback-screener/scripts/screen_dividend_growth_rsi.py的输出。- 用户提供的股票代码列表(券商导出或手动列表)。
预期的 JSON 输入格式
使用 --input 时,请提供以下任一格式的 JSON:
{
"profile": "balanced",
"candidates": [
{"ticker": "JNJ", "bucket": "core"},
{"ticker": "O", "bucket": "satellite"}
]
}
或简化格式:
{
"tickers": ["JNJ", "PG", "KO"]
}
可选的 value-dividend-screener 和
dividend-growth-pullback-screener 交接数据使用 stocks[].symbol。
build_sop_plan.py --input 和 build_entry_signals.py --input
均可直接接受此格式,以及上述原生的 candidates[].ticker 和
tickers[] 格式。
为确定性生成产物,请将股票代码提供给:
python3 skills/kanchi-dividend-sop/scripts/build_sop_plan.py \
--tickers "JNJ,PG,KO" \
--output-dir reports/
用于第 5 步入场时机产物。--yield-floor 为必填项——它是第 1 步的收益率门槛;若未提供,每一行都会安全回退至 STEP1-RECHECK
(没有任何一行能在未通过第 1 步的情况下进入 PASS 层级)。请传入 --profile /
--safety-bias 以设置 run_context,并传入 --events-json 进行第 4b 步扫描
(未提供时 ⇒ 每一行都视为 SKIPPED,且 TRIGGERED 股票会被限制在
HOLD-REVIEW——绝不会悄悄视为无异常):
python3 skills/kanchi-dividend-sop/scripts/build_entry_signals.py \
--tickers "JNJ,PG,KO" \
--alpha-pp 0.5 \
--yield-floor 3.0 \
--profile balanced --safety-bias medium \
--events-json reports/kanchi_events_2026-05-17.json \
--output-dir reports/
工作流
1) 筛选前先明确投资要求
首先收集并确定以下参数:
- 目标:当前现金收入还是股息增长。
- 持仓数量上限和单个持仓规模上限。
- 允许的投资工具:仅股票,还是也包括 REIT/BDC/ETF。
- 偏好的账户类型背景:应税账户还是类似 IRA 的账户。
加载 references/default-thresholds.md,并采用基准设置,除非用户另有指定。
2) 构建可投资范围
从偏重质量的范围开始:
- 核心组:长期股息增长型股票(例如 Dividend Aristocrats 风格的优质股票集)。
- 卫星组:高收益板块(公用事业、电信、REIT),单独划入风险组。
收集股票代码时,明确来源优先级:
skills/value-dividend-screener/scripts/screen_dividend_stocks.py的输出(FMP/FINVIZ)。skills/dividend-growth-pullback-screener/scripts/screen_dividend_growth_rsi.py的输出。- API 不可用时,使用用户提供的券商导出或手动股票代码列表。
继续之前,按组返回股票代码列表。
3)应用 Kanchi 第 1 步(收益率筛选并标记陷阱)
主要规则:
- 第 1 步收益率 = 常规远期收益率 =
latest_declared_regular dividend × cadence-implied frequency / price(WS-1dividend_basis.py)。 切勿使用profile.lastDividend/ TTM——它滞后于最新宣布的加息 (缺陷 D5),且会悄然包含特别股息(D4)。 - 仅对常规收益率应用个人资料设定的下限(当前收入型 4.0% / 均衡型 3.0% / 增长优先型 1.5%)。
陷阱与数据新鲜度控制(由 dividend_basis.py 自动生成):
special_dividend_flag→ 排除特别股息;报告常规收益率与 TTM 收益率。variable_policy_flag→FAIL(CALM 风格;不可作为收入基础)。cut_flag→FAIL;suspension_flag→FAIL。freeze_flag→HOLD-REVIEW(仅当安全状况良好且未受阻时,才在第 8 步综合评估中决定是否适用收入型现金奶牛例外)。- 数据新鲜度门槛:如果常规收益率处于下限的 ±0.20 个百分点范围内(
floor_borderline),且最新宣布的股息未经权威来源确认,则发出STEP1-RECHECK——绝不可直接判定为 FAIL(这是针对 CFR D5 的修复)。
4)应用 Kanchi 第 2 步(增长与安全性)——按行业分派
安全性判断因行业而异——统一采用 GAAP/FCF 三项指标,会误判银行
(FCF 毫无意义)和受监管公用事业公司(FCF 结构性为负)。
使用 references/sector-step2-modules.md;确定性分派由
scripts/payout_safety.py 执行。
- 始终计算派息率三项指标:GAAP-EPS 派息率、调整后 EPS 派息率、FCF 派息率。安全性结论采用调整后 EPS + FCF (消费品行业),或采用相应行业模块(银行 / 公用事业 / 保险公司)。
adjusted_eps_source = UNAVAILABLE⇒ 最高只能判为HOLD-REVIEW(故障安全; 绝不默默判定为 PASS)。- GAAP 与调整后 EPS 的差异 > 25% ⇒ 标记为第 4 步的一次性因素。
- 在 4 个季度内完成的并购,推定 GAAP EPS 已失真
⇒ 强制采用调整后路径,否则判为
HOLD-REVIEW(FITB/Comerica 典型案例)。 - 受监管公用事业公司:FCF 为负不自动判定为 FAIL——应依据 FFO/债务
- 获准 ROE + 费率审查 + 股权发行风险进行判断。
趋势好坏参半但并未恶化时,应归类为 HOLD-REVIEW,而非直接拒绝。
5)应用 Kanchi 第 3 步(估值),并按美国行业分类
使用 references/valuation-and-one-off-checks.md,并应用
行业特定的估值逻辑:
- 金融业:
PER x PBR可继续作为主要方法。 - REIT:使用
P/FFO或P/AFFO,而非普通的P/E。 - 轻资产行业:结合远期
P/E、P/FCF和历史区间。
始终报告每个股票代码所采用的估值方法。
6)应用 Kanchi 第 4 步(一次性事件筛选)
拒绝或降级近期利润依赖一次性影响的公司:
- 资产出售收益、诉讼和解、税务影响激增。
- 缺乏销售趋势支撑的利润率激增。
- 反复出现的“一次性/非经常性”调整。
为每项 FAIL 记录一行证据,确保可审计。
6b) 应用 Kanchi 步骤 4b(向前扫描结构性事件)
步骤 4 是回溯检查;步骤 4b 用于捕捉待处理/近期结构性事件(MKC-Unilever 漏检,D3)。对于每个保留下来的候选标的,使用来源层级进行 WebSearch + 发行方 IR/SEC 检查:发行方 IR → SEC 文件(8-K/10-Q/10-K/委托书/S-4)→ 交易所/公司演示文稿 → 可靠通讯社 → 金融门户(仅作次要来源)。将发现记录到经过筛选的事件 JSON 中,并通过 build_entry_signals.py --events-json 传入。
- 只有重大结构性事件才会将判定上限设为
HOLD-REVIEW(交易额 > 市值的 10%、股份发行 > 10–20%、杠杆率增加 0.5 倍 EBITDA、 控制权/上市地/总部变更、平等合并 / RMT / 分拆 / 大规模资产出售、 股息/评级/杠杆政策变更、行业特定的重要性,或滚动 24 个月 M&A > 市值的 15%)。小型附加收购只需作为 CAUTION 提示。 - 悲观上限:对于步骤 5 中状态为 TRIGGERED 的标的,若结果为
FAILED-DEGRADED/SKIPPED/NO_EVENT_FOUND⇒HOLD-REVIEW+ T1 BLOCKED。WebSearch 不可用(网页应用 / 离线)时也按相同方式处理——绝不静默跳过。CLEAN_CONFIRMED(已核查主要来源)比NO_EVENT_FOUND(仅完成搜索)更可靠。
7) 应用 Kanchi 步骤 5(按规则逢低买入)
以机械方式设定入场触发条件:
- 收益率触发条件:当前收益率高于 5 年平均收益率 + alpha(默认
+0.5pp)。 - 估值触发条件:达到目标倍数(
P/E、P/FFO或P/FCF)。
执行模式:
- 拆分订单:
40% -> 30% -> 30%。 - 下单前阻断条件:如果候选标的存在任何未解决的
pre_order_blockers[](来自 WS-1/2/3——可变/削减/暂停、调整后 EPS 不可用、GAAP/调整后数据差异、银行信贷、公用事业 FFO/债务、事件扫描失败/跳过、股息数据过期等),或者t1_blocked为 true,则第一笔必须被阻止或缩减为 ≤20% 的试探性仓位——不能按 40% 买入。 - 行业集群风险:当 ≥
SECTOR_CLUSTER_WARN_COUNT个同行业标的通过筛选时(例如许多小型银行共享同一个宏观贝塔),发出投资组合级别的CLUSTER-RISK警告。 - 每次进行未受阻止的加仓前,都必须进行一句话合理性检查:“投资论点是否仍然成立,还是出现了结构性破坏”。
8) 生成标准化输出
始终生成:
- 包含可执行判定等级的筛选表:
CLEAN-PASS、PASS-CAUTION、CONDITIONAL-PASS、HOLD-REVIEW、STEP1-RECHECK、FAIL(由verdict.py根据步骤 1 + 步骤 2 + 步骤 4b + 阻断条件综合生成)。每行都要包含证据。 - 一页式股票备忘录(使用
references/stock-note-template.md),其中包含每个代码对应的来源信息区块(价格/股息/派息率/事件来源、unresolved_blockers、evidence_refs[])。 - 限价订单计划,包含拆分仓位规模、阻断条件门槛和失效条件。
- 顶层 run_context(profile、yield_floor_pct、safety_bias、 universe_source、excluded_asset_types),确保 3% 筛选运行的结果不会被静默用于 4% 筛选运行。
输出
返回和/或生成:
- Markdown 格式的 SOP 筛选摘要。
- 基于
references/stock-note-template.md的承销备忘录集。 - 可选的计划文件,由
skills/kanchi-dividend-sop/scripts/build_sop_plan.py生成并存放在reports/。 - 可选的步骤 5 入场信号文件,由
skills/kanchi-dividend-sop/scripts/build_entry_signals.py生成并存放在reports/。
频率
至少按以下节奏进行:
- 每周(15 分钟):仅检查股息和业务新闻变化。
- 每月(30 分钟):重新运行筛选并更新订单价位。
- 每季度(60 分钟):结合最新文件/财报进行深入安全审查。
多技能交接
先运行此技能,然后移交输出:
- 移交给
kanchi-dividend-review-monitor,用于每日/每周/每季度异常检测。 - 移交给
kanchi-dividend-us-tax-accounting,用于账户配置和税务分类规划。
风险防护
- 未完成 Step 4、Step 4b 和安全检查前,不要盲目发出买入建议。
- 在验证股息覆盖质量前,不要将高收益率视为价值。
- Step 1 使用常规预期收益率,绝不使用特殊收益率或包含 TTM 的数据;收益率接近下限且未经确认 ⇒
STEP1-RECHECK,而不是 FAIL。 - 对处于 TRIGGERED 状态的标的,若事件扫描失败或被跳过 ⇒
HOLD-REVIEW,且 T1 受阻。绝不能悄悄跳过 Step 4b。 - 明确列出假设;若缺少
adjusted_eps/数据 ⇒ 安全失败处理为HOLD-REVIEW,绝不默默判定为 PASS。
资源
scripts/thresholds.py:所有 SOP 阈值及SCHEMA_VERSION(下游架构演进防护)的唯一真实来源。scripts/dividend_basis.py:WS-1 常规/特殊/浮动/冻结/削减股息 + 数据新鲜度关卡引擎(纯离线)。scripts/payout_safety.py:WS-2 按行业划分的 GAAP/调整后/FCF 派息率三项评估 + 已完成合并的关联。scripts/event_scanner.py:WS-3 独立的前瞻/近期公司行动扫描器 + 重要性关卡 + 保守上限。scripts/verdict.py:WS-5 可执行分级综合判断 + run_context + evidence_ref 辅助工具。scripts/build_entry_signals.py:编排器(Step 5 目标 + WS-1/2/3/5 集成)。标志:--yield-floor、--events-json、--profile、--safety-bias、--universe-source。scripts/build_sop_plan.py:确定性 SOP 计划框架生成器。scripts/tests/test_golden_p0.py:P0 合并关卡 — 针对 CALM/ORI/CMCSA/MKC/CFR/削减股息的端到端冻结判断(通过scripts/run_all_tests.sh运行)。references/default-thresholds.md:人类可读的阈值对照。references/sector-step2-modules.md:按行业划分的 Step 2 安全指标。references/valuation-and-one-off-checks.md:Step 3 估值 + Step 4 一次性事项检查。references/stock-note-template.md:单页备忘录 + 来源信息区块。
共享 FMP 客户端
FMP 数据访问使用随附生成的 scripts/fmp_client.py。现有 CLI 密钥/环境变量优先级、财务计算和成功输出结构均保持不变。迁移后的路径仅使用稳定端点;稳定请求被拒绝或失败时,不会回退到已弃用的 v3 URL。共享客户端会屏蔽原始密钥和 URL 编码后的密钥回显;遇到格式错误的 JSON 时重试一次;遇到 429 时等待 60 秒后重试一次,若再次触发速率限制则停止。使用 FINVIZ 时仍采用独立客户端。
Python 客户端保留 sleep_seconds、timeout 和 api_calls。现在,Sleep 会设置请求之间的最小间隔;统计会计入重试的 HTTP 响应。行情/简介检索仍按每个请求一个标的进行。