From tradermonty-claude-trading-skills
Converts Kanchi-style dividend investing into a repeatable US-stock operating procedure. Use for dividend screening, growth quality checks, pullback entry planning, and one-page stock memo creation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/tradermonty-claude-trading-skills:kanchi-dividend-sopThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Implement Kanchi's 5-step method as a deterministic workflow for US dividend investing.
agents/openai.yamlreferences/default-thresholds.mdreferences/sector-step2-modules.mdreferences/stock-note-template.mdreferences/valuation-and-one-off-checks.mdscripts/build_entry_signals.pyscripts/build_sop_plan.pyscripts/dividend_basis.pyscripts/event_scanner.pyscripts/payout_safety.pyscripts/tests/conftest.pyscripts/tests/test_build_entry_signals.pyscripts/tests/test_build_sop_plan.pyscripts/tests/test_dividend_basis.pyscripts/tests/test_event_scanner.pyscripts/tests/test_fifth_review_fixes.pyscripts/tests/test_golden_p0.pyscripts/tests/test_golden_p0_sector.pyscripts/tests/test_payout_safety.pyscripts/tests/test_seventh_review_fixes.pyImplement Kanchi's 5-step method as a deterministic workflow for US dividend investing. Prioritize safety and repeatability over aggressive yield chasing.
Use this skill when the user needs:
The entry signal script requires FMP API access:
export FMP_API_KEY=your_api_key_here
Prepare one of the following inputs before running the workflow:
skills/value-dividend-screener/scripts/screen_dividend_stocks.py.skills/dividend-growth-pullback-screener/scripts/screen_dividend_growth.py.When using --input, provide JSON in one of these formats:
{
"profile": "balanced",
"candidates": [
{"ticker": "JNJ", "bucket": "core"},
{"ticker": "O", "bucket": "satellite"}
]
}
Or simplified:
{
"tickers": ["JNJ", "PG", "KO"]
}
For deterministic artifact generation, provide tickers to:
python3 skills/kanchi-dividend-sop/scripts/build_sop_plan.py \
--tickers "JNJ,PG,KO" \
--output-dir reports/
For Step 5 entry timing artifacts. --yield-floor is mandatory — it is
the Step-1 yield gate; without it every row fail-safes to STEP1-RECHECK
(a row can never reach a PASS tier without Step 1). Pass --profile /
--safety-bias for run_context, and --events-json for the Step 4b scan
(absent ⇒ every row is treated as SKIPPED and a TRIGGERED name is capped
to HOLD-REVIEW — never silently clean):
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/
Collect and lock the parameters first:
Load references/default-thresholds.md and apply baseline
settings unless the user overrides.
Start with a quality-biased universe:
Use explicit source priority for ticker collection:
skills/value-dividend-screener/scripts/screen_dividend_stocks.py output (FMP/FINVIZ).skills/dividend-growth-pullback-screener/scripts/screen_dividend_growth_rsi.py output.Return a ticker list grouped by bucket before moving forward.
Primary rule:
latest_declared_regular dividend × cadence-implied frequency / price (WS-1 dividend_basis.py).
Never use profile.lastDividend / TTM — it lags the latest declared raise
(defect D5) and silently bundles specials (D4).Trap & freshness controls (machine-emitted by dividend_basis.py):
special_dividend_flag → exclude specials; report regular vs ttm yield.variable_policy_flag → FAIL (CALM-style; not an income base).cut_flag → FAIL; suspension_flag → FAIL.freeze_flag → HOLD-REVIEW (income cash-cow exception decided in
Step 8 synthesis only if safety is clean & unblocked).floor_borderline) and the latest declared dividend is not
confirmed from an authoritative source, emit STEP1-RECHECK — never a
hard FAIL (this is the CFR D5 fix).Safety is sector-specific — a uniform GAAP/FCF triad mis-judges banks
(FCF meaningless) and regulated utilities (FCF structurally negative).
Use references/sector-step2-modules.md; the deterministic dispatch is
scripts/payout_safety.py.
adjusted_eps_source = UNAVAILABLE ⇒ cap HOLD-REVIEW (fail-safe;
never a silent PASS).HOLD-REVIEW (FITB/Comerica golden case).When trend is mixed but not broken, classify as HOLD-REVIEW instead of
hard reject.
Use references/valuation-and-one-off-checks.md and apply
sector-specific valuation logic:
PER x PBR can remain primary.P/FFO or P/AFFO instead of plain P/E.P/E, P/FCF, and historical range.Always report which valuation method was used for each ticker.
Reject or downgrade names where recent profits rely on one-time effects:
Record one-line evidence for each FAIL to keep auditability.
Step 4 is backward-looking; Step 4b catches pending/recent structural
events (the MKC-Unilever miss, D3). For each surviving candidate, run a
WebSearch + issuer-IR/SEC check using the source hierarchy: issuer IR
→ SEC filing (8-K/10-Q/10-K/proxy/S-4) → exchange/company deck →
reputable wire → finance portals (secondary only). Record findings into a
curated events JSON and pass it via build_entry_signals.py --events-json.
HOLD-REVIEW
(tx > 10% mcap, share issuance > 10–20%, leverage +0.5x EBITDA,
control/listing/HQ change, merger-of-equals / RMT / spin-off / large
asset sale, dividend/rating/leverage-policy change, sector-specific
materiality, or rolling-24m cumulative M&A > 15% mcap). Minor bolt-ons
are a CAUTION note only.FAILED-DEGRADED / SKIPPED / NO_EVENT_FOUND
on a Step-5 TRIGGERED name ⇒ HOLD-REVIEW + T1 BLOCKED. WebSearch
unavailable (web app / offline) is treated the same — never a silent
skip. CLEAN_CONFIRMED (primary source checked) is stronger than
NO_EVENT_FOUND (search only).Set entry triggers mechanically:
+0.5pp).P/E, P/FFO, or P/FCF).Execution pattern:
40% -> 30% -> 30%.pre_order_blockers[] (from WS-1/2/3 — variable/cut/suspension,
adjusted-EPS-unavailable, GAAP/Adj divergence, bank credit, utility
FFO/debt, event-scan failed/skipped, stale dividend, …) OR
t1_blocked is true, the first tranche is blocked or downsized to a
≤20% tracking tranche — not 40%.SECTOR_CLUSTER_WARN_COUNT same-sector
names pass (e.g. many small banks share one macro beta), emit a
portfolio-level CLUSTER-RISK warning.Always produce:
CLEAN-PASS,
PASS-CAUTION, CONDITIONAL-PASS, HOLD-REVIEW, STEP1-RECHECK,
FAIL (synthesized by verdict.py from Step 1 + Step 2 + Step 4b +
blockers). Include evidence per row.references/stock-note-template.md) with the
per-ticker provenance block (price/dividend/payout/event sources,
unresolved_blockers, evidence_refs[]).Return and/or generate:
references/stock-note-template.md.skills/kanchi-dividend-sop/scripts/build_sop_plan.py in reports/.skills/kanchi-dividend-sop/scripts/build_entry_signals.py in reports/.Use this minimum rhythm:
Run this skill first, then hand off outputs:
kanchi-dividend-review-monitor for daily/weekly/quarterly anomaly detection.kanchi-dividend-us-tax-accounting for account-location and tax classification planning.STEP1-RECHECK, not FAIL.HOLD-REVIEW + T1
blocked. Never silently skip Step 4b.adjusted_eps/data missing ⇒ fail-safe
HOLD-REVIEW, never silent PASS.scripts/thresholds.py: single source of truth for all SOP
thresholds + SCHEMA_VERSION (downstream schema-evolution guard).scripts/dividend_basis.py: WS-1 regular/special/variable/freeze/cut +
Data Freshness Gate engine (pure, offline).scripts/payout_safety.py: WS-2 sector-aware GAAP/Adjusted/FCF payout
triad + completed-merger linkage.scripts/event_scanner.py: WS-3 isolated forward/recent corporate-action
scanner + materiality gate + pessimistic cap.scripts/verdict.py: WS-5 actionable-tier synthesis + run_context +
evidence_ref helpers.scripts/build_entry_signals.py: orchestrator (Step 5 targets + WS-1/2/3/5
integration). Flags: --yield-floor, --events-json, --profile,
--safety-bias, --universe-source.scripts/build_sop_plan.py: deterministic SOP plan scaffold generator.scripts/tests/test_golden_p0.py: P0 merge gate — end-to-end frozen
verdicts for CALM/ORI/CMCSA/MKC/CFR/cut (run via scripts/run_all_tests.sh).references/default-thresholds.md: human-readable threshold mirror.references/sector-step2-modules.md: Step 2 safety indicators by sector.references/valuation-and-one-off-checks.md: Step 3 valuation + Step 4 one-off.references/stock-note-template.md: one-page memo + provenance block.npx claudepluginhub joshuarweaver/cascade-business-ops --plugin tradermonty-claude-trading-skillsGuides users through building a dividend investing strategy—clarifying income needs, evaluating yield vs growth, and screening for dividend sustainability.
Screens US stocks for high-quality dividend opportunities using value criteria (P/E < 20, P/B < 2), yield ≥ 3%, and consistent growth over 3 years. Supports efficient two-stage screening via FINVIZ Elite and FMP APIs.
Analyzes capital allocation quality for US-listed stocks and REITs: dividend safety, buyback discipline, M&A track record, debt management, and FCF deployment. Includes sector-specific payout thresholds and a weighted dividend safety score.