💡 Why the dashboard sometimes shows 'BUY' and 'SELL' on the same stock — and how to read it.
點解 dashboard 有時對同一隻股會同時出現「BUY」同「SELL」?呢頁解釋每個訊號代表咩,最終應該跟邊個。
TL;DR
EN · Each stock has several raw signals (momentum, weight drift, stop-loss state) that don't have to agree. The system already combines them into ONE recommendation — that's the big badge labelled 「倉位建議」 or the 「💡 建議行動」 line. Everything else is supporting evidence.
廣東話 · 每隻股有幾個「原始訊號」(動能、倉位偏差、止蝕狀態),本身就唔需要一致。系統已經幫你綜合咗,出一個最終建議 — 就係大色 badge「倉位建議」或者「💡 建議行動」嗰行。其他資訊都係背景參考。
🔍 The Four Lenses 四個觀察角度
📈 Technical Signal
技術訊號 (動能)
Is short-term momentum up or down right now?
短期動能而家向上定向下?
Input / 計算依據:
RSI, MACD, MA50/200
Source:
1.analyze/market_analysis.py⚖️ Rebalance Verdict
再平衡建議
Is my % weight too far from my target weight?
我嘅倉位比例同目標比例差咗幾遠?
Input / 計算依據:
Drift % vs target weights
Source:
1.analyze/rebalancer.py⛔ Stop-Loss State
止蝕狀態
Has price fallen 10% below my entry price?
現價有冇跌穿我入市價 10% 嘅止蝕位?
Input / 計算依據:
Current price vs entry × 0.9
Source:
1.analyze/portfolio_monitor.py🧠 Thesis Status
投資理由狀態
Does the original reason I bought this still hold?
我當初買入嘅理由係咪仲成立?
Input / 計算依據:
P&L vs broken-if rules
Source:
1.analyze/thesis_tracker.py💡 Final Action Plan
最終建議行動
Putting all the above together, what should I actually do?
綜合以上所有資訊,我實際應該點做?
Input / 計算依據:
Combines all inputs via thresholds + safeguards
Source:
2.decide/action_engine.py💚 The green row is the output. Everything else is an input. 綠色行係輸出,其他都係輸入。
💰 How the Valuation Model is Picked 點揀估值模型
EN · One DCF doesn't fit every stock — a bank doesn't have meaningful EBITDA, a gold ETF has no cash flows, NVDA breaks a forward DCF point estimate. The dashboard picks the models that fit the stock by a two-step decision: first classify the stock's asset class, then run only the valuation methods that make sense for that class.
廣東話 · 一條 DCF 公式唔啱晒所有股 — 銀行冇有意義嘅 EBITDA、金 ETF 冇現金流、NVDA 嘅 forward DCF 點估值都唔準。Dashboard 用兩步揀模型:先判斷隻股嘅資產類別,再淨係跑啱嗰類嘅估值方法。
🪜 Step 1 · Classify the stock 第一步:判斷類別
For the 16 hand-curated names (held + key watchlist), the asset class is set manually. For everything else, classify_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) |
Models sheet records Classified By = manual or auto per ticker — auto names will downgrade to lower conviction in the lens to guard against mis-classification.
Models sheet 會記錄每隻股嘅分類來源(manual / auto)— auto 嘅會降低信心級別,防止錯分。
🧪 Step 2 · Which models run per class 第二步:每個類別跑邊啲模型
| 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 |
Most "regular" stocks run 3 models (DCF + EV/EBITDA + Fwd P/E target), plus DDM as a 4th if defensive + dividend. Financials run 2 (P/TBV + Fwd P/E). ETFs and commodities run 1.
大部分「普通股」會跑 3 個模型 (DCF + EV/EBITDA + 前瞻 P/E),防守型派息股加 DDM 共 4 個。金融股 2 個 (P/TBV + 前瞻 P/E)。ETF 同商品類 1 個。
🗳 Step 3 · Consensus vote 第三步:模型投票綜合
Each model that ran casts a vote: BUY if it sees >+15% upside, SELL if <−15%, else NEUTRAL. The intrinsic value shown is the median of model fair values (robust to one outlier).
每個跑到嘅模型投一票:升幅 >+15% = BUY,<−15% = SELL,其他 NEUTRAL。顯示嘅「合理價」係各模型合理價嘅中位數(單一極端值唔會扭曲)。
| 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 · 唔好淨靠估值落注 |
🧭 Why this design 點解咁設計
Forcing one model on every stock — which the original code did with flat-9%-WACC DCF — produced misleading signals. Defensive dividend compounders (PG, JNJ, JR Central) looked 30–70% overvalued because the discount rate was too punitive for their stable cash flows. JR Central swung from −53% (overvalued) in the old single-DCF run to +80% / +118% / +129% across DCF + EV/EBITDA + Fwd P/E with consensus ✓ after this phase landed. The selection logic above is what makes the difference.
原本對所有股都用同一條 9% WACC 嘅 DCF,會出錯訊號 — 防守型派息股 (PG、JNJ、JR 東海) 被打成「估值高 30–70%」,因為折現率對穩定現金流嚟講太苛刻。例如 JR 東海,舊版 single-DCF 顯示 −53% (超估),但用咗呢套揀模型邏輯之後,DCF / EV/EBITDA / 前瞻 P/E 三個模型分別顯示 +80% / +118% / +129%,consensus ✓ — 完全相反嘅結論,先係正確。
💪 Confidence Hierarchy 信心級別
EN · How many lenses agree determines how confident the verdict is. Some lenses are override rules — they bypass the others entirely.
廣東話 · 幾多個訊號一致決定建議嘅信心級別。有啲訊號係規則型,一觸發就無視其他。
| 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 agree (BUY or SELL) 3 個訊號方向一致 | Follow them, full position size 跟訊號做,正常注碼 | Strong consensus across independent lenses — high conviction trade. 獨立訊號達成共識 — 高信心交易。 |
| 🟢🟢 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. 無強訊號叫你做嘢 — 唔好為做而做。 |
🔍 Live per-ticker breakdown: Decide tab → 🔍 Lens Check sub-tab.
睇實際每隻股嘅 4 訊號讀數:Decide tab → 🔍 Lens Check sub-tab。
⏰ Execution Timing Playbook 執行時機指南
EN · The Lens Check tells you what to do. This explains when and how to execute, so you don't panic-sell at the low or FOMO-buy at the high.
廣東話 · Lens Check 答「做咩」。呢一節答「幾時做」同「點做」,避免低位 panic sell 或者高位 FOMO 追入。
1
SELL into strength, not into a flush.
沽出要食反彈,唔好喺急跌中倒貨。
When the stop-loss says SELL but the technical lens still says BUY (oversold bounce), use that bounce. Split: 50% at market price, 50% at +2% bounce target. The momentum signal gives you 1–3 days of better exit prices.
當止蝕觸發但技術面仲顯示 BUY,就食呢個反彈出貨。分注:50% 即市限價、50% 升 +2% 目標。動能訊號通常俾你 1–3 日嘅較好出貨價。
2
BUY into weakness, not into a rip.
買入要喺回吐中入,唔好追市。
Scale in 40/30/30: first at −1%, second at −3%, third only after technical confirmation (RSI > 40 + MACD bullish). Saves you from buying the top of a fakeout.
分 40/30/30 入:第一注 −1%、第二注 −3%、第三注等技術面確認(RSI > 40 + MACD 金叉)。避免買到 fakeout 嘅頂。
3
Use limit orders, never market orders.
永遠用限價單,唔好用市價單。
Market orders fill at whatever spread the market offers — usually worse than the screen price, especially in low-liquidity windows. Limit orders give you control and cost basically the same in commission.
市價單會以即時最差嘅價成交,尤其係流動性低嘅時段。限價單俾你控制價位,手續費差唔多。
4
Avoid the first 5 and last 15 minutes.
避開開市頭 5 分鐘同收市前 15 分鐘。
First 5 min: opening auction settling, wide spreads. Last 15 min: closing imbalances, large institutional rebalancing flows. Best window: opening 30 min to mid-session — highest liquidity, tightest spreads.
開頭 5 分鐘:開市拍賣未穩定、價差闊。收市前 15 分鐘:closing imbalance、大戶 rebalance 流。最佳:開市後 30 分鐘到中段時段 — 流動性最高、價差最窄。
5
Stage your exits if the position is >5% of portfolio.
如果倉位佔組合 > 5%,要分注沽出。
Selling a large position in one shot moves the price against you (especially in mid-cap Japanese stocks). Spread over 2–3 sessions, mid-day, mid-week. For Rakuten225 double-bear at 32% of your portfolio, this matters more than you'd think.
一鋪過沽大倉位會推低自己嘅賣出價(尤其日本中型股)。分 2–3 個交易日、中段時段、週中嘅日子。如 Rakuten225 佔組合 32%,呢個影響比想像中大。
6
Never trade through earnings or major macro events.
業績公布日同重大宏觀事件前後唔好交易。
±48h around earnings = unpredictable gap risk. FOMC, NFP, BOJ meetings same thing. Wait it out — the technical setup will still be there after.
業績前後 48 小時 = 不可預測嘅 gap 風險。聯儲議息、美國非農、日銀會議都係咁。等過咗先再做 — 技術面設定唔會走甩。
🔍 Per-ticker timing suggestions: Decide tab → 🔍 Lens Check (rendered for OVERRIDE / HIGH / MED tiers).
睇每隻股嘅實際執行建議:Decide tab → 🔍 Lens Check (只會出現喺 OVERRIDE / HIGH / MED 級別)。
🎯 The Hierarchy 睇 dashboard 嘅優先次序
1Always read the BIG badge first — that's the recommendation.
最先睇大色 badge — 嗰個先係建議。
2Then read the 💡 line — that explains WHY.
再睇「💡 建議行動」嗰行 — 解釋點解。
3Smaller 📈 / 📊 pills are supporting evidence, not instructions.
細啲嘅「📈 技術面」「📊 現倉」係背景資料,唔係指令。
4If you see ⚠️ 矛盾解釋, read it — it explains why two lenses disagree.
如果見到「⚠️ 矛盾解釋」就要睇 — 嗰度會講兩個訊號點解唔同。
❓ FAQ — Common Confusions 常見疑惑
Q: Why does it say BUY signal but the action is SELL?
點解技術訊號係 BUY 但建議行動係 SELL?
A: "BUY signal" is just a momentum read (RSI/MACD turned up). The SELL action comes from a different lens — usually stop-loss hit or overweight position. Different lenses can disagree; the action is the synthesis.
「BUY 訊號」只係動能讀數 (RSI/MACD 向上)。SELL 行動可能係因為 止蝕已觸發 或者 倉位超配。唔同角度可以唔同,最終建議係綜合結果。
Q: Why "WAIT" instead of just SELL when I'm overweight?
點解超配但建議「觀望」而唔係直接 SELL?
A: When momentum is still rising, trimming early sacrifices upside. WAIT means: hold off, but the moment momentum cools, trim. This avoids selling at a local low.
當動能仲向上嘅時候減倉會錯失升幅。「WAIT」即係:暫時唔郁,等動能一轉弱就減。避免喺低位賣出。
Q: Stop-loss hit, but technicals say BUY. Should I add or sell?
止蝕已觸發但技術面 BUY,應該加倉定沽?
A: Default = follow the stop-loss (sell). Stop-loss exists exactly because oversold bounces can be fake-outs. The "technicals improving" note is information, not permission to override the rule.
預設 = 跟止蝕規則 (沽)。止蝕規則就係防止你被 oversold 反彈呃。「技術面改善」係背景資訊,唔係叫你打破規則。
💡 Every technical term used on this dashboard, explained in plain English + Cantonese with the math behind it.
呢個 dashboard 用到嘅每個技術詞彙,平實英文同廣東話解釋,連埋背後嘅數學公式。睇唔明邊個詞就嚟呢度查。
📈 Technical Signals / 技術訊號
RSI (Relative Strength Index) — 相對強弱指數
EN · Momentum oscillator on a 0–100 scale measuring how 'overbought' or 'oversold' a stock is, based on recent gains vs losses. Default lookback = 14 periods.
廣東話 · 0 到 100 嘅動能指標,量度隻股票最近升得快定跌得急。一般用 14 日數據。
RSI = 100 − 100 / (1 + RS)
RS = average gain over N periods / average loss over N periods
N = 14 (default)
📍 Dashboard 用法 / How it shows up: > 70 = overbought 超買 (might pull back) · < 30 = oversold 超賣 (might bounce)
MACD (Moving Average Convergence Divergence) — 指數平滑異同移動平均線
EN · Trend-following momentum indicator built from the difference of two EMAs. The signal line crossing tells you when momentum flips.
廣東話 · 用兩條指數移動平均線(EMA)相減出嘅趨勢動能指標。Signal line 交叉即係動能轉向。
MACD = EMA₁₂(price) − EMA₂₆(price)
Signal = EMA₉(MACD)
Histogram = MACD − Signal
📍 Dashboard 用法 / How it shows up: MACD crosses above signal = bullish 看好 · crosses below = bearish 看淡
MA50 / MA200 (Moving Average) — 50 / 200 日移動平均線
EN · Average closing price over the last 50 or 200 trading days. Price above MA50 = short-term uptrend; price above MA200 = long-term uptrend.
廣東話 · 過去 50 日或 200 日嘅平均收市價。股價企喺 MA50 之上即係短期升勢,企喺 MA200 之上即係長期升勢。
MA_N = (P₁ + P₂ + ... + P_N) / N
where P_i = closing price on day i
📍 Dashboard 用法 / How it shows up: Used to gauge trend direction. Golden cross (MA50 crosses above MA200) = strong bullish · Death cross = bearish.
Composite Signal — 綜合訊號
EN · Single −5 to +5 score combining technicals + futures direction. Drives the ACT/WATCH/FYI classification on the Today tab.
廣東話 · 將技術指標同期指方向加埋計出嘅 −5 至 +5 總分,決定 Today tab 嘅 ACT/WATCH/FYI 分級。
Composite = Technical Score (−4..+4) + Futures Score (−1..+1)
Range: −5 to +5
📍 Dashboard 用法 / How it shows up: |Composite| ≥ 4 → 🚨 ACT NOW · |Composite| = 3 → ⚠️ WATCH · 其他 → 📰 FYI
💰 Valuation / 估值
P/E Ratio (Price-to-Earnings) — 市盈率
EN · How many years of current earnings you're paying for one share. Lower = cheaper relative to earnings (everything else equal).
廣東話 · 你買一股要等公司賺幾多年先回本。數字細 = 相對估值平。
P/E = Share Price / Earnings Per Share (EPS)
Forward P/E uses next-year estimated EPS
Trailing P/E uses past 12 months actual EPS
📍 Dashboard 用法 / How it shows up: Rough guide: <15 cheap · 15–25 normal · >30 rich (high growth expected)
PEG Ratio (P/E to Growth) — 市盈增長率
EN · P/E divided by expected earnings growth rate. Normalises P/E so you can compare slow-growth vs high-growth companies.
廣東話 · 用 P/E 除以預期盈利增長率。將增長因素計埋入去,方便比較高增長同低增長公司。
PEG = P/E ÷ Annual EPS Growth Rate (%)
📍 Dashboard 用法 / How it shows up: <1.0 cheap relative to growth 平 · 1.0–2.0 reasonable 合理 · >2.0 rich 貴
DCF (Discounted Cash Flow) — 現金流折現法
EN · Estimates a stock's 'fair' value by projecting future free cash flows and discounting them back to today. The number the Models tab calls Intrinsic value.
廣東話 · 預測公司未來嘅自由現金流,再用折現率換算返今日嘅價值,計出隻股嘅「合理價」。Models tab 嘅 Intrinsic value 就係咁計出嚟。
DCF = Σ [ FCF_t / (1+r)^t ] for t = 1..N
+ Terminal Value / (1+r)^N
r = discount rate (WACC)
FCF_t = projected free cash flow in year t
📍 Dashboard 用法 / How it shows up: Simplified 2-stage DCF with a category-aware discount rate — defensive 6.5% · normal 9% · hypergrowth 12% (stable cash flows deserve a lower rate). Directional only. 唔同類型用唔同折現率,只係方向參考。
DDM (Dividend Discount Model) — 股息折現模型
EN · Values a dividend-paying stock from its dividends alone: next year's dividend grown forever, discounted by the required return. Used as a second opinion on dividend compounders (PG, JNJ, JR Central).
廣東話 · 淨係用股息嚟估值:將明年股息用固定增長率永續派落去,再折現。用嚟同 DCF 做對照,睇派息股(PG、JNJ、JR 東海)。
V = D₀ × (1 + g) / (r − g)
D₀ = current annual dividend per share
g = dividend growth rate · r = cost of equity
📍 Dashboard 用法 / How it shows up: Works only when r > g. Bad fit for low-payout names (e.g. JR Central retains cash for capex) — when DCF and DDM disagree the Models tab flags models diverge. 派息少嘅公司唔啱用。
Relative Valuation (sector P/E) — 相對估值(行業市盈率)
EN · For ETFs/baskets, DCF makes no sense — instead compare the basket's current P/E to its long-run average. Above average = paying a premium; below = a discount.
廣東話 · ETF / 一籃子資產用 DCF 冇意思,改為將佢嘅市盈率對比長期平均值。高過平均 = 貴咗、低過 = 抵。
P/E-fair price = current price × (baseline P/E ÷ current P/E)
premium % = (current P/E − baseline) / baseline
📍 Dashboard 用法 / How it shows up: Baselines are static long-run anchors (XLF≈14 · IEV≈15 · IEMG≈13) — review yearly. Directional only. 基準係長期錨點,每年檢討。
P/TBV × ROE (justified book multiple) — 合理市帳率(ROE 估值)
EN · For financials/holding cos (e.g. BRK-B), a DCF is unreliable — value them off book value instead. A higher return on equity (ROE) justifies paying a higher multiple of book value.
廣東話 · 金融股 / 控股公司(例如 BRK-B)用 DCF 唔準,改為用帳面值估值。ROE 越高,越值得畀高啲嘅市帳率。
Justified P/B = (ROE − g) / (r − g)
Fair price = Justified P/B × (tangible) book value per share
r = cost of equity · g = long-run book growth
📍 Dashboard 用法 / How it shows up: Market P/B < Justified P/B → cheap 抵 · uses tangible book (TBVPS) when available, else book value. 用有形帳面值優先。
Reverse DCF (implied growth) — 反向 DCF(隱含增長)
EN · Instead of guessing growth to get a price, it does the opposite: takes today's price as given and solves for the FCF growth rate the market must be assuming. Best for high-multiple names (TSLA, NVDA) where a forward DCF is fragile.
廣東話 · 唔係估增長計價,而係反過嚟:用今日股價倒推「市場假設咗幾多 FCF 增長」。最啱估值高、forward DCF 唔穩嘅股(TSLA、NVDA)。
Solve for g such that: DCF(g) per share = current price
(bisection on the same 2-stage DCF)
📍 Dashboard 用法 / How it shows up: Then ask: is that implied growth realistic? >30%/yr = priced for perfection 偏貴 · <12%/yr = modest expectations 偏平 · can't solve even at 80% = overvalued.
Rule of 40 — 40 法則
EN · A quality check for growth companies: a healthy business should have revenue growth + profit margin ≥ 40%. Balances 'growing fast' against 'making money'.
廣東話 · 增長股嘅質素檢查:健康嘅公司,營收增長率 + 利潤率應該 ≥ 40%。平衡「增長快」同「賺唔賺到錢」。
Rule of 40 = Revenue growth % + FCF margin %
FCF margin = Free Cash Flow / Revenue
📍 Dashboard 用法 / How it shows up: ≥ 40 ✓ healthy growth-vs-profitability balance · < 40 ✗ either growth or margins are lagging. 用嚟驗證高增長股質素。
Intrinsic Value — 內在價值 / 合理價
EN · What a share is theoretically worth based on fundamentals (cash flows, growth, risk), independent of today's market price.
廣東話 · 根據基本面(現金流、增長、風險)計算出嚟嘅理論價值,唔受市場情緒影響。
See DCF formula above.
📍 Dashboard 用法 / How it shows up: Market price < Intrinsic → potentially undervalued 偏平 · Market > Intrinsic → overvalued 偏貴
EV/EBITDA (Enterprise Multiple) — 企業價值倍數 (EV/EBITDA)
EN · How many years of operating cash earnings (EBITDA) the WHOLE business is selling for — including debt. Used as a sector comparable: 'do similar businesses sell for more or less than this one?' EBITDA strips out tax / interest / depreciation, so it's the cleanest 'pure operations' profit measure.
廣東話 · 成盤生意(連債務)值幾多倍嘅營運現金收益(EBITDA)。用嚟同行業比較:「同類生意一般成交價係咩水平?」EBITDA 撇咗稅項、利息、折舊,係最純粹嘅營運盈利衡量。
EV = Market Cap + Debt − Cash (what it'd cost to buy the whole company)
EV/EBITDA = EV / EBITDA
Fair price = (EBITDA × sector multiple − Net Debt) / Shares Outstanding
📍 Dashboard 用法 / How it shows up: Typical sector multiples (long-run): Tech ~18× · Energy ~6× · Consumer Defensive ~14× · Industrials ~11× · Real Estate ~18×. NOT used for financials — banks don't have a meaningful EBITDA (interest IS the business).
Forward P/E × Consensus EPS (Price Target) — 前瞻 P/E × 預期 EPS 目標價
EN · The most common price-target method on Wall Street: take the analyst-consensus forecast for next year's earnings per share, then multiply by a 'fair' sector P/E multiple. Says: 'how much would the market typically pay for next year's expected earnings in this sector?'
廣東話 · 華爾街最普遍嘅目標價方法:用分析員對下年 EPS 嘅共識預期,乘以一個「合理」行業 P/E 倍數。意思係「市場一般肯俾幾多錢買下年嘅預期盈利?」
Target Price = Forward EPS × Sector Forward-P/E Baseline
Forward EPS = analyst-consensus next-12-month EPS
Typical baselines: Tech ~25× · Cons. Cyclical ~20× · Financials ~12× · Energy ~13×
📍 Dashboard 用法 / How it shows up: Compares your stock's current Forward P/E to the sector baseline — if it's trading at a much higher multiple than the sector, it's expensive even if earnings grow as expected. Skipped for REITs (AFFO multiples are better).
Multi-model consensus & confidence — 多模型共識 + 信心度
EN · No single valuation model is right for every stock, so each name runs every model that fits it (DCF, DDM, relative P/E, P/TBV). Each model casts a vote (BUY if >+15% upside, SELL if <−15%, else NEUTRAL); the fair value shown is the median of the models. Confidence reflects how much they agree — it is a guard against acting on one fragile number.
廣東話 · 冇一個估值模型啱晒所有股,所以每隻股會跑所有適用嘅模型(DCF、DDM、行業市盈率、P/TBV)。每個模型投一票(升幅 >+15% = BUY、<−15% = SELL、其餘 NEUTRAL);顯示嘅合理價係各模型嘅中位數。信心度反映佢哋有幾一致 — 防止你淨係靠一個脆弱數字落決定。
Fair value = median(model fair values)
Vote: upside >+15% → BUY · <−15% → SELL · else NEUTRAL
📍 Dashboard 用法 / How it shows up: high ✓ 2+ models agree — usable signal · med ~ models lean one way · low ! single model only — treat as a hint 唔好當訊號 · conflict ⚠ models disagree (e.g. DCF vs DDM) — do not trade on valuation alone 唔好淨靠估值。
📊 Portfolio Metrics / 倉位指標
Cost Basis — 投入本金
EN · Total amount you originally paid to acquire your holdings (sum of buy prices × shares, plus fees).
廣東話 · 你買入持倉時實際付出嘅總金額(買入價 × 股數,加埋手續費)。
Cost Basis = Σ (Buy Price × Shares Bought) + Fees
📍 Dashboard 用法 / How it shows up: Shown at the top of the Portfolio tab as 投入本金 (total bought).
P&L (Profit and Loss) — 損益
EN · How much you've gained or lost vs your cost basis. Can be 'unrealised' (still holding) or 'realised' (after selling).
廣東話 · 對比投入本金,你而家賺咗定蝕咗幾多。仲未沽就叫「未實現」損益,沽咗就係「已實現」。
P&L (¥) = Current Value − Cost Basis
P&L (%) = P&L ÷ Cost Basis × 100
📍 Dashboard 用法 / How it shows up: Shown per-holding (badge) and as portfolio total in the overview card.
Drift — 倉位偏差
EN · Difference between your current actual weight in a holding and your target weight. Big drift = portfolio out of balance.
廣東話 · 你某隻持倉嘅實際比例同目標比例之間嘅差距。偏差越大,組合越偏離原本嘅配置計劃。
Drift = Current Weight % − Target Weight %
Current Weight = Position Value / Total Portfolio Value
📍 Dashboard 用法 / How it shows up: Rebalance tab: + drift = 超配 Overweight (考慮減倉) · − drift = 低配 Underweight (考慮加倉)
Overweight / Underweight — 超配 / 低配
EN · You hold MORE of a position than your target (overweight) or LESS than your target (underweight).
廣東話 · 你某隻持倉嘅實際比例比目標高(超配)或低(低配)。
Overweight: Current Weight > Target Weight
Underweight: Current Weight < Target Weight
📍 Dashboard 用法 / How it shows up: Rebalance tab flags 超配 = trim (SELL) · 低配 = top up (BUY).
💼 Trading Rules / 交易規則
Stop-Loss — 止蝕位
EN · Pre-set price at which you exit a position to cap losses. This dashboard uses a fixed 10% rule.
廣東話 · 預先設定嘅沽出價位,當股價跌到呢個位就走,限制最大虧損。Dashboard 用固定 10% 規則。
Stop Price = Entry Price × (1 − 0.10) = Entry × 0.90
📍 Dashboard 用法 / How it shows up: Portfolio tab: STOP LOSS HIT = current price has crossed below stop level. ACT or revise thesis.
Position Sizing Tiers — 倉位分級
EN · How much ¥ to put into a single trade. Core = conviction holds, Satellite = supporting bets, Speculative = small punts.
廣東話 · 每次落單嘅金額,按信心程度分級。Core = 核心倉、Satellite = 衛星倉、Speculative = 投機倉。
Trade Size = Tier Base × Signal Multiplier
Tier Base — Core: ¥500k · Satellite: ¥200k · Speculative: ¥100k
Multiplier — BUY (+3): ×1.0 · STRONG BUY (+4/+5): ×1.5
📍 Dashboard 用法 / How it shows up: Used by the action engine to compute share counts for ACT-tier BUY signals.
Limit Price (BUY / SELL) — 限價單
EN · Price at which an order is placed, not the current market price. Saves a small spread.
廣東話 · 落單時指定嘅成交價,唔係即市價,可以慳少少差價。
BUY Limit = Current Price × 0.99 (try to buy 1% cheaper)
SELL Limit = Current Price (sell at market)
📍 Dashboard 用法 / How it shows up: Shown on the Today tab as the suggested order price.
Position Concentration Limits — 倉位集中度上限
EN · Hard caps to stop the portfolio becoming dangerously concentrated in one name or sector.
廣東話 · 防止組合過度集中喺單一股票或行業嘅硬性上限。
Max single position: 20% of total portfolio
Max sector concentration: 25% of total portfolio
📍 Dashboard 用法 / How it shows up: Action engine skips BUY signals that would breach these caps.
🏛 Tax (Japan) / 稅務(日本)
Tax-Loss Harvesting — 稅務蝕讓收割
EN · Selling a loss-making holding to realise the loss, which you can then use to offset capital gains tax on profitable trades.
廣東話 · 沽出蝕緊嘅倉位將虧損實現咗,再用嚟扣減其他賺錢交易嘅資本增值稅。
Tax Saving ≈ Realised Loss × 0.20315 (Japan capital gains rate)
📍 Dashboard 用法 / How it shows up: Tax-Loss tab lists candidates with potential ¥ saving estimated at 20.315%.
NISA / iDeCo — 日本免稅投資戶口
EN · Japanese tax-advantaged accounts. NISA = general tax-free investing wrapper. iDeCo = retirement account with tax-deductible contributions.
廣東話 · 日本免稅投資戶口。NISA = 一般免稅投資戶口;iDeCo = 退休金戶口,供款可扣稅。
(No formula — capital gains in these accounts are tax-exempt.)
📍 Dashboard 用法 / How it shows up: Excluded from tax-loss harvesting candidates since there's no tax to save.
Capital Gains Tax Rate (Japan) — 日本資本增值稅率
EN · Standard combined rate (income tax + reconstruction surtax + local) on stock gains for residents.
廣東話 · 日本居民股票收益嘅標準稅率(國稅 15% + 復興特別稅 0.315% + 地方稅 5%)。
20.315% = 15% (national) + 0.315% (reconstruction) + 5% (local)
📍 Dashboard 用法 / How it shows up: Used to estimate tax saving from harvesting losses.
📅 Earnings / 業績
EPS (Earnings Per Share) — 每股盈利
EN · Company's net profit divided by number of shares outstanding. The headline number markets focus on every quarter.
廣東話 · 公司純利除以發行股數。每季業績焦點,市場最關注嘅數字。
EPS = Net Income / Shares Outstanding
📍 Dashboard 用法 / How it shows up: Earnings tab compares estimated vs actual EPS — the gap is the 'surprise'.
Earnings Surprise — 業績意外
EN · How far actual EPS beat or missed analyst estimates, in %. Big surprises move stock prices fast.
廣東話 · 實際 EPS 同分析員預期之間嘅差距(%)。意外大會推動股價短期內急升或急跌。
Surprise % = (Actual EPS − Estimated EPS) / |Estimated EPS| × 100
📍 Dashboard 用法 / How it shows up: Earnings tab: > +2% beat 跑贏 (green) · < −2% miss 失望 (red)
🌐 Macro / 宏觀
VIX (Volatility Index) — 波動率指數
EN · Market's expected 30-day volatility of the S&P 500, derived from option prices. The 'fear gauge'.
廣東話 · S&P 500 未來 30 日嘅預期波動率,由期權價推算出嚟。俗稱「恐慌指數」。
Computed from a weighted strip of SPX option prices.
Higher VIX = more expected swings = more fear.
📍 Dashboard 用法 / How it shows up: < 15 calm 平靜 · 15–25 normal · > 30 stressed 恐慌
Fear & Greed Index (F&G) — 恐慌貪婪指數
EN · CNN's 0–100 composite of 7 market sentiment indicators (momentum, breadth, volatility, safe-haven demand, etc.).
廣東話 · CNN 用 7 個情緒指標(動能、廣度、波動、避險需求等)綜合出嘅 0–100 市場情緒分數。
Weighted average of 7 sub-indicators, each normalised to 0–100.
📍 Dashboard 用法 / How it shows up: 0–25 Extreme Fear 極度恐慌 (often a buy signal) · 75–100 Extreme Greed 極度貪婪 (often a sell signal)
DXY (US Dollar Index) — 美元指數
EN · USD strength against a basket of 6 major currencies (EUR, JPY, GBP, CAD, SEK, CHF).
廣東話 · 美元對 6 隻主要貨幣(歐元、日圓、英鎊、加元、瑞典克朗、瑞郎)嘅相對強弱指數。
DXY = 50.14348112 × EURUSD^(−0.576) × USDJPY^(0.136) × GBPUSD^(−0.119) × USDCAD^(0.091) × USDSEK^(0.042) × USDCHF^(0.036)
📍 Dashboard 用法 / How it shows up: DXY ↑ = stronger dollar, usually a headwind for US exporters, gold, EM stocks.
UST Yield (10Y / 30Y) — 美國國債孳息率
EN · Annual yield on US Treasury bonds. The 10Y is the benchmark 'risk-free rate' that prices most other assets.
廣東話 · 美國國債嘅年化息率。10 年期係定價其他資產嘅基準「無風險利率」。
Yield to Maturity (YTM): the discount rate that makes the bond's discounted cash flows equal its market price.
📍 Dashboard 用法 / How it shows up: Rising yields = bonds yield more = stocks (especially growth) usually pressured. 孳息上升通常對股票尤其是成長股不利。
USD/JPY — 美元/日圓滙率
EN · How many yen one US dollar buys. Matters a lot for a JPY-based portfolio holding US assets.
廣東話 · 1 美元換幾多日圓。對日圓計價但持有美國資產嘅組合影響好大。
USD/JPY = JPY per 1 USD
📍 Dashboard 用法 / How it shows up: USD/JPY ↑ (weaker yen) = your USD holdings gain in JPY terms even if the USD price didn't move.
Futures (ES / NQ / Nikkei) — 期指
EN · Contracts to buy/sell an index at a future date. Trade nearly 24h — give a directional read before the cash market opens.
廣東話 · 預先約定喺未來日期買賣指數嘅合約。差唔多 24 小時交易,可以喺現貨開市前透視方向。
(Pricing) Futures = Spot × e^((r − q) × T)
r = risk-free rate, q = dividend yield, T = time to expiry
📍 Dashboard 用法 / How it shows up: Macro tab: ES (S&P), NQ (Nasdaq), Nikkei futures — used to bias the composite signal ±1.
Sector & Industry (GICS) — 行業分類 (GICS)
EN · Every public company is categorised by what it does. The dashboard uses yfinance's classification (follows the GICS standard). Used to (a) pick the right valuation model, and (b) read the sector ETF + key macro driver relevant to THAT stock — instead of treating every stock the same way.
廣東話 · 每間上市公司都按業務性質分類,dashboard 用 yfinance 嘅 GICS 行業分類。用嚟 (a) 揀啱嘅估值模型,(b) 讀返同隻股相關嘅行業 ETF + 宏觀因素 — 唔係所有股都用同一套指標。
11 GICS sectors: Technology · Communication Services · Consumer Cyclical · Consumer Defensive · Healthcare · Financial Services · Industrials · Energy · Basic Materials · Utilities · Real Estate
Each sector → its SPDR sector ETF (XLK / XLC / XLY / XLP / XLV / XLF / XLI / XLE / XLB / XLU / VNQ) and a key macro driver (rates · oil · USD · etc.)
📍 Dashboard 用法 / How it shows up: Powers Lens 4 (Macro) on the Today tab — sector momentum + the driver relevant to this stock, instead of one VIX/F&G read shared by everyone. Also drives auto-classification of asset class (defensive / financial / hypergrowth / etc.) in model_builder.
Sector ETFs (XLK / XLF / XLE / etc.) — 行業 ETF
EN · Single ETF tracking all the stocks in one GICS sector. Reading its day-change or composite signal gives you a clean view of whether THE WHOLE SECTOR is in or out of favour today, without one mega-cap skewing it.
廣東話 · 追蹤一個 GICS 行業所有股票嘅 ETF。睇佢嘅日內變動或綜合訊號,可以乾淨咁睇到「成個行業今日係咪當炒」,唔會被一兩隻大型股扭曲。
11 SPDR sector ETFs (one per GICS sector):
XLK Tech · XLC Comm Svcs · XLY Cons. Cyclical · XLP Cons. Defensive · XLV Healthcare · XLF Financials · XLI Industrials · XLE Energy · XLB Materials · XLU Utilities · VNQ Real Estate
📍 Dashboard 用法 / How it shows up: Lens 4 (Macro): when a stock's sector ETF is up + key macro driver is favourable → sector tailwind = small extra BUY vote. Opposite for headwind. Independent of broad VIX/F&G.
Asset Class (defensive / normal / hypergrowth / financial / commodity) — 資產類別
EN · Same DCF formula doesn't fit every business. The dashboard classifies each stock by its 'asset class' to pick the right valuation method and discount rate. Auto-detected from sector/industry when not in the hand-curated list.
廣東話 · 同一條 DCF 公式唔啱晒所有股。Dashboard 將每隻股歸入「資產類別」,揀啱嘅估值方法同折現率。冇人手標籤嘅,按行業自動分類。
defensive (consumer staples, utilities, REITs) → DCF at 6.5% WACC + DDM if pays dividend
normal (most mega-caps, cyclicals, payments) → DCF at 9% WACC
hypergrowth (revenue growth > 30%) → reverse-DCF + Rule of 40 (forward DCF unreliable)
financial (banks, insurers) → P/TBV × ROE (DCF doesn't work)
commodity (gold ETF, leveraged products) → macro scorecard (rates / oil / USD / VIX)
etf (sector index ETFs) → relative sector P/E vs long-run baseline
📍 Dashboard 用法 / How it shows up: Shown in the Models sheet. Lens 2 (Valuation) on Today tab applies the right model automatically. Manually-overridden names are flagged as 'manual'; auto-classified are flagged 'auto' (slightly lower conviction since the classification can be wrong).