Thesis Management SOP¶
Overview¶
Investment theses are story-focused, not ticker-focused. A thesis captures a narrative ("AI infrastructure spending extends") and maps it to the symbols it implicates. The watchlist is derived automatically from active theses + portfolio holdings.
Theses are the AI's primary input for hypothesis generation. A vague narrative produces vague hypotheses. A specific narrative with falsifiable claims produces testable hypotheses that drive meaningful thesis health signals.
Thesis Structure¶
Each thesis is a YAML file at ~/.openfin/theses/{slug}.yaml:
slug: ai-compute-hardware
title: AI Drives Compute Hardware Demand
time_horizon: 12-18 months
narrative: |
Hyperscaler and enterprise AI training/inference workloads continue
to grow, driving sustained demand for GPUs, custom silicon, and
networking chips. The capex cycle extends as models get larger and
inference scales out.
I spoke with a semiconductor analyst at GS who confirmed channel
checks show HBM3e yields improving at Samsung — not yet priced in.
status: active
symbols: [NVDA, MRVL, AVGO, AMD, TSM]
notes: ""
Fields¶
slug— URL-safe identifier, used as filenametitle— human-readable titlenarrative— the complete expression of the belief. Contains what you believe, why, what would change your mind, private observations, events to watch for. This is the AI's primary input for hypothesis generation.time_horizon— how long the thesis needs to play out (e.g., "6-12 months", "18-24 months"). Waterfalls as default to hypotheses.status—active|archived|draftsymbols— list of ticker strings relevant to this thesis. Used by the packet builder to gather data and by the AI as context for hypothesis generation.notes— additional context
Writing a good narrative¶
A good narrative should contain: - The belief — what you think is true or will happen - The reasoning — why you believe it (data, conversations, pattern recognition) - The timeframe — when you expect it to play out (reinforces time_horizon) - What to watch for — events, data points, or trends that would confirm or challenge the belief - What would change your mind — the strongest case against your thesis
What's NOT in the thesis model¶
These concerns live elsewhere in the system:
- Role/conviction — portfolio-level concerns derived from positions + hypothesis health, not thesis content
- Conditions (pe < 25, price <= 110) — trading rules live in the decision layer where the AI reasons about them dynamically
- Price targets / stop loss — portfolio management, not thesis definition. Appear in Decision.entry_zone / Decision.exit_trigger
- Catalysts — events to watch are part of the narrative, not a separate list. The AI discovers relevant events from data each week.
- Confirming/disconfirming signals — replaced by AI-generated hypotheses + evidence. Human observations belong in the narrative.
Creating a New Thesis¶
Step 1 — Identify the story¶
A thesis starts with a narrative, not a ticker. Ask: - What structural change or event creates an opportunity? - What is the expected time horizon? - What would confirm or invalidate this story?
Step 2 — Research symbols¶
openfin research search "AI inference chip demand 2026"
openfin research news NVDA
openfin market quote NVDA,AMD,AVGO
Step 3 — Write the YAML file¶
Create ~/.openfin/theses/{slug}.yaml. Guidelines:
- slug: lowercase, hyphenated, descriptive (e.g., oil-shock-travel, cancer-genomics-leaders)
- narrative: 2-4 sentences minimum. Include specific, falsifiable claims so the AI can generate good hypotheses.
- time_horizon: be specific ("12-18 months", not "long-term")
- symbols: just ticker strings — no role, conviction, or conditions
Step 4 — Verify¶
openfin thesis list # Confirm it loads
openfin thesis show {slug} # Review narrative + symbols + time_horizon
openfin thesis symbols # Check symbol coverage
openfin watchlist list # Confirm symbols appear in derived watchlist
Step 5 — Seed hypotheses (optional)¶
After the first review cycle, the AI generates hypotheses automatically. But you can seed initial ones:
openfin review hypothesis create {slug} \
--claim "If ASML Q3 bookings beat, confirms broadening fab capacity" \
--invalidation "ASML guides down on EUV orders" \
--time-horizon "6 months"
Maintaining Theses¶
Updating symbols or narrative¶
Edit the YAML directly and verify with openfin thesis show {slug}. Every save writes to the thesis_snapshots DB table for audit history.
Checking thesis health¶
openfin thesis status {slug} # Health, time pressure, active hypotheses
Health is computed from hypothesis outcomes (confirmed/invalidated ratio, recency-weighted):
- untested — no hypotheses resolved yet
- strong — confirmed ratio > 0.7
- mixed — 0.4–0.7
- weakening — < 0.4
- failing — < 0.2 or 3+ recent invalidations
Archiving a thesis¶
Set status: archived. Archived theses' symbols are excluded from the watchlist and review.
Adding ad-hoc tickers¶
openfin watchlist add FOO # Adds to the special "watchlist" thesis
openfin watchlist remove FOO
Reviewing provenance¶
openfin watchlist sources # Shows where each watchlist symbol comes from
Hypothesis Lifecycle¶
Hypotheses are AI-generated during reviews. They persist across review runs:
active → confirmed (claim supported by evidence)
→ invalidated (invalidation criteria met)
→ revised (replaced by a refined hypothesis)
Each hypothesis has: - claim — "If A then B" (causal, falsifiable) - invalidation — "Unless C" (what would disprove it) - time_horizon — overrides thesis time_horizon if set
openfin review hypothesis list {slug} # All hypotheses
openfin review hypothesis list {slug} --status active # Active only
openfin review hypothesis update {id} --status confirmed \
--resolution "What happened"
Recording Evidence¶
Link evidence to hypotheses when possible:
openfin review evidence NVDA --run-id <id> \
--source-type news --claim "Record datacenter revenue" \
--direction confirming --hypothesis-id <hypothesis-id>
Direction:
- confirming — supports the thesis/hypothesis
- disconfirming — weakens or contradicts it
- neutral — informational, no clear direction
Anti-Patterns¶
- Don't create a thesis per ticker. If you have one symbol, it probably belongs in an existing thesis or the adhoc watchlist.
- Don't leave narrative empty. A thesis without a story is just a watchlist entry — use
openfin watchlist addinstead. - Don't write vague narratives. "AI is big" produces useless hypotheses. "HBM3e yields at Samsung are improving faster than priced in" produces testable ones.
- Don't add role/conviction/conditions to YAML. Those are legacy fields. The AI handles trade reasoning via hypotheses + the decision layer.