Workflows

This page is auto-generated by scripts/generate_workflow_docs.py. Do not edit by hand.

Operational workflow manifests for the solo-trader OS. Each workflow names the exact skills, decision gates, and artifacts in order. Manifests in workflows/ are the canonical definition; this page is auto-generated from them.


Available workflows

Workflow Cadence Est. min API profile Difficulty
core-portfolio-weekly — Core Portfolio Weekly weekly 60 mixed beginner
kanchi-dividend-weekly — Kanchi Dividend Weekly weekly 60 mixed intermediate
market-regime-daily — Market Regime Daily daily 15 no-api-basic beginner
monthly-performance-review — Monthly Performance Review monthly 90 no-api-basic intermediate
multi-asset-opportunity-daily — Multi-Asset Opportunity Daily daily 45 mixed intermediate
shapiro-contrarian — Shapiro COT Contrarian weekly 60 fmp-required advanced
stockbee-20pct-study-daily — Stockbee 20% Study Daily daily 30 mixed advanced
stockbee-ep-daily — Stockbee EP Daily daily 40 mixed advanced
stockbee-fluency-loop — Stockbee Setup Fluency Loop daily 20 no-api-basic intermediate
swing-opportunity-daily — Swing Opportunity Daily daily 40 fmp-required intermediate
trade-memory-loop — Trade Memory Loop ad-hoc 30 no-api-basic beginner

Core Portfolio Weekly

core-portfolio-weekly · weekly · ~60 min · mixed · beginner

When to run: Once per week, typically on Saturday or Sunday before next week’s market open. Reviews long-term holdings, dividend positions, and overall allocation.

When NOT to run: Do not run as a daily routine. Daily portfolio churn defeats the long-term framing of this workflow.

Required skills: portfolio-manager, trader-memory-core

Optional skills: kanchi-dividend-review-monitor, value-dividend-screener, kanchi-dividend-us-tax-accounting

Artifacts:

Artifact Produced by step Required Downstream hints
holdings_snapshot 1 yes monthly-performance-review
allocation_report 2 yes
dividend_review_findings 3 no
rebalance_actions 4 yes
weekly_journal_entry 5 yes

Steps:

Step 1: Fetch holdings snapshotportfolio-manager

  • produces: holdings_snapshot

Step 2: Review allocation and concentration (decision gate) → portfolio-manager

  • consumes: holdings_snapshot
  • produces: allocation_report
  • Decision: Are sector and single-name concentrations within target bands? If not, what specific reallocation does the trader propose?

Step 3: Check dividend health (T1-T5 anomaly check) (optional) → kanchi-dividend-review-monitor

  • consumes: holdings_snapshot
  • produces: dividend_review_findings

Step 4: Decide rebalance actions (decision gate) → portfolio-manager

  • consumes: allocation_report, dividend_review_findings
  • produces: rebalance_actions
  • Decision: Which rebalance actions (if any) will be executed next week? Confirm explicit buy / sell / hold list with sizing.

Step 5: Journal the weekly reviewtrader-memory-core

  • consumes: rebalance_actions
  • produces: weekly_journal_entry

Manual review:

  • Confirm holdings snapshot reflects the actual brokerage state (Alpaca or CSV).
  • Confirm rebalance actions are entered manually at the broker, not auto-executed.
  • If dividend_review_findings flags T1-T5 issues, defer additional buys until resolved.

Journal destination: trader-memory-core


Kanchi Dividend Weekly

kanchi-dividend-weekly · weekly · ~60 min · mixed · intermediate

When to run: Weekly, to source and underwrite new US-listed dividend candidates using Kanchi’s 5-step method: screen for yield/quality, deep-dive the strongest names, and register a fully-documented candidate thesis before any entry. v1 covers US-listed dividend stocks only.

When NOT to run: Not for Japanese or other non-US-listed dividend stocks – this workflow neither covers nor implies support for them in v1. Not a claim that Kanchi-style screening is a profitable strategy; it is a disciplined candidate-sourcing routine, not a signal to buy. Not for maintaining an existing holding – that is core-portfolio-weekly’s job (this workflow is for finding and underwriting NEW candidates). No order is ever placed automatically; every buy is entered manually at the broker.

Required skills: kanchi-dividend-sop, trader-memory-core

Optional skills: value-dividend-screener, dividend-growth-pullback-screener, kanchi-dividend-us-tax-accounting, kanchi-dividend-review-monitor

Prerequisite workflows (informational):

  • core-portfolio-weekly expects holdings_snapshot — Use its live holdings as the source when optional tax or review-monitor checks are requested. Normalize that snapshot to each skill’s distinct manual input schema; skip steps 4-5 when no applicable input exists.

Manual input contracts:

Input Required Used by steps Schema reference Description
tax_holdings_input no 4 skills/kanchi-dividend-us-tax-accounting/references/input-schema.md Operator-supplied JSON with holdings[]. For a new candidate, provide a hypothetical intended account and leave hold_days_in_window absent so the result remains assumption-required rather than falsely confirmed.
review_monitor_input no 5 skills/kanchi-dividend-review-monitor/references/input-schema.md Normalized existing-holding JSON with dividend and risk evidence. This is not derivable from a candidate ticker alone; skip step 5 for a new, not-yet-held name without monitoring evidence.

Artifacts:

Artifact Produced by step Required Downstream hints
high_yield_candidates 1 no
pullback_candidates 2 no
kanchi_candidates 3 yes
stock_memo 3 yes
account_location_advice 4 no
review_queue 5 no
thesis_record 6 yes trade-memory-loop, monthly-performance-review

Steps:

Step 1: Screen for high-yield candidates (optional) → value-dividend-screener

  • produces: high_yield_candidates

Step 2: Screen for dividend-growth pullbacks (optional) → dividend-growth-pullback-screener

  • produces: pullback_candidates

Step 3: Run the Kanchi 5-step underwriting (decision gate) → kanchi-dividend-sop

  • consumes: high_yield_candidates, pullback_candidates
  • produces: kanchi_candidates, stock_memo
  • Decision: For each candidate, does the Kanchi verdict reach an actionable tier (CLEAN-PASS / PASS-CAUTION / CONDITIONAL-PASS)? A HOLD-REVIEW, STEP1-RECHECK, or FAIL verdict is fail-closed – it stops here, not forward to sizing or registration. Candidates may come from step 1/2 screeners (use if available) or a manually supplied ticker list – neither screener is required to run this step.

Step 4: Check US tax and account-location treatment (optional) → kanchi-dividend-us-tax-accounting

  • produces: account_location_advice

Step 5: Check existing-holding review triggers (optional) → kanchi-dividend-review-monitor

  • produces: review_queue

Step 6: Register the candidate thesis (decision gate) → trader-memory-core

  • consumes: kanchi_candidates, stock_memo, account_location_advice, review_queue
  • produces: thesis_record
  • Decision: For each actionable candidate, ingest the kanchi_candidates verdict as an IDEA thesis, then link the saved stock_memo file (and, if available, tax/account-location advice and any review-monitor flags) to it with thesis_store.link_report() so the fully-documented Kanchi memo is part of the auditable record, not just referenced in prose. Confirm no unresolved blockers, sizing, sector concentration, and tranche plan before entering an order. Never transition the thesis to ACTIVE until a real broker fill happens – this step only reaches IDEA / ENTRY_READY.

Manual review:

  • A HOLD-REVIEW, STEP1-RECHECK, or FAIL Kanchi verdict is fail-closed – it never advances to sizing or thesis registration.
  • The step-3 stock memo (references/stock-note-template.md in kanchi-dividend-sop, a hand-written one-pager) is not embedded in the kanchi_candidates JSON – save it to a file, then after the IDEA thesis is registered, call thesis_store.link_report(state_dir, thesis_id, "kanchi-dividend-sop", <memo_path>, date) to attach it. Without this call the thesis has no documented memo in its linked_reports, even though one was written.
  • No order is ever placed automatically, and the thesis never auto-transitions to ACTIVE; every fill is entered manually at the broker, then recorded with open-position.
  • Screeners (steps 1-2) are optional – a manually supplied ticker list is an equally valid path into step 3.
  • Tax and account-location advice (step 4) is advisory, not authoritative – verify with a tax professional or the actual broker/custodian statements before acting on it.
  • Step 4 requires tax_holdings_input matching the linked schema; do not pass raw screener rows directly as tax holdings.
  • If review-monitor (step 5) flags an existing holding WARN or REVIEW, that only pauses additional buys in that name – it never triggers an automatic sell.
  • Step 5 requires review_monitor_input matching its richer linked schema; a ticker-only candidate is insufficient and the optional step must be skipped rather than manufacturing missing evidence.
  • Screener outputs land under each skill’s own logs/ directory, not a shared reports/ path; treat artifact ids as logical references, not literal filenames, when wiring steps together.
  • Command examples for dividend-growth-pullback-screener must use screen_dividend_growth_rsi.pyscreen_dividend_growth.py does not exist in this repository.

Journal destination: trader-memory-core


Market Regime Daily

market-regime-daily · daily · ~15 min · no-api-basic · beginner

When to run: Before considering new swing-trade risk for the day. Run before market open or in the first 30 minutes after.

When NOT to run: Do not use this output as a standalone buy/sell signal. The exposure_decision is a posture (allow / restrict / cash-priority), not a directive.

Required skills: market-breadth-analyzer, uptrend-analyzer, exposure-coach

Optional skills: market-top-detector, macro-regime-detector

Artifacts:

Artifact Produced by step Required Downstream hints
market_breadth_report 1 yes swing-opportunity-daily, monthly-performance-review
uptrend_report 2 yes
top_risk_report 3 no
exposure_decision 4 yes swing-opportunity-daily

Steps:

Step 1: Analyze market breadthmarket-breadth-analyzer

  • produces: market_breadth_report

Step 2: Analyze uptrend participationuptrend-analyzer

  • produces: uptrend_report

Step 3: Check market top risk (optional) → market-top-detector

  • produces: top_risk_report

Step 4: Decide exposure posture (decision gate) → exposure-coach

  • consumes: market_breadth_report, uptrend_report, top_risk_report
  • produces: exposure_decision
  • Decision: Given today’s breadth, uptrend participation, and top risk, is new swing trade risk allowed, restricted, or cash-priority?

Manual review:

  • Confirm output is not used as a buy/sell signal.
  • Confirm whether exposure should be reduced, unchanged, or increased.
  • If exposure_decision is restrictive, defer running swing-opportunity-daily.

Journal destination: trader-memory-core


Monthly Performance Review

monthly-performance-review · monthly · ~90 min · no-api-basic · intermediate

When to run: First weekend of each month, reviewing the prior month’s closed positions, open thesis health, and process improvements. Closes the Plan -> Trade -> Record -> Review -> Improve loop.

When NOT to run: Do not skip this review even in losing months — that is when it matters most. Do not run weekly; the monthly cadence is intentional to filter noise.

Required skills: trader-memory-core, signal-postmortem

Optional skills: trade-performance-coach, backtest-expert, dual-axis-skill-reviewer

Artifacts:

Artifact Produced by step Required Downstream hints
monthly_aggregate 1 yes
aggregate_postmortem 2 yes
monthly_performance_coach_report 3 no
monthly_behavior_patterns 3 no
next_month_operating_rules 3 no
hypothesis_revalidation 4 no
skill_review_findings 5 no
monthly_decision_log 6 yes
rule_changes_for_next_month 6 yes
skill_improvement_backlog 6 no

Steps:

Step 1: Aggregate the month’s trades and thesestrader-memory-core

  • produces: monthly_aggregate

Step 2: Pattern-level postmortem across the month (decision gate) → signal-postmortem

  • consumes: monthly_aggregate
  • produces: aggregate_postmortem
  • Decision: What recurring patterns appear across the month’s outcomes? Classify by thesis quality, execution, market environment, and randomness.

Step 3: Coach monthly process, risk, and behavior patterns (optional) (decision gate) → trade-performance-coach

  • consumes: monthly_aggregate, aggregate_postmortem
  • produces: monthly_performance_coach_report, monthly_behavior_patterns, next_month_operating_rules
  • Decision: Which next-month operating rules should be accepted, modified, deferred, or journaled only?

Step 4: Re-validate hypotheses via backtest (optional) → backtest-expert

  • consumes: aggregate_postmortem
  • produces: hypothesis_revalidation

Step 5: Review which skills helped or hurt (optional) → dual-axis-skill-reviewer

  • consumes: aggregate_postmortem
  • produces: skill_review_findings

Step 6: Produce decision log and rule changes (decision gate) → trader-memory-core

  • consumes: aggregate_postmortem, hypothesis_revalidation, skill_review_findings
  • produces: monthly_decision_log, rule_changes_for_next_month, skill_improvement_backlog
  • Decision: Based on this month’s evidence, what specific rules will change next month? Trade-side rules vs repo-side improvements should stay separate.

Manual review:

  • Distinguish process improvements (rule changes) from outcome accidents (randomness).
  • Trade-side rule changes apply to the trader’s behavior next month.
  • Skill-side improvements are repo-improvement candidates and may or may not be acted on.
  • Be willing to delete or downgrade rules that aren’t working — not just add new ones.

Final outputs:

  • monthly_decision_log — What trades worked / what did not, by category
  • rule_changes_for_next_month — Adjustments to position sizing, entry rules, regime gates
  • skill_improvement_backlog — Optional feedback into repo improvement loop (skills / workflows)

Journal destination: trader-memory-core


Multi-Asset Opportunity Daily

multi-asset-opportunity-daily · daily · ~45 min · mixed · intermediate

When to run: Only after market-regime-daily has produced a non-restrictive exposure decision. Sweeps macro + themes + news to surface multi-asset ideas (equities, commodities-via-equity-proxies, options expressions) and synthesizes them into ranked hypothesis cards.

When NOT to run: Do not run when the latest market-regime-daily exposure_decision is cash-priority. Do not treat hypothesis cards as buy/sell signals — they carry manual_review_required and must pass human sign-off before any capital moves. Forex output is research-only; never feed it into a broker.

Required skills: macro-regime-detector, theme-detector, trade-hypothesis-ideator, position-sizer, trader-memory-core

Optional skills: market-news-analyst, market-environment-analysis, sector-analyst, scenario-analyzer, stanley-druckenmiller-investment

Prerequisite workflows (informational):

  • market-regime-daily expects exposure_decision — Multi-asset opportunity scanning requires a non-restrictive exposure posture. Skip on cash-priority days; reduce scope on restrict days.

Artifacts:

Artifact Produced by step Required Downstream hints
macro_regime_brief 1 yes swing-opportunity-daily, monthly-performance-review
hot_themes 2 yes swing-opportunity-daily
catalyst_news_brief 3 no
hypothesis_cards 4 yes swing-opportunity-daily, trade-memory-loop
sized_hypotheses 5 yes
opportunity_journal_entries 6 yes trade-memory-loop, monthly-performance-review

Steps:

Step 1: Refresh macro regime contextmacro-regime-detector

  • produces: macro_regime_brief

Step 2: Detect hot themes + sector rotationtheme-detector

  • consumes: macro_regime_brief
  • produces: hot_themes

Step 3: Scan news + catalyst landscape (optional) → market-news-analyst

  • consumes: hot_themes
  • produces: catalyst_news_brief

Step 4: Synthesize ranked hypothesis cards (decision gate) → trade-hypothesis-ideator

  • consumes: macro_regime_brief, hot_themes, catalyst_news_brief
  • produces: hypothesis_cards
  • Decision: For each hypothesis, does layer 1 (macro) align with layer 2 (theme) and is what-is-priced-in still favorable? Reject any card where the gap to consensus is unclear or already closed.

Step 5: Apply risk-based sizing to hypothesis cardsposition-sizer

  • consumes: hypothesis_cards
  • produces: sized_hypotheses

Step 6: Persist as IDEA / ENTRY_READY entries (decision gate) → trader-memory-core

  • consumes: hypothesis_cards, sized_hypotheses
  • produces: opportunity_journal_entries
  • Decision: Which hypotheses should be promoted from IDEA to ENTRY_READY, which stay as IDEA pending more confirmation, and which are rejected?

Manual review:

  • Confirm the regime brief does not contradict the exposure_decision from market-regime-daily.
  • Confirm each hypothesis has a written thesis AND a kill criterion.
  • Confirm position sizing respects portfolio risk caps (per-position and per-sector).
  • For forex-related output, confirm research_only=true; never wire to a broker.
  • Confirm IDEA → ENTRY_READY transitions are explicit and reviewed.

Journal destination: trader-memory-core


Shapiro COT Contrarian

shapiro-contrarian · weekly · ~60 min · fmp-required · advanced

When to run: Weekly, after the CFTC Commitment of Traders report publishes (Friday ~3:30pm ET, carrying Tuesday’s positioning). Screens roughly 65 futures markets for crowded speculative extremes and, only where a news-failure and a weekly price-action reversal both confirm, produces a contract-sized contrarian fade plan.

When NOT to run: Do not run intraday or more than weekly — COT data updates once a week and the edge is positioning-driven, not intraday. Do not act on a crowding extreme alone; the gate must reach READY_FOR_PLAN (crowding, news failure, and price action all CONFIRMED) before any sizing. Not for equities — COT covers CFTC futures markets only.

Required skills: cot-contrarian-detector, news-reaction-failure-analyzer, technical-analyst, contrarian-setup-gate, futures-position-sizer, trader-memory-core

Optional skills: (none)

Artifacts:

Artifact Produced by step Required Downstream hints
cot_crowding_report 1 yes
news_failure_verdict 2 yes
price_action_confirmation_report 3 yes
contrarian_setup_gate_report 4 yes
futures_position_size 5 yes
contrarian_thesis_entry 6 yes trade-memory-loop, monthly-performance-review

Steps:

Step 1: Screen COT crowding (decision gate) → cot-contrarian-detector

  • produces: cot_crowding_report
  • Decision: Which futures markets are at a 3-year COT-index crowding extreme (CROWDED_LONG / CROWDED_SHORT) this week? Crowding alone is not a signal — carry only the extremes forward.

Step 2: Check for news-reaction failure (decision gate) → news-reaction-failure-analyzer

  • consumes: cot_crowding_report
  • produces: news_failure_verdict
  • Decision: For each crowded market, did price fail to react to news favorable to the crowd’s direction (CONFIRMED, against a curated primary/wire-source events file built via WebSearch)? Drop NOT_CONFIRMED / INSUFFICIENT_EVIDENCE markets.

Step 3: Confirm weekly price-action reversal (decision gate) → technical-analyst

  • consumes: cot_crowding_report
  • produces: price_action_confirmation_report
  • Decision: On the weekly chart, is there a reversal against the crowd (key reversal, failed breakout, or failed extreme) — CONFIRMED — with a defined swing stop? Reject NOT_CONFIRMED / INSUFFICIENT_DATA.

Step 4: Synthesize the contrarian setup gate (decision gate) → contrarian-setup-gate

  • consumes: cot_crowding_report, news_failure_verdict, price_action_confirmation_report
  • produces: contrarian_setup_gate_report
  • Decision: Does the gate reach READY_FOR_PLAN (crowding, news failure, and price action all CONFIRMED, fail-closed)? Only READY_FOR_PLAN markets proceed to sizing; CROWDED / WATCHING_PRICE / REJECTED / INSUFFICIENT_EVIDENCE stop here.

Step 5: Size the futures positionfutures-position-sizer

  • consumes: contrarian_setup_gate_report
  • produces: futures_position_size

Step 6: Register the contrarian thesis (decision gate) → trader-memory-core

  • consumes: futures_position_size, contrarian_setup_gate_report
  • produces: contrarian_thesis_entry
  • Decision: Register each fade whose sizer output is sizing_status SIZED — never a NO_TRADE result — in this order: (1) create the IDEA thesis first (manual ingest or register() — attach-futures-position only attaches to an EXISTING thesis, it never creates one); (2) attach the SIZED report with attach-futures-position, which persists contracts / direction / multiplier / USD currency / risk onto the thesis position; (3) link the upstream cot_crowding_report, news_failure_verdict, price_action_confirmation_report, and contrarian_setup_gate_report to the thesis with thesis_store.link_report() so the fade’s full evidence chain is auditable; (4) only transition to ACTIVE with open-position once the order actually fills at the broker. Confirm per-trade risk matches the sizer output and total portfolio heat is within budget.

Manual review:

  • COT data is 3 days lagged (Tuesday snapshot, Friday release) — treat the crowding read as end-of-Tuesday, not live.
  • Crowding is a precondition, never a trade signal — require the news-failure AND price-action confirmations before sizing.
  • News-failure events must be curated from primary/wire sources with real URLs; do not fabricate. INSUFFICIENT_EVIDENCE never advances.
  • Confirm the gate setup_status is READY_FOR_PLAN before sizing; the sizer will refuse a non-READY gate, but verify the reason if it does.
  • Step 5 needs more than contrarian_setup_gate_report — the sizer’s –entry, –account-size, and –risk-pct are always operator-supplied, even in gate-handoff mode; neither the gate nor the sizer derives them, so gather these before invoking futures-position-sizer.
  • Verify the sizer’s contract count and per-contract risk before any order; confirm total portfolio heat is within budget.
  • Futures margin is broker/time-dependent and NOT computed — verify initial and maintenance margin with the broker before trading.
  • All orders are placed manually at the broker; no auto-execution. Monitoring (COT normalization, stop, thesis invalidation) is manual until contrarian-position-monitor ships.
  • The gate’s entry_trigger / sizer’s planned entry is not an actual fill. Keep the SIZED report itself (it carries the planned entry); a manual-ingest source also keeps entry_price in origin.raw_provenance.entry_price. Either way, never write it to entry.actual_price before a real fill happens.
  • Do not transition the thesis to ACTIVE (open-position) until the order actually fills at the broker. Step 6 only reaches IDEA/ENTRY_READY with the futures position attached — no order is ever placed automatically.

Journal destination: trader-memory-core


Stockbee 20% Study Daily

stockbee-20pct-study-daily · daily · ~30 min · mixed · advanced

When to run: Run after the US market close, or during historical research backfills, to identify +20%/-20% movers, classify event context, update matured outcomes, and accumulate a model book of explosive market moves.

When NOT to run: Do not use as a buy/sell signal workflow or automatic execution system. Do not promote new rules from small samples, current-only universes, or events without survivorship-bias and data-quality notes.

Required skills: stockbee-20pct-study

Optional skills: trader-memory-core, edge-candidate-agent, edge-hint-extractor, stockbee-episodic-pivot-analyzer, theme-detector, backtest-expert

Artifacts:

Artifact Produced by step Required Downstream hints
twenty_pct_mover_events 1 yes
classified_event_study 2 yes
matured_event_outcomes 3 yes
twenty_pct_cohort_summary 4 yes monthly-performance-review
edge_hints_yaml 4 no monthly-performance-review
accepted_lessons_log 5 no monthly-performance-review

Steps:

Step 1: Scan daily +20% and -20% moversstockbee-20pct-study

  • produces: twenty_pct_mover_events

Step 2: Classify catalyst, chart context, theme cluster, and risk flagsstockbee-20pct-study

  • consumes: twenty_pct_mover_events
  • produces: classified_event_study

Step 3: Update matured forward outcomes for prior 20% study recordsstockbee-20pct-study

  • consumes: classified_event_study
  • produces: matured_event_outcomes

Step 4: Summarize cohorts and export edge hints (decision gate) → stockbee-20pct-study

  • consumes: matured_event_outcomes
  • produces: twenty_pct_cohort_summary, edge_hints_yaml
  • Decision: Which 20% mover patterns have enough sample size, stable outcome behavior, and execution realism to promote into edge research rather than journal-only observation?

Step 5: Log accepted lessons (optional) (decision gate) → trader-memory-core

  • consumes: twenty_pct_cohort_summary, edge_hints_yaml
  • produces: accepted_lessons_log
  • Decision: Which findings are accepted as operating-rule candidates, which are rejected, and which remain pending more examples?

Manual review:

  • Inspect representative winner and failure charts before accepting any pattern.
  • Separate observation, research hypothesis, and executable trade plan.
  • Mark current-universe backfills as survivorship-biased unless delisted symbols are included.
  • Require explicit sample-size thresholds before promoting a cohort rule.
  • Feed accepted lessons into monthly-performance-review rather than changing rules ad hoc.

Journal destination: trader-memory-core


Stockbee EP Daily

stockbee-ep-daily · daily · ~40 min · mixed · advanced

When to run: Run on earnings/news-heavy days after the market-regime workflow allows new risk, or ad hoc when a game-changing catalyst appears. Use this workflow to classify Day 1 Episodic Pivot candidates and decide whether they are actionable today, delayed-EP watchlist names, or PEAD handoff candidates.

When NOT to run: Do not run as a blind stock screener without catalyst inputs. Do not use it to bypass market-regime gates, chart validation, position sizing, or manual catalyst review.

Required skills: drawdown-circuit-breaker, stockbee-episodic-pivot-analyzer, technical-analyst, position-sizer, trader-memory-core, pre-trade-discipline-gate

Optional skills: earnings-trade-analyzer, stockbee-momentum-burst-screener, pead-screener, theme-detector, breakout-trade-planner

Prerequisite workflows (informational):

  • market-regime-daily expects exposure_decision — New EP trades should still respect the market-regime exposure gate.

Artifacts:

Artifact Produced by step Required Downstream hints
circuit_breaker_decision 1 yes
earnings_candidates 2 no
momentum_burst_candidates 3 no
episodic_pivot_candidates 4 yes
pead_handoff_candidates 4 no swing-opportunity-daily
delayed_ep_watchlist 4 no
validated_ep_setups 5 yes
ep_position_sizing 6 yes
ep_trade_plan 7 no
ep_journal_entry 8 yes trade-memory-loop
pre_trade_discipline_decision 9 yes

Steps:

Step 1: Check account circuit breaker (decision gate) → drawdown-circuit-breaker

  • produces: circuit_breaker_decision
  • Decision: Is the account circuit breaker clear (TRADING_ALLOWED) for new EP trade risk today?

Step 2: Optional earnings candidate scan (optional) → earnings-trade-analyzer

  • produces: earnings_candidates

Step 3: Optional momentum confirmation scan (optional) → stockbee-momentum-burst-screener

  • produces: momentum_burst_candidates

Step 4: Analyze Day 1 Episodic Pivot candidates (decision gate) → stockbee-episodic-pivot-analyzer

  • consumes: earnings_candidates, momentum_burst_candidates
  • produces: episodic_pivot_candidates, pead_handoff_candidates, delayed_ep_watchlist
  • Decision: Which candidates have a true game-changing catalyst plus price/volume confirmation? Separate ACTIONABLE_DAY1 from DELAYED_EP_WATCH and reject low-quality headline-only moves.

Step 5: Validate EP chart quality (decision gate) → technical-analyst

  • consumes: episodic_pivot_candidates
  • produces: validated_ep_setups
  • Decision: Does the chart confirm a clean EP reaction with acceptable close quality, liquidity, and risk to the EP-day low?

Step 6: Calculate EP position sizeposition-sizer

  • consumes: validated_ep_setups
  • produces: ep_position_sizing

Step 7: Build optional EP trade plan (optional) → breakout-trade-planner

  • consumes: validated_ep_setups, ep_position_sizing
  • produces: ep_trade_plan

Step 8: Register EP thesis or watchlist entry (decision gate) → trader-memory-core

  • consumes: validated_ep_setups, ep_position_sizing, ep_trade_plan
  • produces: ep_journal_entry
  • Decision: Which candidates deserve an active thesis, which belong on delayed EP / PEAD watch, and which should be ignored despite a high initial score?

Step 9: Run EP manual execution discipline gate (decision gate) → pre-trade-discipline-gate

  • consumes: circuit_breaker_decision, ep_journal_entry, ep_position_sizing, ep_trade_plan
  • produces: pre_trade_discipline_decision
  • Decision: Before placing any manual broker order, do ACTIONABLE_DAY1 or ENTRY_READY EP candidates pass the written-plan, predefined-stop, position-size, recent-loss, market-regime, and circuit-breaker discipline checks? Treat delayed EP, PEAD handoff, ignored, or rejected candidates as no-action journal entries, not order approvals.

Manual review:

  • Confirm market-regime-daily allows new risk before acting.
  • Confirm circuit_breaker_decision is TRADING_ALLOWED before analyzing new EP trade risk.
  • Verify the catalyst manually; this workflow does not discover or validate news truth by itself.
  • Treat analyst-only and story-only EPs as lower quality unless price/volume confirmation is exceptional.
  • Use EP-day low as the default stop reference only if the distance is realistically sizeable.
  • Send overextended earnings/guidance EPs to PEAD monitoring instead of chasing Day 1.
  • Confirm pre_trade_discipline_decision is GO before placing any manual broker order; watchlist and PEAD handoff candidates should not be treated as order approvals.
  • All orders are placed manually at the broker; no auto-execution.

Journal destination: trader-memory-core


Stockbee Setup Fluency Loop

stockbee-fluency-loop · daily · ~20 min · no-api-basic · intermediate

When to run: After stockbee-momentum-burst-screener produces candidate reports, and again after 3/5 trading-day windows have matured. Builds a model book of Stockbee Momentum Burst examples so the trader can improve setup recognition.

When NOT to run: Do not use as an execution workflow or signal service. Do not change trading rules from tiny samples; require enough matured examples and manual chart review before promoting or filtering a setup tag.

Required skills: stockbee-setup-fluency-trainer

Optional skills: trader-memory-core, signal-postmortem, backtest-expert

Artifacts:

Artifact Produced by step Required Downstream hints
model_book_ingest 1 yes
matured_setup_outcomes 2 yes
setup_fluency_summary 3 yes monthly-performance-review
rule_candidates 3 no monthly-performance-review
accepted_lessons_log 4 no monthly-performance-review

Steps:

Step 1: Ingest latest Stockbee momentum burst candidatesstockbee-setup-fluency-trainer

  • produces: model_book_ingest

Step 2: Update matured 3-day and 5-day outcomesstockbee-setup-fluency-trainer

  • consumes: model_book_ingest
  • produces: matured_setup_outcomes

Step 3: Summarize setup cohorts and rule candidates (decision gate) → stockbee-setup-fluency-trainer

  • consumes: matured_setup_outcomes
  • produces: setup_fluency_summary, rule_candidates
  • Decision: Which setup tags have enough matured examples to promote, downgrade, or continue monitoring? Require representative chart review before changing trade rules.

Step 4: Log accepted lessons (optional) (decision gate) → trader-memory-core

  • consumes: setup_fluency_summary, rule_candidates
  • produces: accepted_lessons_log
  • Decision: Which findings are accepted as operating-rule changes, and which remain journal-only observations pending more examples?

Manual review:

  • Inspect representative winner and failure charts before accepting a rule change.
  • Separate evidence from execution decisions; this workflow records setup behavior, not actual P&L.
  • Keep sample-size thresholds explicit, especially when market regime changes.
  • Feed accepted lessons into monthly-performance-review rather than adding ad-hoc rules daily.

Journal destination: trader-memory-core


Swing Opportunity Daily

swing-opportunity-daily · daily · ~40 min · fmp-required · intermediate

When to run: Only after market-regime-daily has produced a non-restrictive exposure decision. Identifies swing trade candidates and builds entry plans.

When NOT to run: Do not run when the latest market-regime-daily exposure_decision is cash-priority or restrictive. Do not use as a standalone screener without the regime gate.

Required skills: vcp-screener, drawdown-circuit-breaker, technical-analyst, position-sizer, trader-memory-core, pre-trade-discipline-gate

Optional skills: stockbee-momentum-burst-screener, stockbee-exhaustion-hammer-screener, canslim-screener, breakout-trade-planner, theme-detector

Prerequisite workflows (informational):

  • market-regime-daily expects exposure_decision — New swing trade risk requires a non-restrictive exposure decision. Skip this workflow on cash-priority or restrictive days.

Artifacts:

Artifact Produced by step Required Downstream hints
circuit_breaker_decision 1 yes
vcp_candidates 2 yes
momentum_burst_candidates 3 no
exhaustion_hammer_candidates 4 no
canslim_candidates 5 no
theme_candidates 6 no
validated_setups 7 yes
position_sizing 8 yes
trade_plans 9 no trade-memory-loop
candidate_journal_entry 10 yes trade-memory-loop
pre_trade_discipline_decision 11 yes

Steps:

Step 1: Check account circuit breaker (decision gate) → drawdown-circuit-breaker

  • produces: circuit_breaker_decision
  • Decision: Is the account circuit breaker clear (TRADING_ALLOWED) for new trade risk today?

Step 2: Run VCP screenervcp-screener

  • produces: vcp_candidates

Step 3: Run Stockbee momentum burst screener (optional) → stockbee-momentum-burst-screener

  • produces: momentum_burst_candidates

Step 4: Run Stockbee exhaustion hammer screener (optional) → stockbee-exhaustion-hammer-screener

  • produces: exhaustion_hammer_candidates

Step 5: Run CANSLIM screener (optional) → canslim-screener

  • produces: canslim_candidates

Step 6: Theme detection cross-check (optional) → theme-detector

  • produces: theme_candidates

Step 7: Validate setups on weekly chart (decision gate) → technical-analyst

  • consumes: vcp_candidates, momentum_burst_candidates, exhaustion_hammer_candidates, canslim_candidates, theme_candidates
  • produces: validated_setups
  • Decision: Which candidates have a clean weekly setup (Stage 2 uptrend, tight base, or Stockbee-style range expansion from a controlled base) and pass the manual chart review? For exhaustion hammers, confirm the pullback is not thesis-breaking and risk to the day low is acceptable. Reject candidates that don’t pass.

Step 8: Calculate position sizeposition-sizer

  • consumes: validated_setups
  • produces: position_sizing

Step 9: Build entry plan (optional) → breakout-trade-planner

  • consumes: validated_setups, position_sizing
  • produces: trade_plans

Step 10: Register thesis in journal (decision gate) → trader-memory-core

  • consumes: position_sizing, trade_plans
  • produces: candidate_journal_entry
  • Decision: For each candidate that survived validation, register the thesis with entry / stop / target. Confirm risk per trade matches position-sizer output and total portfolio heat is within budget.

Step 11: Run manual execution discipline gate (decision gate) → pre-trade-discipline-gate

  • consumes: candidate_journal_entry, position_sizing, trade_plans, circuit_breaker_decision
  • produces: pre_trade_discipline_decision
  • Decision: Before placing any manual broker order, does each actionable candidate pass the written-plan, predefined-stop, position-size, recent-loss, market-regime, and circuit-breaker discipline checks?

Manual review:

  • Confirm market-regime-daily exposure_decision allows new risk before acting.
  • Confirm circuit_breaker_decision is TRADING_ALLOWED before screening or sizing new candidates.
  • Reject any candidate where weekly setup is unclear, even if screener passed.
  • Treat Stockbee momentum burst output as candidate generation only; require chart validation and risk-distance review.
  • Treat Stockbee exhaustion hammer output as candidate generation only; confirm the pullback is not caused by a thesis-breaking news event and verify risk to the day low.
  • Verify total portfolio heat is within budget before placing any order.
  • Confirm pre_trade_discipline_decision is GO before placing any manual broker order.
  • All orders are placed manually at the broker; no auto-execution.

Journal destination: trader-memory-core


Trade Memory Loop

trade-memory-loop · ad-hoc · ~30 min · no-api-basic · beginner

When to run: Every time a position is closed (full or partial exit). Records the outcome, generates a postmortem, (optionally) coaches process / risk / execution / behavior patterns, and (optionally) re-validates the original hypothesis via backtest.

When NOT to run: Do not run before a position is closed — use trader-memory-core directly to update an open thesis instead. Do not skip this loop after a closed trade, even on winners.

Required skills: trader-memory-core, signal-postmortem

Optional skills: trade-performance-coach, backtest-expert

Artifacts:

Artifact Produced by step Required Downstream hints
closed_thesis_record 1 yes
postmortem_findings 2 yes monthly-performance-review
performance_coach_report 3 no monthly-performance-review
next_session_operating_rules 3 no monthly-performance-review
backtest_validation 4 no
lessons_log_entry 5 yes monthly-performance-review

Steps:

Step 1: Record closed trade outcometrader-memory-core

  • produces: closed_thesis_record

Step 2: Generate postmortem (decision gate) → signal-postmortem

  • consumes: closed_thesis_record
  • produces: postmortem_findings
  • Decision: What was the root cause of the outcome — thesis quality, execution, market environment, or randomness? Classify and document.

Step 3: Coach process, risk, and behavior patterns (optional) (decision gate) → trade-performance-coach

  • consumes: closed_thesis_record, postmortem_findings
  • produces: performance_coach_report, next_session_operating_rules
  • Decision: Which next-session operating rules should the trader accept, modify, defer, or journal only?

Step 4: Re-validate hypothesis via backtest (optional) → backtest-expert

  • consumes: postmortem_findings
  • produces: backtest_validation

Step 5: Append lessons to journaltrader-memory-core

  • consumes: postmortem_findings, backtest_validation
  • produces: lessons_log_entry

Manual review:

  • Be honest about whether the win was thesis-driven or lucky.
  • Be honest about whether the loss was thesis-flawed or executed poorly.
  • Don’t rationalize randomness as either skill or failure.

Journal destination: trader-memory-core