| 📈 技術面 Technical | 🟢 BUY (Composite +3) RSI 64 ⚪ neutral · price above MA50 🟢 (short-term 升勢) · MACD bullish cross 🟢 (動能轉好) · -2.2% from 52W high 💡 Plain English: Price momentum + trend look healthy. Short-term setup favours buyers — but technicals alone don't say how much to pay. |
| 💰 估值 Valuation | ⚪ N/A (not in valuation universe) Only the watchlist names in model_builder get a valuation (mega-caps + held → DCF, dividend names → DCF+DDM, ETFs → relative P/E). 只有 model_builder 觀察名單先有估值模型。 💡 Plain English: No valuation model fits this asset (commodity / leveraged / no fundamentals). Judge it by technicals + macro alone — don't expect a fair-value number. |
| 📅 業績風險 Earnings | ⚪ N/A (no earnings tracked) No upcoming earnings on calendar. 💡 Plain English: Calendar risk: no earnings near term. Safe trading window on this dimension. |
| 🌐 宏觀 Macro | ⚪ MIXED Sector Healthcare → ETF XLV · XLV ⚪ sector neutral (composite +0 · +0.8% today) · Sentiment ⚪ normal regime (VIX 18.1 · F&G 26) · S&P futures ↑ 💡 Plain English: Macro signal is mixed. Entry timing is neutral on this lens — lean on technicals + valuation for the decision. |
| 📈 技術面 Technical | 🟢 BUY (Composite +3) RSI 48 ⚪ neutral · price above MA50 🟢 (short-term 升勢) · -13.8% from 52W high 💡 Plain English: Price momentum + trend look healthy. Short-term setup favours buyers — but technicals alone don't say how much to pay. |
| 💰 估值 Valuation | ⚪ N/A (not in valuation universe) Only the watchlist names in model_builder get a valuation (mega-caps + held → DCF, dividend names → DCF+DDM, ETFs → relative P/E). 只有 model_builder 觀察名單先有估值模型。 💡 Plain English: No valuation model fits this asset (commodity / leveraged / no fundamentals). Judge it by technicals + macro alone — don't expect a fair-value number. |
| 📅 業績風險 Earnings | ⚪ N/A (no earnings tracked) No upcoming earnings on calendar. 💡 Plain English: Calendar risk: no earnings near term. Safe trading window on this dimension. |
| 🌐 宏觀 Macro | ⚪ MIXED Sector Consumer Cyclical → ETF XLY · XLY ⚪ sector neutral (composite -1 · +1.1% today) · 10Y UST ↓ Falling 🟢 bullish for sector · Sentiment ⚪ normal regime (VIX 18.1 · F&G 26) · Nikkei futures ↑ 💡 Plain English: Macro signal is mixed. 10Y UST is moving in Consumer Cyclical's favour today. Entry timing is neutral on this lens — lean on technicals + valuation for the decision. |
| 📈 技術面 Technical | 🟢 BUY (Composite +3) RSI 64 ⚪ neutral · price above MA50 🟢 (short-term 升勢) · MACD bullish cross 🟢 (動能轉好) · -5.1% from 52W high 💡 Plain English: Price momentum + trend look healthy. Short-term setup favours buyers — but technicals alone don't say how much to pay. |
| 💰 估值 Valuation | ⚪ N/A (not in valuation universe) Only the watchlist names in model_builder get a valuation (mega-caps + held → DCF, dividend names → DCF+DDM, ETFs → relative P/E). 只有 model_builder 觀察名單先有估值模型。 💡 Plain English: No valuation model fits this asset (commodity / leveraged / no fundamentals). Judge it by technicals + macro alone — don't expect a fair-value number. |
| 📅 業績風險 Earnings | ⚪ N/A (no earnings tracked) No upcoming earnings on calendar. 💡 Plain English: Calendar risk: no earnings near term. Safe trading window on this dimension. |
| 🌐 宏觀 Macro | ⚪ MIXED Sentiment ⚪ normal regime (VIX 18.1 · F&G 26) · S&P futures ↑ 💡 Plain English: Macro signal is mixed. Entry timing is neutral on this lens — lean on technicals + valuation for the decision. |
| 📈 技術面 Technical | 🟢 BUY (Composite +3) RSI 48 ⚪ neutral · price above MA50 🟢 (short-term 升勢) · -4.7% from 52W high 💡 Plain English: Price momentum + trend look healthy. Short-term setup favours buyers — but technicals alone don't say how much to pay. |
| 💰 估值 Valuation | ⚪ N/A (not in valuation universe) Only the watchlist names in model_builder get a valuation (mega-caps + held → DCF, dividend names → DCF+DDM, ETFs → relative P/E). 只有 model_builder 觀察名單先有估值模型。 💡 Plain English: No valuation model fits this asset (commodity / leveraged / no fundamentals). Judge it by technicals + macro alone — don't expect a fair-value number. |
| 📅 業績風險 Earnings | ⚪ N/A (no earnings tracked) No upcoming earnings on calendar. 💡 Plain English: Calendar risk: no earnings near term. Safe trading window on this dimension. |
| 🌐 宏觀 Macro | ⚪ MIXED Sentiment ⚪ normal regime (VIX 18.1 · F&G 26) · S&P futures ↑ 💡 Plain English: Macro signal is mixed. Entry timing is neutral on this lens — lean on technicals + valuation for the decision. |
| 📈 技術面 Technical | 🟢 BUY (Composite +3) RSI 48 ⚪ neutral · price above MA50 🟢 (short-term 升勢) · -5.0% from 52W high 💡 Plain English: Price momentum + trend look healthy. Short-term setup favours buyers — but technicals alone don't say how much to pay. |
| 💰 估值 Valuation | ⚪ N/A (not in valuation universe) Only the watchlist names in model_builder get a valuation (mega-caps + held → DCF, dividend names → DCF+DDM, ETFs → relative P/E). 只有 model_builder 觀察名單先有估值模型。 💡 Plain English: No valuation model fits this asset (commodity / leveraged / no fundamentals). Judge it by technicals + macro alone — don't expect a fair-value number. |
| 📅 業績風險 Earnings | ⚪ N/A (no earnings tracked) No upcoming earnings on calendar. 💡 Plain English: Calendar risk: no earnings near term. Safe trading window on this dimension. |
| 🌐 宏觀 Macro | ⚪ MIXED Sentiment ⚪ normal regime (VIX 18.1 · F&G 26) · S&P futures ↑ 💡 Plain English: Macro signal is mixed. Entry timing is neutral on this lens — lean on technicals + valuation for the decision. |
| 📈 技術面 Technical | 🟢 BUY (Composite +3) RSI 64 ⚪ neutral · price above MA50 🟢 (short-term 升勢) · MACD bullish cross 🟢 (動能轉好) · -1.3% from 52W high 💡 Plain English: Price momentum + trend look healthy. Short-term setup favours buyers — but technicals alone don't say how much to pay. |
| 💰 估值 Valuation | ⚪ N/A (not in valuation universe) Only the watchlist names in model_builder get a valuation (mega-caps + held → DCF, dividend names → DCF+DDM, ETFs → relative P/E). 只有 model_builder 觀察名單先有估值模型。 💡 Plain English: No valuation model fits this asset (commodity / leveraged / no fundamentals). Judge it by technicals + macro alone — don't expect a fair-value number. |
| 📅 業績風險 Earnings | ⚪ N/A (no earnings tracked) No upcoming earnings on calendar. 💡 Plain English: Calendar risk: no earnings near term. Safe trading window on this dimension. |
| 🌐 宏觀 Macro | ⚪ MIXED Sentiment ⚪ normal regime (VIX 18.1 · F&G 26) · S&P futures ↑ 💡 Plain English: Macro signal is mixed. Entry timing is neutral on this lens — lean on technicals + valuation for the decision. |
| 📈 技術面 Technical | ⚪ NEUTRAL raw: HOLD |
| ⛔ 止蝕 Stop-loss | 🔴 已觸發 HIT · 現價 ¥97 < 止蝕 ¥328 |
| 🧠 投資理由 Thesis | ⚪ N/A |
| ⚖️ 再平衡 Rebalance | ⚪ N/A |
| 📈 技術面 Technical | 🟢 BUY raw: BUY |
| ⛔ 止蝕 Stop-loss | 🔴 已觸發 HIT · 現價 ¥5,831 < 止蝕 ¥6,872 |
| 🧠 投資理由 Thesis | ⚪ N/A |
| ⚖️ 再平衡 Rebalance | ⚪ N/A |
| 📈 技術面 Technical | ⚪ NEUTRAL raw: N/A |
| ⛔ 止蝕 Stop-loss | 🔴 已觸發 HIT · 現價 ¥21,714 < 止蝕 ¥22,567 |
| 🧠 投資理由 Thesis | ⚪ N/A |
| ⚖️ 再平衡 Rebalance | ⚪ N/A |
| 📈 技術面 Technical | 🟢 BUY raw: BUY |
| ⛔ 止蝕 Stop-loss | ✅ 安全 OK · 止蝕位 ¥9,895 |
| 🧠 投資理由 Thesis | ⚪ N/A |
| ⚖️ 再平衡 Rebalance | ⚪ N/A |
| 📈 技術面 Technical | ⚪ NEUTRAL raw: N/A |
| ⛔ 止蝕 Stop-loss | ✅ 安全 OK · 止蝕位 ¥13,197 |
| 🧠 投資理由 Thesis | ⚪ N/A |
| ⚖️ 再平衡 Rebalance | ⚪ N/A |
| 📈 技術面 Technical | 🟢 BUY raw: BUY |
| ⛔ 止蝕 Stop-loss | ✅ 安全 OK · 止蝕位 ¥10,603 |
| 🧠 投資理由 Thesis | ⚪ N/A |
| ⚖️ 再平衡 Rebalance | ⚪ N/A |
analyze/thesis_tracker.pyanalyze/tax_loss.pyanalyze/model_builder.pyanalyze/rebalancer.py1.analyze/market_analysis.py1.analyze/rebalancer.py1.analyze/portfolio_monitor.py1.analyze/thesis_tracker.py2.decide/action_engine.pyclassify_asset_class() auto-detects it from yfinance sector / industry / revenue growth, in this order:| Check 檢查條件 | If yes → 如果係 → |
|---|---|
Is it an ETF? (yfinance quoteType=ETF)係 ETF? | etf (with sector P/E baseline) or commodity (without) |
| Sector = Financial Services AND industry is bank / insurer / capital markets 行業係銀行 / 保險 / 資本市場 | financial · use P/TBV × ROE |
| Sector = Financial Services AND industry is payments / credit services 行業係支付 / 信用卡 (V, MA 類) | normal · use DCF (V, MA have real cash flows) |
yfinance revenueGrowth > 30%收入增長 > 30% | hypergrowth · use reverse DCF + Rule of 40 |
| Sector default = defensive AND pays a dividend 防守型 + 派息 | defensive · DCF (6.5% WACC) + DDM cross-check |
| (fallback) 其他 | normal · DCF (9% WACC) |
Classified By = manual or auto per ticker — auto names will downgrade to lower conviction in the lens to guard against mis-classification.| Asset class 類別 | Primary model 主模型 | Phase 2.5 cross-checks 額外對照 |
|---|---|---|
| etf XLF · IEV · IEMG | Relative P/E vs long-run baseline 行業 P/E 對比長期錨點 | ❌ basket — no per-stock EBITDA/EPS |
| commodity GLD · 1459.T leveraged | Macro scorecard (rates · oil · USD · VIX) 宏觀因素計分 (利率 · 油 · USD · VIX) | ❌ not cash-flow assets |
| financial JPM · BAC · BRK-B | Justified P/TBV × ROE 合理市帳率 × ROE | ✓ Fwd P/E only (EV/EBITDA skipped — interest IS the business for banks) |
| hypergrowth NVDA · TSLA · LLY | Reverse DCF + Rule of 40 反向 DCF + 40 法則 | EV/EBITDA + Fwd P/E computed but verdict comes from the hypergrowth branch (forward DCF point estimate is unreliable for high-multiple names) |
| defensive + dividend PG · JNJ · JR Central | DCF (6.5% WACC) + DDM 低 WACC DCF + 股息折現 | ✓ EV/EBITDA + Fwd P/E |
| defensive no dividend 防守型不派息 | DCF (6.5% WACC) 低 WACC DCF | ✓ EV/EBITDA + Fwd P/E |
| normal AAPL · MSFT · V · XOM … | DCF (9% WACC) 標準 WACC DCF | ✓ EV/EBITDA + Fwd P/E |
| Outcome 結果 | Label 標籤 |
|---|---|
| ≥2 models agree on direction 2 個以上模型方向一致 | consensus ✓ high conviction · 高信心 |
| 2 lean one way, no opposing vote 2 個傾向同一邊,無反對票 | lean medium · 中等 |
| Only 1 model fits this stock 只得 1 個模型適用 | single model low — treat as hint · 低 — 當提示 |
| Some say BUY, some say SELL 有 BUY 又有 SELL | conflict ⚠ don't trade on valuation alone · 唔好淨靠估值落注 |
| Number 數字 | What it measures 量度乜 | How trustworthy 可信度 |
|---|---|---|
| Quarterly surprise % 季度業績意外% "🟢 beat +4.2%" | How much THIS quarter's EPS beat or missed the analyst-consensus estimate. Asks: "did analysts get it wrong?" 今季 EPS 比分析員預期高定低。問題:「分析員估錯咗冇?」 | 🔴 Low. Analysts can be too conservative or too optimistic year after year — a company can beat estimates every single quarter while earnings are actually shrinking. 🔴 低。分析員可以年復一年估得太保守或太樂觀 — 隻股可以季季「超預期」但盈利其實年年縮緊。 |
| YoY EPS growth % 同比 EPS 增長% "📈 YoY +12% 🟢" | This quarter's EPS vs the same quarter one year ago. Asks: "is the company earning more than 12 months ago?" 今季 EPS vs 去年同一季。問題:「公司而家賺嘅錢比 12 個月前多咗冇?」 | 🟡 Medium. Compares against a real prior result instead of an estimate. But still a single data point — one-time items (acquisitions, charges, lapping a covid quarter) can distort it. 🟡 中。同實際過往數字比 (而唔係預估)。但仍然係單一數據點 — 一次性項目 (收購、撇帳、對沖 covid 季度) 可以扭曲。 |
| Annual EPS trend 過去 4 年年度 EPS 走勢 "📊 5.81 → 5.90 → 6.02 → 6.51 → 3y CAGR +3.9%" | Last 4 fiscal years of annual EPS + the compound annual growth rate (CAGR). Asks: "is this business actually compounding earnings over time?" 過去 4 個財政年度嘅 EPS + 年複合增長率 (CAGR)。問題:「呢盤生意係咪真係年復一年咁長期複利增長?」 | 🟢 High. Multi-year smooths the noise from single-quarter distortions and shows the real long-term trajectory. This is the number that matters for long-term compounding. 🟢 高。多年數據過濾單一季度雜訊,反映真實長期軌跡。長線複利睇呢個就夠。 |
| Pattern 組合 | What it actually means 真正意義 |
|---|---|
| Quarterly beat ✓ but multi-year CAGR negative 季度超預期 ✓ 但多年 CAGR 負數 | Don't be fooled by the beat. Analysts may simply have lowered estimates enough that the company beat a low bar. Earnings are still shrinking year over year. Example: a cyclical name like XOM beating estimates while oil revenue is falling — surprise is noise, the trend is signal. 唔好被超預期呃到。分析員可能已經將預期調得夠低 — 公司只係跨過低門檻,但年復一年盈利其實縮緊。例:週期股 (如 XOM) 業績超預期但油價收入下跌 — 季度數字係雜訊,年度趨勢先係訊號。 |
| Quarterly miss ✗ but multi-year CAGR positive 季度錯失 ✗ 但多年 CAGR 正數 | Quarterly miss is short-term sentiment risk — but if 3-year compounding is still healthy, the long thesis is intact. Don't panic-sell on a single quarter; check the CAGR. Useful guard against loss-aversion mistakes. 季度錯失係短期情緒風險 — 但只要 3 年複合仍然健康,長期 thesis 仲喺度。唔好為單一季慌住沽 — 睇返 CAGR。對抗「不願意止蝕」嘅有效守則。 |
| Strong CAGR but lumpy trend (big up + big down years) CAGR 強但走勢不平 (大上大落) | The compounding is real but earnings are volatile — quality is lower than a smoothly compounding peer. Example: JNJ +18% CAGR but with talc-litigation charges making some years much worse than others. Discount the multiple you're willing to pay vs a steady compounder. 複利係真,但盈利波動 — 質素遜於穩步複利嘅同行。例:JNJ 3 年 CAGR +18% 但因石棉粉訴訟,個別年份特別差。應比起平穩複利股,俾低啲估值倍數。 |
| CAGR shown as "—" CAGR 顯示「—」 | The starting year had negative EPS (a loss). CAGR math doesn't work across sign flips, so we suppress it rather than show a nonsense number. The trend string still tells you the trajectory. Example: BRK-B 2022 was negative from unrealised stock-portfolio losses; subsequent years are strongly positive. 起點年度係負 EPS (虧損)。CAGR 計法跨唔過正負符號變化,所以唔顯示而唔係出個無意義嘅數字。走勢字串仍然顯示軌跡。例:BRK-B 2022 因未實現股票投資虧損為負,往後幾年強勁正盈利。 |
| Lens | Votes +1 when… | Votes −1 when… |
|---|---|---|
| 📈 Tech 技術面 | price above MA50 AND MACD ≥ signal line 股價高於 MA50 同 MACD 高於 signal line — 趨勢同動能同方向 | price below MA50 AND MACD < signal line 股價低於 MA50 同 MACD 低於 signal line — 趨勢同動能都轉差 |
| 💰 Val 估值 | Models consensus = BUY with med/high confidence (≥2 models agree under/cheap) 多模型共識 BUY,信心 med/high (2+ 個模型一致話平) | Consensus = SELL with med/high confidence 多模型共識 SELL,信心 med/high |
| 📅 Earn 業績 (growth, not calendar) | Multi-year EPS CAGR ≥ +10% · OR · CAGR 0–10% with YoY ≥ +5% 多年 EPS CAGR ≥ +10% · 或 CAGR 0–10% 加同比 ≥ +5% | CAGR ≤ 0% (shrinking) · OR · CAGR 0–10% with YoY ≤ −10% (recent deterioration) CAGR ≤ 0% (萎縮) · 或 CAGR 0–10% 但同比 ≤ −10% (近期退步) |
| 🌐 Macro 宏觀 | Sector ETF strong (composite ≥+2) AND sector macro driver favourable PLUS sentiment vote: VIX>25 AND F&G≤30 = 🟢 washout 行業 ETF 強勢同關鍵宏觀因素配合 — 加埋情緒投票,clamp(-1, +1) | Sector ETF weak AND macro driver adverse OR sentiment: VIX<20 AND F&G≥70 = 🔴 complacency · VIX>35 = 🔴 panic 行業 ETF 弱勢同關鍵宏觀因素逆風 — 或情緒 complacency/panic |
| Composite | Tier | What it means 意義 |
|---|---|---|
| +3 or +4 | 🟢🟢🟢 HIGH | Most or all lenses BUY · Phase 5 gate: HIGH only fires when BOTH tech AND val vote +1. Otherwise capped at MED with reason naming the missing pillar. 大部分或全部訊號 BUY · HIGH 門檻:技術同估值兩個都要 +1,否則鎖喺 MED。 |
| +2 | 🟢🟢 MED | Two lenses confirm BUY · smaller-size entry warranted 兩個訊號 BUY · 細注入場 |
| +1 | 🟡 LOW | Only weak lean · wait for one more lens to confirm 只係弱訊號 · 等多 1 個訊號先郁 |
| 0 | ⚪ FLAT | No clear signal · skip 無明確訊號 · 不入場 |
| −2 or less | 🔴🔴 SELL | Multiple lenses SELL · pass / fade 多個訊號睇淡 · 避開 |
| any composite | 🟡 CONFLICT | At least one lens +1 AND at least one −1, composite ≤ +1 → real disagreement, wait 最少一個 +1 加最少一個 −1,綜合 ≤ +1 → 真正矛盾,觀望 |
| Tier | Trigger 觸發條件 | Action 建議行動 | Why 點解 |
|---|---|---|---|
| 🔴 OVERRIDE | Stop-loss hit OR Thesis broken 止蝕觸發或投資理由失效 | SELL (rule) | Hard rules win. Don't let "but momentum is improving" override your own safeguards. 硬性規則一定要跟,唔好俾「但技術面好啲」呢類藉口推翻自己原本嘅止蝕規矩。 |
| 🟢🟢🟢 HIGH | 3+ lenses BUY AND both Technical AND Valuation are BUY 3+ 訊號睇好,且技術 + 估值兩個核心都確認 | Follow them, full position size 跟訊號做,正常注碼 | The gate isn't just vote count — Tech BUY without Val BUY = buying expensive momentum (high disposition-effect risk). Val BUY without Tech BUY = catching a falling knife. Requiring BOTH guards against both mistakes. 門檻唔只係訊號數量 — 技術 BUY 但估值唔確認 = 追貴貨;估值 BUY 但技術唔確認 = 接住跌嘅刀。要求兩個都確認,先可以避開兩種錯誤。 |
| 🟢🟢 MED (gate-capped) | 3+ lenses BUY but Tech or Val didn't vote BUY 3+ 訊號睇好但技術或估值未確認 | Smaller-size entry, name the missing pillar 細注入場,留意缺嘅嗰個 | Strong cross-lens agreement, but one of the two load-bearing lenses isn't supporting. The card spells out which one — wait for it to flip, or accept the smaller size. 跨訊號方向一致,但兩個核心訊號入面有一個未到位。卡上會講明邊個 — 等佢轉,或者細注做。 |
| 🟢🟢 MED | 2 lenses agree, no opposing vote 2 個訊號方向一致,另一個中性 | Lean towards consensus, smaller size 向共識方向小注 | Reasonable evidence but not overwhelming — worth acting, smaller bet. 證據合理但唔強烈 — 可以做但細注。 |
| 🟡 CONFLICT | ≥1 BUY AND ≥1 SELL vote 至少 1 個 BUY 同至少 1 個 SELL | WAIT — no action 觀望,唔郁 | Lenses pulling opposite ways. Wait until one side wins to avoid being whipsawed. 訊號互相拉扯 — 等其中一邊勝出先郁,避免兩面挨打。 |
| 🟡 LOW | Only 1 weak signal, rest neutral 只得 1 個弱訊號,其他中性 | HOLD — wait for confirmation 維持現狀 · 等多一個確認 | Not enough evidence. One lens alone is just noise unless backed up. 證據唔夠 — 一個訊號獨自出現可能只係噪音。 |
| ⚪ FLAT | All lenses neutral 所有訊號中性 | HOLD 無動作 | Nothing strongly says do anything. The market doesn't reward forced trades. 無強訊號叫你做嘢 — 唔好為做而做。 |