System Architecture
MI-OS (Market Intelligence Operating System) is a quantitative investment + credit intelligence platform. It integrates macro regime detection, multi-layer stock scoring, supply chain contagion analysis, and automated report generation into a unified decision framework.
Core Engines
| Engine | Output | Range | Purpose |
| Scoring Engine (xj_scan) | Composite Score | 0-100 | Investment quality ranking across all tickers |
| CRS Engine | Credit Risk Score | 0-100 | Credit quality assessment for lending decisions |
| Financial Model (xj_model) | ROIC, WACC, DCF | Various | Fundamental valuation and capital efficiency |
| SC Quant Engine | SC Risk Score | 0-100 | Supply chain vulnerability and contagion exposure |
| Navigation Matrix | Quadrant (X, Y) | 0-100 | Quality vs. Valuation positioning |
| Macro Regime | Regime Label | 4 states | Macro environment classification |
| SCPM Engine | Cycle Phase | 6 phases | Industry cyclical timing for T-CYCLICAL/SEMI |
Decision Hierarchy
Macro Regime (L0 gate)
-> Scoring (L1-L5 composite)
-> Quadrant (GOLDEN / PRIORITY / PHASE2 / AVOID)
-> Portfolio Action (BUY / HOLD / REDUCE / EXIT)
-> Credit Assessment (CRS A/B/C/D grade)
-> Supply Chain Risk (SC Risk + VaR overlay)
Key Principle: Score > LLM judgment. A score of 28 = AVOID. Never override quantitative signals with qualitative narrative.
Universe Coverage
Currently tracking 401 tickers across US and TW markets, spanning 13 template types (T-SAAS, T-SEMI, T-HARDWARE, T-PLATFORM, T-FINBANK, T-CONSUMER, T-PHARMA, T-CYCLICAL, T-ENERGY, T-TELECOM, T-CONSUMER-STAPLES, T-LUXURY, OTHER).
Data Source Authority
| Source | Coverage | Data Type | Rate Limit |
| FinMind API | TW stocks (primary) | Financials, monthly revenue, shareholders, margin trading | 600 req/hr |
| yfinance | US + TW stocks | Financials, prices, analyst consensus | Unlimited |
| FRED API | US macro | 29 series (yield curve, CPI, ISM, housing) | Unlimited |
| SEC EDGAR | US stocks | Form 4 insider trades, 13F holdings | Unlimited |
| Damodaran | Global sectors | WACC, D/E, margins benchmarks (annual) | Annual update |
| RSS + Gmail | Global | News intelligence (30+ sources) | 3x daily |
Scoring Engine v4.3+ (Six-Layer Architecture)
Composite = L1 (0-60) + L2 (0-25) + L3 (0-15) + L4 (0 to -25) + L5 (-5 to +5)
Final Score = clamp(Composite, 0, 100)
L0: Hard Gates (Pass / Reject)
Binary pre-filter. Any failure = ticker excluded from scoring.
| Gate | Condition |
| Equity | Stockholders' equity must be positive |
| Revenue | Revenue >= $10M (US) or ~NT$300M (TW) |
| Data Freshness | Financial data < 5 days stale |
L0b: Regime Gates (Context Modifier)
Adjusts L1 ceiling and penalty severity based on macro regime.
| Regime | Trigger | L1 Cap | Penalty Multiplier |
| RISK_OFF | STAGFLATION / VIX > 30 | 45 | 1.5x |
| ELEVATED | VIX 25-30 | 50 | 1.25x |
| NORMAL | VIX <= 25 | 60 | 1.0x |
L1: Growth Type Scoring (0-60)
Each ticker is classified into one of 8 growth types. Each type has a distinct scoring formula optimized for its investment thesis.
| Type | Max | Components | Gate Requirements |
| A1 Hyper-Growth | 60 | RevG(20) + GM(15) + PEG(15) + ROE(10) | RevG >= 25%, GM >= 70% |
| A2 Pre-profit Growth | 60 | RevG(20) + GM(15) + P/S(15) + Accel(10) | RevG > 0 |
| B Margin Expansion | 54 | OpMgn(14) + RevG(15) + FCF(15) + R40(10) | GM >= 10% |
| C Cyclical Trough | 60 | Trough(20) + Survival(15) + P/B(15) + Sigma(10) | T-CYCLICAL or beta > 1.3 |
| D Pre-revenue | 30 | Cash/MCap(15) + CR(10) + Exists(5) | - |
| E Stalwart | 56 | ROE(20) + Val(15) + RevG(10) + Consist(8) + FCF(3) | ROE >= 8%, GM >= 15% |
| F Dividend Aristocrat | 58 | DivY(20) + P/B(15) + Payout(8) + ROE(10) + Beta(5) | Profitable |
| G Deep Value | 50 | FCF(20) + FCFY(5) + EV/EB(15) + D/E(10) | FCF > 0 |
| H High-Turnover | 60 | ROIC(20) + CapTurn(15) + CCC(15) + RevG(10) | BMA in {FAB,PIPE,SI,ODM,EMS}, CES >= 50 |
Forward Growth Discount: L1 uses min(trailing, forward) revenue growth for conservative estimate. If forward < 50% of trailing, an additional -8 growth cliff penalty applies.
L2: Template Modifier (0-25)
| Template | Base Score | Bonus |
| T-SAAS | 20 | +3 if GM > 70% |
| T-SEMI | 18 | +2 if RevG > 20% |
| T-PLATFORM | 18 | - |
| T-PHARMA / T-LUXURY | 15 | - |
| T-HARDWARE / T-CONSUMER | 12 | - |
| T-FINBANK | 10 | - |
| T-CYCLICAL / T-ENERGY / T-TELECOM | 8 | - |
L3: EVA + Operating Leverage (0-15)
IF ROE > 15%: +7 (profit persistence signal)
IF RevG > 0 AND EarningsG > RevG:
OL_ratio = EarningsG / RevG
+ min(OL_ratio x 3, 8) (operating leverage bonus)
ELSE IF OpMgn > 20%: +3 (high margin proxy)
Final: min(total, 15)
L4: Penalties & F-Patterns (0 to -25)
12 failure patterns that penalize structural risks:
| F# | Pattern | Trigger | Penalty |
| F1 | Premature Scaling | GM < 0 + RevG > 20% | -8 |
| F2 | Ecosystem Collapse | Platform dependency > 70% | -8 |
| F3 | WTA Loser | Peer MCap 5x+ or top customer > 40% | -5 |
| F4 | Regulatory Kill | Reg binary risk 60-80% / > 80% | -5 / -10 |
| F5 | CC3 Hubris | Cyclical + RevG > 20% | -5 |
| F6 | Disruption Denial | AI disruption > 60% | -5 |
| F7 | Financial Mask | PE > 50 + RevG < 0 + FCF < 0 | -8 |
| F8 | Geo Expansion Hubris | New geo > 30% + no local KSF | -8 |
| F9 | Conglomerate Trap | BMA > 3 + holding discount > 20% | -8 |
| F10 | Monopoly Illusion | Narrow share > 50% + broad < 20% | -8 |
| F11 | Low-GM Impostor | GM < 10% + CES < 30 + ROIC < 8% | -25 (REJECT) |
| F12 | Dependency Illusion | Single partner rev > 30% | -10 |
L5: Group Synergy Score (GSS, -5 to +5)
GSS = S (Synergy) + C (Contagion) + T (Type Quality)
S: Each intra-group supply edge = +2, cap +10
C: max(dep_score - 2) x -2, floor -10
T: competitive_cluster = -2, platform_dep = -3, sector_peer = 0
GSS > +10 -> +5 pts GSS -5 to +5 -> 0 pts
GSS +5~+10 -> +3 pts GSS -10~-5 -> -3 pts
GSS < -10 -> -5 pts + RED FLAG
Quadrant Assignment
| Quadrant | Condition | Action |
| PRIORITY | Score >= 50 | High conviction, eligible for Phase 2 LLM screen |
| PHASE2 | Score >= 25 | Secondary opportunity, monitor for upgrade |
| WATCH | Score >= 10 | Below threshold, track for catalysts |
| AVOID | Score < 10 or URF flag | Do not hold. Immediate EXIT if held. |
Universal Risk Factor (URF): 6 binary kill conditions override score. Any one triggered = AVOID regardless of composite score: AI disruption > 80%, WTP erosion = CLIFF, bundling risk >= 5, reg binary > 80%, platform dep > 70%.
Credit Risk Score (CRS) Engine
Designed for bank lending officer use. Quantifies credit quality on a 0-100 scale.
CRS = ICR(25%) + Leverage(25%) + Current Ratio(20%) + CCC(15%) + Altman Z(15%)
Final = clamp(base + GCA_adj + FSRM_adj + governance_adj, 0, 100)
Component Scoring
| Component | Weight | 90pts | 75pts | 55pts | 30pts | 10pts |
| ICR (EBIT/Interest) | 25% | >= 8 | >= 4 | >= 2 | >= 1 | < 1 |
| Leverage (D/E vs sector) | 25% | <= 0.5x sector | <= 1.0x | <= 1.5x | <= 2.5x | > 2.5x |
| Current Ratio | 20% | >= 2.5 | >= 1.5 | >= 1.0 | >= 0.7 | < 0.7 |
| CCC (industry-relative) | 15% | <= excellent | - | <= good | - | > poor |
| Altman Z | 15% | >= 3.0 | - | >= 2.0 | >= 1.0 | < 1.0 |
Altman Z-Score Formula
Z = 1.2(WC/TA) + 1.4(RE/TA) + 3.3(EBIT/TA) + 0.6(MVE/TL) + 1.0(Sales/TA)
Z >= 3.0: Safe zone Z 1.8-3.0: Grey zone Z < 1.8: Distress zone
CCC Industry Benchmarks (days)
| Template | Excellent | Good | Poor |
| T-SAAS | -30 | 0 | 30 |
| T-SEMI / T-CYCLICAL / T-HARDWARE | 30 | 60 | 120 |
| T-PHARMA | 60 | 120 | 200 |
CRS Rating Grades
| Grade | CRS Range | Interpretation | Lending Action |
| A | >= 70 | Investment Grade | Standard terms, favorable rate |
| B | 50-69 | Acceptable | Standard terms, monitor quarterly |
| C | 35-49 | Watchlist | Enhanced monitoring, collateral review |
| D | < 35 | Substandard | Restrict exposure, workout plan |
Leverage scoring uses Damodaran sector D/E benchmarks for relative comparison, not absolute thresholds. A D/E of 2.0 is normal for utilities but alarming for tech.
Financial Model Engine
ROIC (Return on Invested Capital)
ROIC = NOPAT / Invested Capital
NOPAT = (EBIT - one_time_items) x (1 - effective_tax_rate)
IC = Equity + Total_Debt - Cash - Short_Term_Investments
DuPont Decomposition
ROIC = NOPAT_Margin x Capital_Turnover
| High Turnover | Low Turnover
High Margin | MACHINE (best) | MOAT (pricing power)
Low Margin | SCALE (volume) | TRAP (structural problem)
CES (Capital Efficiency Score, 0-100)
For low-margin pass-through businesses (GM < 15%): evaluates capital efficiency instead of margins.
CES = ROIC(35%) + Turnover(25%) + CCC(25%) + FCF/Rev(15%)
CES >= 60: Full gate override (A1/B/E/H eligible)
CES 40-59: Partial override (B/E/H only)
CES < 40: No override -> defaults to Type G
WACC (Weighted Average Cost of Capital)
WACC = Ke x (E/V) + Kd x (D/V) x (1 - Tax)
Ke (Cost of Equity) = Rf + Beta x ERP
US: Rf=4.3%, ERP=5.5% TW: Rf=1.8%, ERP=7.2%
Kd (Cost of Debt) = Interest_Expense / Total_Debt (clamped 2%-15%)
D/E Weight Priority: Damodaran sector -> BS actual -> no-debt default
DCF Lite (3-Stage)
Stage 1 (Y1-3): CF = FCF x (1+consensus_growth)^y
Stage 2 (Y4-7): Growth fades to sector median
Terminal: TV = CF7 x (1+terminal_g) / (WACC - terminal_g)
EV = PV(Stage1) + PV(Stage2) + PV(Terminal)
Equity Value = EV - Debt + Cash
Price/Share = Equity_Value / Shares_Outstanding
Scenarios: BEAR (WACC+2%, growth x0.5) | BASE | BULL (WACC-1%, growth x1.25)
Reverse DCF (Implied Growth)
Given current price, solves for the growth rate the market is pricing in. The growth gap = implied growth - actual trailing growth. Positive gap = market expects acceleration; negative gap = potential undervaluation.
Quality Score (O'Glove 5-Factor, 0-100)
| Factor | Weight | What It Measures |
| SBC / OpIncome | 20 | Stock dilution relative to operating income |
| Share Dilution | 20 | YoY share count increase |
| FCF / Net Income | 20 | Cash conversion quality (>= 1.0 ideal) |
| AR vs Revenue growth | 20 | Revenue quality (AR growing faster = channel stuffing risk) |
| Accrual Ratio | 20 | |NI - OCF| / Total Assets (lower = better) |
Key Valuation Multiples
| Metric | Formula | When to Use |
| Forward P/E | MCap / Forward Earnings | Profitable companies with analyst coverage |
| P/S | MCap / Revenue | Pre-profit or high-growth companies |
| EV/EBITDA | (MCap+Debt-Cash) / EBITDA | Cross-capital-structure comparison |
| PEG | Forward PE / EPS growth% | Growth-adjusted valuation (< 1.0 = undervalued) |
| Rule of 40 | RevG% + OpMgn% | SaaS: > 40% = healthy growth/profit balance |
Supply Chain Quantitative Engine
4-step pipeline: Edge Quantification -> Node Vulnerability -> Contagion Simulation -> Decision Benchmarks
Step 1: Edge Weight Quantification
q_weight = 0.35 x dep_norm + 0.30 x min(1, rev_exp x 3) + 0.20 x growth_coupling + 0.15 x category
dep_norm = dependency_score / 5 (clamped 0.2-1.0)
rev_exp = revenue_pct_estimate / 100
growth_coupling = 1 - |src_revg - tgt_revg| / max(|src_revg|, |tgt_revg|)
category = 0.8 (supply) or 0.5 (compete)
Step 2: SC Risk Score (0-100, per node)
SC_Risk = 0.25 x Upstream_Conc + 0.20 x Downstream_Conc + 0.20 x WC_Stress
+ 0.15 x Margin_Risk + 0.20 x Contagion_Exposure
Resilience = 100 - SC_Risk
| Factor | Weight | Calculation | What It Means |
| Upstream Conc | 25% | HHI of supplier q_weights | Supplier concentration risk (single-source = high) |
| Downstream Conc | 20% | HHI of customer q_weights | Customer concentration risk |
| WC Stress | 20% | CCC/200 x 60 + D/E/3 x 40 | Working capital + leverage strain |
| Margin Risk | 15% | (1 - gross_margin) x 100 | Thin margins = low shock absorption |
| Contagion Exp | 20% | avg(q_weight) x edge_density | Network exposure (hub nodes = higher) |
Step 3: Contagion Simulation
BFS propagation with 50% decay per hop (max 3 hops):
impact = source_impact x q_weight x (1 - resilience x 0.7) x 0.5^hop
Threshold: propagated < 0.1% -> stop
Step 4: Portfolio SC VaR
Portfolio_VaR% = SUM( holding_weight x SC_Risk/100 x 0.5 ) x 100
Action Matrix
| Action | Condition | Interpretation |
| EXIT | SC Risk >= 70 AND Score < 50 | High SC vulnerability + weak fundamentals |
| REDUCE | SC Risk >= 60 OR Score < 40 | Elevated risk or weak score |
| HOLD | Default | Balanced risk/reward |
| ADD | SC Risk < 30 AND Score >= 60 | Low SC risk + strong fundamentals |
SC Risk interpretation: A high SC Risk (>60) doesn't mean the company is bad - it means it's vulnerable to supply chain disruptions. A company like TSMC may have moderate risk due to high centrality, while a diversified consumer company may score low.
Navigation Matrix (Quantitative Quadrant)
Maps every ticker on a 2D plane: X-axis = Quality & Growth, Y-axis = Valuation richness.
X-Axis: Quality & Growth (0-100)
X = 0.20 x EVA_Momentum + 0.30 x ROIC_WACC_Spread + 0.25 x Quality + 0.25 x PLC
| Component | Weight | Scoring |
| EVA Momentum | 20% | IMPROVING=80, STABLE=50, DECLINING=20 |
| ROIC-WACC Spread | 30% | >=15%:95, >=8%:80, >=3%:65, >=0:50, >=-5%:30, <-5%:10 |
| Quality Score | 25% | O'Glove 5-factor (see Financial Model) |
| PLC Stage | 25% | GROWTH=85, MATURITY=60, SHAKEOUT=40, INTRO=30, DECLINE=20 |
Y-Axis: Valuation (0-100, higher = more expensive)
Y = 0.33 x FwdPE_vs_Sector + 0.33 x Growth_Gap + 0.33 x Reflexivity
| Component | Weight | Scoring |
| Fwd PE vs Sector | 33% | PE/sector_PE ratio -> 2x:90, 1.3x:70, 0.8x:50, 0.5x:30 |
| Growth Gap | 33% | Implied growth - actual growth -> +20%:85, +5%:65, -5%:45, <-5%:25 |
| Reflexivity Phase | 33% | PEAK=85, POSITIVE=70, NEGATIVE=30, TROUGH=15 |
Quadrant Interpretation
| Position | Quadrant | Meaning | Action |
| X >= 60, Y < 50 | GOLDEN | High quality, undervalued | BUY - best risk/reward |
| X >= 60, Y >= 50 | PERFECTION | High quality, fairly/richly valued | HOLD - quality justifies premium |
| X < 60, Y < 50 | VALUE_TRAP | Cheap but low quality | AVOID - cheap for a reason |
| X < 60, Y >= 50 | BUBBLE | Low quality, expensive | SHORT / AVOID |
Data Pipeline Architecture
Monthly Rescore Pipeline (1st Saturday, 09:00 TPE)
Full recalibration across ~23 steps, ~50-65 minutes:
| Step | Script | Output | Duration |
| 0 | damodaran_fetcher.py | Sector WACC/D-E benchmarks | ~2 min |
| 1-3 | data_store.py (SLOW/FAST/MEDIUM) | Financials, prices, insider trades | ~15 min |
| 3b | xj_model.py | ROIC, WACC, DCF per ticker | ~5 min |
| 4 | gis_module.py | Guidance Integrity Score | ~3 min |
| 5 | xj_scan.py | Phase 1: Full scoring (all tickers) | ~5 min |
| 6 | phase2_llm_screen.py | Phase 2+3: LLM screen + portfolio | ~10 min |
| 7 | exit_monitor.py | Exit signal detection | ~2 min |
| 8-10 | xj_leading + macro_regime | Macro indicators + regime | ~5 min |
| 11-12 | xj_map + sync_notion | Industry map positions | ~3 min |
| 13-16 | Predictions + RAG + Calibrate | Prediction tracking + RAG index | ~5 min |
| 17-21 | Graph + Cleanup + Checks | SC centrality, drift detection | ~3 min |
| 22 | generate_dashboard.py | All pages/data/*.json exports | ~1 min |
Daily News Pipeline (3-shift: 07:00 / 11:00 / 17:00 TPE)
RSS + Gmail
->
N1-N3 Dedup + Relevance
->
N4-N6 Gemini Annotation
->
N7 SC Contagion
->
Daily Report + Structured Data
Morning shift additionally updates FRED macro leading indicators.
Data File Refresh Frequency
| File | Frequency | Source Script | Consumed By |
| scan.json | Monthly | xj_scan.py -> generate_dashboard | scoring, contagion, index |
| portfolio.json | Monthly | portfolio_constructor -> generate_dashboard | portfolio, contagion, index |
| macro.json | Daily (AM) | xj_leading + macro_regime | macro, index |
| news.json | 3x daily | xj_news.py | news, macro |
| financial_model.json | Monthly | xj_model.py | reports, contagion |
| supply_chain.json | On change | Notion SC DB sync | contagion |
| sc_quant.json | Monthly | sc_quant_engine.py | contagion |
| predictions.json | Daily | xj_predict.py | predictions, index |
| reports_index.json | On generation | report_generator_v3 | reports, index |
Data Flow Diagram
FinMind / yfinance / FRED / SEC EDGAR
|
data_store.py (cache)
|
+---------------+----------------+
| | |
xj_scan.py xj_model.py xj_leading.py
(Score 0-100) (ROIC/WACC/DCF) (Macro indicators)
| | |
v v v
phase2_llm financial_model macro_regime
| | |
v | |
portfolio_constructor |
| | |
+-------+-------+--------+-------+
| |
generate_dashboard.py |
| |
pages/data/*.json |
| |
Cloudflare Pages Notion DBs (15)
Pages Guide
| Page | Purpose | Key Metrics | Data Source |
| Dashboard (index) | System overview | Universe count, regime, portfolio size, report count | meta + scan + portfolio + predictions |
| Industry Map | Sector positioning | nav_x (quality), nav_y (valuation), cluster visualization | Embedded from xj_map.py |
| Scoring | Full scoring breakdown | L1-L5 scores, quadrant, growth type, F-patterns | scan.json |
| Portfolio | Dual-model holdings | Model A (Alpha) + Model B (Compounder), exit alerts, NAV | portfolio.json + paper_trade.json |
| Macro | Regime + leading indicators | Regime (4 states), SFI, VIX, yield curve, credit spread | macro.json + daily_market.json |
| Supply Chain | SC contagion graph | SC Risk, VaR, action matrix, centrality, cluster drill-down | supply_chain.json + sc_quant.json |
| Reports | Deep/BOS/Industry reports | Report catalog, financial model data, DCF scenarios | reports_index.json + financial_model.json |
| Predictions | Prediction tracking | Direction, confidence, target, status (PENDING/SETTLED) | predictions.json |
| News | Daily intelligence feed | 14-day rolling news, regime header, structured annotations | news.json |
| Knowledge | RAG semantic search | Cross-reference news, reports, predictions, book knowledge | ChromaDB / JSON fallback |
Additional Specialized Pages
| Page | Purpose |
| rotation.html | Sector rotation analysis (momentum by template) |
| matrix.html | Navigation matrix scatter plot (Quality vs Valuation) |
| risk.html | Risk dashboard (CRS + contagion exposure) |
| delta.html | Before/after comparison across rescore cycles |
| viewer.html | Full report reader (Deep/BOS/Industry markdown) |
| chain_all.html | Complete SC network topology view |
| portfolio_map.html | Portfolio allocation visualization |
| predictions_map.html | Prediction status by ticker map |
How to Interpret Key Metrics
Composite Score (0-100)
| Range | Meaning | Typical Action |
| >= 70 | Exceptional quality + growth alignment | Core holding, aggressive sizing |
| >= 50 | Strong — PRIORITY quadrant | Full position, Phase 2 LLM eligible |
| >= 25 | Moderate — PHASE2 quadrant | Small position, await catalyst |
| >= 10 | Weak — WATCH | Monitor only, do not initiate |
| < 10 | Disqualified — AVOID | EXIT immediately if held |
CRS vs Composite Score Cross-Read
CRS A (>=70) CRS B (50-69) CRS C (35-49) CRS D (<35)
Score >= 50 (PRIORITY) IDEAL GOOD FLAG MISMATCH
Score 25-49 (PHASE2) INCOME_PLAY FAIR WATCH AVOID
Score < 25 (AVOID) POSSIBLE_TURN CREDIT_OK TROUBLED DISTRESS
IDEAL: Strong fundamentals + strong credit = best candidates for both equity and lending.
MISMATCH: Good score but poor credit — possible accounting quality issues, verify.
INCOME_PLAY: Low growth but excellent credit — suitable for fixed income / dividend strategy.
SC Risk + Score Combined View
| Score >= 60 | Score 40-59 | Score < 40 |
| SC Risk < 30 | ADD - low risk, strong | HOLD | REDUCE - weak fundamentals |
| SC Risk 30-59 | HOLD - monitor SC | HOLD | REDUCE |
| SC Risk >= 60 | REDUCE - SC exposed | REDUCE | EXIT - both weak |
Portfolio VaR Interpretation
| VaR Range | Level | Meaning |
| < 10% | Low | Portfolio well-diversified across SC clusters |
| 10-20% | Moderate | Some SC concentration — acceptable for conviction portfolios |
| > 20% | High | Significant SC overlap — one disruption could cascade widely |
Macro Regime Signal
| Regime | Condition | Portfolio Stance |
| GOLDILOCKS | Growth up, inflation down | Full risk-on, quality growth overweight |
| REFLATION | Growth up, inflation up | Cyclicals overweight, shorten duration |
| DISINFLATION | Growth down, inflation down | Defensive, long duration, quality stalwarts |
| STAGFLATION | Growth down, inflation up | Risk-off, cash, L1 cap reduced to 45 |
Report Types
| Type | Chapters | Audience | Focus |
| Deep V3 | 8 chapters | Equity Analyst | Fundamental thesis + valuation + competitive dynamics |
| BOS V3 | 8 chapters | Credit Analyst | Credit risk + going concern + debt capacity |
| Industry V3 | 10 chapters | Sector Strategist | Industry structure + rotation + competitive map |
| Macro-Political | 8 sections | Macro Strategist | Constraint analysis + path dependency (no probability guessing) |
Critical Rules:
1. Score > LLM judgment. Never override quantitative signals with narrative.
2. EXIT > Selection. Cutting losers is more important than picking winners.
3. Forward growth uses min(trailing, forward) — always conservative.
4. Reports are in Traditional Chinese, generated by Claude Sonnet on GitHub Actions.