MI-OS Dashboard

Loading...

Quick Access

MI-OS XUANJI System Guide

Overview
Scoring Engine
Credit Risk
Financial Model
Supply Chain
Navigation Matrix
Data Pipeline
Pages Guide
How to Read

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

EngineOutputRangePurpose
Scoring Engine (xj_scan)Composite Score0-100Investment quality ranking across all tickers
CRS EngineCredit Risk Score0-100Credit quality assessment for lending decisions
Financial Model (xj_model)ROIC, WACC, DCFVariousFundamental valuation and capital efficiency
SC Quant EngineSC Risk Score0-100Supply chain vulnerability and contagion exposure
Navigation MatrixQuadrant (X, Y)0-100Quality vs. Valuation positioning
Macro RegimeRegime Label4 statesMacro environment classification
SCPM EngineCycle Phase6 phasesIndustry 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

SourceCoverageData TypeRate Limit
FinMind APITW stocks (primary)Financials, monthly revenue, shareholders, margin trading600 req/hr
yfinanceUS + TW stocksFinancials, prices, analyst consensusUnlimited
FRED APIUS macro29 series (yield curve, CPI, ISM, housing)Unlimited
SEC EDGARUS stocksForm 4 insider trades, 13F holdingsUnlimited
DamodaranGlobal sectorsWACC, D/E, margins benchmarks (annual)Annual update
RSS + GmailGlobalNews 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.

GateCondition
EquityStockholders' equity must be positive
RevenueRevenue >= $10M (US) or ~NT$300M (TW)
Data FreshnessFinancial data < 5 days stale

L0b: Regime Gates (Context Modifier)

Adjusts L1 ceiling and penalty severity based on macro regime.

RegimeTriggerL1 CapPenalty Multiplier
RISK_OFFSTAGFLATION / VIX > 30451.5x
ELEVATEDVIX 25-30501.25x
NORMALVIX <= 25601.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.

TypeMaxComponentsGate Requirements
A1 Hyper-Growth60RevG(20) + GM(15) + PEG(15) + ROE(10)RevG >= 25%, GM >= 70%
A2 Pre-profit Growth60RevG(20) + GM(15) + P/S(15) + Accel(10)RevG > 0
B Margin Expansion54OpMgn(14) + RevG(15) + FCF(15) + R40(10)GM >= 10%
C Cyclical Trough60Trough(20) + Survival(15) + P/B(15) + Sigma(10)T-CYCLICAL or beta > 1.3
D Pre-revenue30Cash/MCap(15) + CR(10) + Exists(5)-
E Stalwart56ROE(20) + Val(15) + RevG(10) + Consist(8) + FCF(3)ROE >= 8%, GM >= 15%
F Dividend Aristocrat58DivY(20) + P/B(15) + Payout(8) + ROE(10) + Beta(5)Profitable
G Deep Value50FCF(20) + FCFY(5) + EV/EB(15) + D/E(10)FCF > 0
H High-Turnover60ROIC(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)

TemplateBase ScoreBonus
T-SAAS20+3 if GM > 70%
T-SEMI18+2 if RevG > 20%
T-PLATFORM18-
T-PHARMA / T-LUXURY15-
T-HARDWARE / T-CONSUMER12-
T-FINBANK10-
T-CYCLICAL / T-ENERGY / T-TELECOM8-

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#PatternTriggerPenalty
F1Premature ScalingGM < 0 + RevG > 20%-8
F2Ecosystem CollapsePlatform dependency > 70%-8
F3WTA LoserPeer MCap 5x+ or top customer > 40%-5
F4Regulatory KillReg binary risk 60-80% / > 80%-5 / -10
F5CC3 HubrisCyclical + RevG > 20%-5
F6Disruption DenialAI disruption > 60%-5
F7Financial MaskPE > 50 + RevG < 0 + FCF < 0-8
F8Geo Expansion HubrisNew geo > 30% + no local KSF-8
F9Conglomerate TrapBMA > 3 + holding discount > 20%-8
F10Monopoly IllusionNarrow share > 50% + broad < 20%-8
F11Low-GM ImpostorGM < 10% + CES < 30 + ROIC < 8%-25 (REJECT)
F12Dependency IllusionSingle 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

QuadrantConditionAction
PRIORITYScore >= 50High conviction, eligible for Phase 2 LLM screen
PHASE2Score >= 25Secondary opportunity, monitor for upgrade
WATCHScore >= 10Below threshold, track for catalysts
AVOIDScore < 10 or URF flagDo 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

ComponentWeight90pts75pts55pts30pts10pts
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 Ratio20%>= 2.5>= 1.5>= 1.0>= 0.7< 0.7
CCC (industry-relative)15%<= excellent-<= good-> poor
Altman Z15%>= 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)

TemplateExcellentGoodPoor
T-SAAS-30030
T-SEMI / T-CYCLICAL / T-HARDWARE3060120
T-PHARMA60120200

CRS Rating Grades

GradeCRS RangeInterpretationLending Action
A>= 70Investment GradeStandard terms, favorable rate
B50-69AcceptableStandard terms, monitor quarterly
C35-49WatchlistEnhanced monitoring, collateral review
D< 35SubstandardRestrict 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)

FactorWeightWhat It Measures
SBC / OpIncome20Stock dilution relative to operating income
Share Dilution20YoY share count increase
FCF / Net Income20Cash conversion quality (>= 1.0 ideal)
AR vs Revenue growth20Revenue quality (AR growing faster = channel stuffing risk)
Accrual Ratio20|NI - OCF| / Total Assets (lower = better)

Key Valuation Multiples

MetricFormulaWhen to Use
Forward P/EMCap / Forward EarningsProfitable companies with analyst coverage
P/SMCap / RevenuePre-profit or high-growth companies
EV/EBITDA(MCap+Debt-Cash) / EBITDACross-capital-structure comparison
PEGForward PE / EPS growth%Growth-adjusted valuation (< 1.0 = undervalued)
Rule of 40RevG% + 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
FactorWeightCalculationWhat It Means
Upstream Conc25%HHI of supplier q_weightsSupplier concentration risk (single-source = high)
Downstream Conc20%HHI of customer q_weightsCustomer concentration risk
WC Stress20%CCC/200 x 60 + D/E/3 x 40Working capital + leverage strain
Margin Risk15%(1 - gross_margin) x 100Thin margins = low shock absorption
Contagion Exp20%avg(q_weight) x edge_densityNetwork 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

ActionConditionInterpretation
EXITSC Risk >= 70 AND Score < 50High SC vulnerability + weak fundamentals
REDUCESC Risk >= 60 OR Score < 40Elevated risk or weak score
HOLDDefaultBalanced risk/reward
ADDSC Risk < 30 AND Score >= 60Low 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
ComponentWeightScoring
EVA Momentum20%IMPROVING=80, STABLE=50, DECLINING=20
ROIC-WACC Spread30%>=15%:95, >=8%:80, >=3%:65, >=0:50, >=-5%:30, <-5%:10
Quality Score25%O'Glove 5-factor (see Financial Model)
PLC Stage25%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
ComponentWeightScoring
Fwd PE vs Sector33%PE/sector_PE ratio -> 2x:90, 1.3x:70, 0.8x:50, 0.5x:30
Growth Gap33%Implied growth - actual growth -> +20%:85, +5%:65, -5%:45, <-5%:25
Reflexivity Phase33%PEAK=85, POSITIVE=70, NEGATIVE=30, TROUGH=15

Quadrant Interpretation

PositionQuadrantMeaningAction
X >= 60, Y < 50GOLDENHigh quality, undervaluedBUY - best risk/reward
X >= 60, Y >= 50PERFECTIONHigh quality, fairly/richly valuedHOLD - quality justifies premium
X < 60, Y < 50VALUE_TRAPCheap but low qualityAVOID - cheap for a reason
X < 60, Y >= 50BUBBLELow quality, expensiveSHORT / AVOID

Data Pipeline Architecture

Monthly Rescore Pipeline (1st Saturday, 09:00 TPE)

Full recalibration across ~23 steps, ~50-65 minutes:

StepScriptOutputDuration
0damodaran_fetcher.pySector WACC/D-E benchmarks~2 min
1-3data_store.py (SLOW/FAST/MEDIUM)Financials, prices, insider trades~15 min
3bxj_model.pyROIC, WACC, DCF per ticker~5 min
4gis_module.pyGuidance Integrity Score~3 min
5xj_scan.pyPhase 1: Full scoring (all tickers)~5 min
6phase2_llm_screen.pyPhase 2+3: LLM screen + portfolio~10 min
7exit_monitor.pyExit signal detection~2 min
8-10xj_leading + macro_regimeMacro indicators + regime~5 min
11-12xj_map + sync_notionIndustry map positions~3 min
13-16Predictions + RAG + CalibratePrediction tracking + RAG index~5 min
17-21Graph + Cleanup + ChecksSC centrality, drift detection~3 min
22generate_dashboard.pyAll 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

FileFrequencySource ScriptConsumed By
scan.jsonMonthlyxj_scan.py -> generate_dashboardscoring, contagion, index
portfolio.jsonMonthlyportfolio_constructor -> generate_dashboardportfolio, contagion, index
macro.jsonDaily (AM)xj_leading + macro_regimemacro, index
news.json3x dailyxj_news.pynews, macro
financial_model.jsonMonthlyxj_model.pyreports, contagion
supply_chain.jsonOn changeNotion SC DB synccontagion
sc_quant.jsonMonthlysc_quant_engine.pycontagion
predictions.jsonDailyxj_predict.pypredictions, index
reports_index.jsonOn generationreport_generator_v3reports, 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

PagePurposeKey MetricsData Source
Dashboard (index)System overviewUniverse count, regime, portfolio size, report countmeta + scan + portfolio + predictions
Industry MapSector positioningnav_x (quality), nav_y (valuation), cluster visualizationEmbedded from xj_map.py
ScoringFull scoring breakdownL1-L5 scores, quadrant, growth type, F-patternsscan.json
PortfolioDual-model holdingsModel A (Alpha) + Model B (Compounder), exit alerts, NAVportfolio.json + paper_trade.json
MacroRegime + leading indicatorsRegime (4 states), SFI, VIX, yield curve, credit spreadmacro.json + daily_market.json
Supply ChainSC contagion graphSC Risk, VaR, action matrix, centrality, cluster drill-downsupply_chain.json + sc_quant.json
ReportsDeep/BOS/Industry reportsReport catalog, financial model data, DCF scenariosreports_index.json + financial_model.json
PredictionsPrediction trackingDirection, confidence, target, status (PENDING/SETTLED)predictions.json
NewsDaily intelligence feed14-day rolling news, regime header, structured annotationsnews.json
KnowledgeRAG semantic searchCross-reference news, reports, predictions, book knowledgeChromaDB / JSON fallback

Additional Specialized Pages

PagePurpose
rotation.htmlSector rotation analysis (momentum by template)
matrix.htmlNavigation matrix scatter plot (Quality vs Valuation)
risk.htmlRisk dashboard (CRS + contagion exposure)
delta.htmlBefore/after comparison across rescore cycles
viewer.htmlFull report reader (Deep/BOS/Industry markdown)
chain_all.htmlComplete SC network topology view
portfolio_map.htmlPortfolio allocation visualization
predictions_map.htmlPrediction status by ticker map

How to Interpret Key Metrics

Composite Score (0-100)

RangeMeaningTypical Action
>= 70Exceptional quality + growth alignmentCore holding, aggressive sizing
>= 50Strong — PRIORITY quadrantFull position, Phase 2 LLM eligible
>= 25Moderate — PHASE2 quadrantSmall position, await catalyst
>= 10Weak — WATCHMonitor only, do not initiate
< 10Disqualified — AVOIDEXIT 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 >= 60Score 40-59Score < 40
SC Risk < 30ADD - low risk, strongHOLDREDUCE - weak fundamentals
SC Risk 30-59HOLD - monitor SCHOLDREDUCE
SC Risk >= 60REDUCE - SC exposedREDUCEEXIT - both weak

Portfolio VaR Interpretation

VaR RangeLevelMeaning
< 10%LowPortfolio well-diversified across SC clusters
10-20%ModerateSome SC concentration — acceptable for conviction portfolios
> 20%HighSignificant SC overlap — one disruption could cascade widely

Macro Regime Signal

RegimeConditionPortfolio Stance
GOLDILOCKSGrowth up, inflation downFull risk-on, quality growth overweight
REFLATIONGrowth up, inflation upCyclicals overweight, shorten duration
DISINFLATIONGrowth down, inflation downDefensive, long duration, quality stalwarts
STAGFLATIONGrowth down, inflation upRisk-off, cash, L1 cap reduced to 45

Report Types

TypeChaptersAudienceFocus
Deep V38 chaptersEquity AnalystFundamental thesis + valuation + competitive dynamics
BOS V38 chaptersCredit AnalystCredit risk + going concern + debt capacity
Industry V310 chaptersSector StrategistIndustry structure + rotation + competitive map
Macro-Political8 sectionsMacro StrategistConstraint 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.