mcpField
K
kanchi-dividend-sop

kanchi-dividend-sop

github.com/tradermonty其他3.4k3.2k 次安装2 天前更新
代码仓库

关于 kanchi-dividend-sop

kanchi-dividend-sop 是面向美国股票分红投资者的结构化筛选与买入流程,依据 Kanchi 五步法生成可审计的评估和交易计划。它强调分行业安全检查、数据新鲜度及未解决风险的保守处理。

主要功能

  1. 01Kanchi 五步筛选流程
  2. 02行业适配的派息安全评估
  3. 03股息数据新鲜度与陷阱检查
  4. 04结构性事件扫描及风险阻断
  5. 05生成评估备忘录和分批计划

适用场景

  1. 01按收益目标筛选美国分红股票
  2. 02为候选股票制定回撤买入条件
  3. 03记录估值依据及投资论点失效条件
  4. 04将筛选结果交接给监控或税务流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tradermonty/claude-trading-skills --skill kanchi-dividend-sop

安装后在 Claude Code 中输入/kanchi-dividend-sop确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

requirements.txt
agents/
openai.yaml
references/
default-thresholds.md
sector-step2-modules.md
stock-note-template.md
valuation-and-one-off-checks.md
scripts/
build_entry_signals.py
build_sop_plan.py
dividend_basis.py
event_scanner.py
fmp_client.py
payout_safety.py
thresholds.py
verdict.py
scripts/tests/
conftest.py
test_build_entry_signals.py
test_build_sop_plan.py
test_dividend_basis.py
test_event_scanner.py
test_fifth_review_fixes.py
test_golden_p0_sector.py
test_golden_p0.py
test_payout_safety.py
test_seventh_review_fixes.py
test_shared_fmp_transport.py
test_sixth_review_fixes.py
test_verdict.py

详细介绍

Kanchi 股息 SOP

概述

将 Kanchi 的 5 步方法实现为面向美国股息投资的确定性工作流。 优先考虑安全性和可重复性,而非激进追逐高收益。

适用场景

在用户需要以下内容时使用此技能:

  • 适用于美国股票的 Kanchi 风格股息选股。
  • 可重复的筛选和回调入场流程,而不是临时挑选股票。
  • 明确列出失效条件的一页式承销备忘录。
  • 用于监控和税务/账户定位工作流的交接材料包。

前提条件

API 密钥设置

入场信号脚本需要 FMP API 访问权限:

export FMP_API_KEY=your_api_key_here
输入来源

运行工作流前,请准备以下一种输入:

  1. skills/value-dividend-screener/scripts/screen_dividend_stocks.py 的输出。
  2. skills/dividend-growth-pullback-screener/scripts/screen_dividend_growth_rsi.py 的输出。
  3. 用户提供的股票代码列表(券商导出或手动列表)。
预期的 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),单独划入风险组。

收集股票代码时,明确来源优先级:

  1. skills/value-dividend-screener/scripts/screen_dividend_stocks.py 的输出(FMP/FINVIZ)。
  2. skills/dividend-growth-pullback-screener/scripts/screen_dividend_growth_rsi.py 的输出。
  3. API 不可用时,使用用户提供的券商导出或手动股票代码列表。

继续之前,按组返回股票代码列表。

3)应用 Kanchi 第 1 步(收益率筛选并标记陷阱)

主要规则:

  • 第 1 步收益率 = 常规远期收益率 = latest_declared_regular dividend × cadence-implied frequency / price(WS-1 dividend_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) 生成标准化输出

始终生成:

  1. 包含可执行判定等级的筛选表:CLEAN-PASS、 PASS-CAUTION、CONDITIONAL-PASS、HOLD-REVIEW、STEP1-RECHECK、 FAIL(由 verdict.py 根据步骤 1 + 步骤 2 + 步骤 4b + 阻断条件综合生成)。每行都要包含证据。
  2. 一页式股票备忘录(使用 references/stock-note-template.md),其中包含每个代码对应的来源信息区块(价格/股息/派息率/事件来源、 unresolved_blockers、evidence_refs[])。
  3. 限价订单计划,包含拆分仓位规模、阻断条件门槛和失效条件。
  4. 顶层 run_context(profile、yield_floor_pct、safety_bias、 universe_source、excluded_asset_types),确保 3% 筛选运行的结果不会被静默用于 4% 筛选运行。

输出

返回和/或生成:

  1. Markdown 格式的 SOP 筛选摘要。
  2. 基于 references/stock-note-template.md 的承销备忘录集。
  3. 可选的计划文件,由 skills/kanchi-dividend-sop/scripts/build_sop_plan.py 生成并存放在 reports/。
  4. 可选的步骤 5 入场信号文件,由 skills/kanchi-dividend-sop/scripts/build_entry_signals.py 生成并存放在 reports/。

频率

至少按以下节奏进行:

  • 每周(15 分钟):仅检查股息和业务新闻变化。
  • 每月(30 分钟):重新运行筛选并更新订单价位。
  • 每季度(60 分钟):结合最新文件/财报进行深入安全审查。

多技能交接

先运行此技能,然后移交输出:

  1. 移交给 kanchi-dividend-review-monitor,用于每日/每周/每季度异常检测。
  2. 移交给 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 响应。行情/简介检索仍按每个请求一个标的进行。

评论

支持 Markdown