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 |
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 |
swing-opportunity-daily — Swing Opportunity Daily |
daily | 30 | 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 snapshot → portfolio-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 review → trader-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
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 breadth → market-breadth-analyzer
- produces:
market_breadth_report
Step 2: Analyze uptrend participation → uptrend-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 theses → trader-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 categoryrule_changes_for_next_month— Adjustments to position sizing, entry rules, regime gatesskill_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-dailyexpectsexposure_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 context → macro-regime-detector
- produces:
macro_regime_brief
Step 2: Detect hot themes + sector rotation → theme-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 cards → position-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
Swing Opportunity Daily
swing-opportunity-daily · daily · ~30 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, technical-analyst, position-sizer, trader-memory-core
Optional skills: canslim-screener, breakout-trade-planner, theme-detector
Prerequisite workflows (informational):
market-regime-dailyexpectsexposure_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 |
|---|---|---|---|
vcp_candidates |
1 | yes | — |
canslim_candidates |
2 | no | — |
theme_candidates |
3 | no | — |
validated_setups |
4 | yes | — |
position_sizing |
5 | yes | — |
trade_plans |
6 | no | trade-memory-loop |
candidate_journal_entry |
7 | yes | trade-memory-loop |
Steps:
Step 1: Run VCP screener → vcp-screener
- produces:
vcp_candidates
Step 2: Run CANSLIM screener (optional) → canslim-screener
- produces:
canslim_candidates
Step 3: Theme detection cross-check (optional) → theme-detector
- produces:
theme_candidates
Step 4: Validate setups on weekly chart (decision gate) → technical-analyst
- consumes:
vcp_candidates,canslim_candidates,theme_candidates - produces:
validated_setups - Decision: Which candidates have a clean weekly setup (Stage 2 uptrend, tight base) and pass the manual chart review? Reject candidates that don’t.
Step 5: Calculate position size → position-sizer
- consumes:
validated_setups - produces:
position_sizing
Step 6: Build entry plan (optional) → breakout-trade-planner
- consumes:
validated_setups,position_sizing - produces:
trade_plans
Step 7: 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.
Manual review:
- Confirm market-regime-daily exposure_decision allows new risk before acting.
- Reject any candidate where weekly setup is unclear, even if screener passed.
- Verify total portfolio heat is within budget before placing any 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 outcome → trader-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 journal → trader-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