diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..8240be1 --- /dev/null +++ b/SKILL.md @@ -0,0 +1,519 @@ +# SKILL: Indonesian Stock Analysis Using TradingView Screener MCP + +## Overview + +Use the TradingView Screener MCP tools to analyze Indonesian stocks (IDX: Jakarta Stock Exchange) by combining **fundamental analysis** (company financial health) and **technical analysis** (price/volume action). This skill provides structured methodologies to produce actionable stock analysis reports. + +Indonesian stocks are accessed via `market_type="stocks"` and `market_country="indonesia"`. + +--- + +## Available MCP Tools + +| Tool | Purpose | +|------|---------| +| `get_stock_quotes(tickers=["IDX:SYMBOL"])` | Get real-time price & indicators for 1+ tickers | +| `screen_market(market_country="indonesia", ...)` | Screen across all IDX stocks with filters | +| `find_top_gainers(market_country="indonesia")` | Top gainers by % change | +| `find_top_losers(market_country="indonesia")` | Top losers by % change | +| `find_most_active(market_country="indonesia")` | Most active by volume | +| `technical_scan(market_country="indonesia", ...)` | Screen using technical conditions | +| `fundamental_scan(market_country="indonesia", ...)` | Screen using fundamental metrics | + +--- + +## 1. Get Indonesian Stock Data + +### 1.1 Quote Data for Specific Stocks + +```json +get_stock_quotes({ + "tickers": ["IDX:BBRI", "IDX:TLKM", "IDX:ASII"], + "columns": ["name","close","change","volume","RSI","MACD.macd","MACD.signal","SMA50","SMA200","market_cap_basic","price_earnings_ttm","price_to_book_fq","dividends_yield_current","return_on_equity","sector","industry"] +}) +``` + +### 1.2 Screen Indonesian Market + +```json +screen_market({ + "market_country": "indonesia", + "columns": ["name","close","change","volume","RSI","market_cap_basic","price_earnings_ttm"], + "order_by": "volume", + "limit": 50 +}) +``` + +### 1.3 Fundamental Screen + +```json +fundamental_scan({ + "market_country": "indonesia", + "filters": [ + {"field": "market_cap_basic", "operator": ">", "value": 10000000000000}, + {"field": "price_earnings_ttm", "operator": "between", "value": [5, 20]}, + {"field": "dividends_yield_current", "operator": ">", "value": 2}, + {"field": "return_on_equity", "operator": ">", "value": 10} + ], + "columns": ["name","close","market_cap_basic","price_earnings_ttm","price_to_book_fq","dividends_yield_current","return_on_equity","debt_to_equity","profit_margin","sector"] +}) +``` + +### 1.4 Technical Scan + +```json +technical_scan({ + "market_country": "indonesia", + "filters": [ + {"field": "RSI", "operator": "<", "value": 35}, + {"field": "close", "operator": "above_pct", "value": ["SMA200", 0.95]} + ], + "columns": ["name","close","change","RSI","SMA50","SMA200","volume","relative_volume_10d_calc"] +}) +``` + +--- + +## 2. Fundamental Analysis Framework + +### Core Metrics Table + +| Metric | Field Name | What It Tells You | Healthy Range (IDX) | +|--------|-----------|-------------------|-------------------| +| **Market Cap** | `market_cap_basic` | Company size (in IDR) | Large-cap: >10T IDR | +| **P/E Ratio** | `price_earnings_ttm` | Price per unit of earnings | 8-18 (value); 18-30 (growth) | +| **P/B Ratio** | `price_to_book_fq` | Price vs book value | <2.5 for banks; <1.5 for cyclicals | +| **P/S Ratio** | `price_to_sales` | Price per unit of revenue | <3 (undervalued) >5 (premium) | +| **P/CF Ratio** | `price_to_cash_flow` | Price vs operating cash flow | <15 (reasonable) | +| **EPS (TTM)** | `earnings_per_share_diluted_ttm` | Profit per share | Positive & growing | +| **EPS Growth** | `earnings_per_share_diluted_yoy_growth_ttm` | Earnings momentum | >10% YoY | +| **Revenue Growth** | `revenue_growth` | Top-line growth | >5% (mature) >15% (growth) | +| **Earnings Growth** | `earnings_growth` | Bottom-line growth | Should track revenue growth | +| **ROE** | `return_on_equity` | Return on shareholder equity | >12% (good) >20% (excellent) | +| **ROA** | `return_on_assets` | Return on total assets | >5% (good) | +| **Profit Margin** | `profit_margin` | Net profit margin | >10% (good) | +| **Operating Margin** | `operating_margin` | Operating efficiency | >15% (good) | +| **Debt/Equity** | `debt_to_equity` | Leverage ratio | <1 (conservative) <2 (moderate) | +| **Current Ratio** | `current_ratio_fq` | Liquidity | >1.5 (safe) | +| **Dividend Yield** | `dividends_yield_current` | Dividend return | 2-6% (varies by sector) | +| **Beta** | `beta_1_year` | Volatility vs market | 0.5-1.5 (typical) | +| **Sector** | `sector` | Industry classification | — | +| **Industry** | `industry` | Sub-industry | — | + +### 2.1 Valuation Analysis + +Use this combo to assess if a stock is **undervalued, fair, or overvalued**: + +``` +P/E + P/B + P/S + Dividend Yield + EPS Growth → Valuation Picture +<10 + <1 + <1 + >4% + positive → Deep value +10-15 + 1-2 + 1-3 + 2-4% + 5-15% → Fair value +15-25 + 2-4 + 3-6 + 1-2% + 15-25% → Growth premium +>25 + >4 + >6 + <1% + >25% → Overvalued / high growth +``` + +### 2.2 Quality Analysis (PEG + ROE + Debt) + +``` +PEG Ratio = P/E ÷ EPS Growth + - <1.0 → Undervalued relative to growth + - 1.0-2.0 → Fairly valued + - >2.0 → Overvalued relative to growth + +Quality Score (0-3): + - ROE > 15% → +1 + - D/E < 1.0 → +1 + - Profit Margin > 10% → +1 +``` + +### 2.3 Indonesian Market-Specific Notes + +- **Sector concentration**: IDX is dominated by Financials (banks: BBRI, BMRI, BBNI), Consumer (UNVR, ICBP, INDF), Telecom (TLKM), Mining/Energy (ADRO, ITMG, BUMI), and Infrastructure (JSMR, TLKM). +- **Liquidity matters**: Only stocks with daily volume > 1M shares are reliably tradeable. +- **Foreign ownership**: Sudden changes affect price — track institutional/insider ownership. +- **Regulatory influence**: Government policy (energy, mining, banking) heavily impacts IDX. +- **Rupiah (IDR) risk**: Currency depreciation hurts import-heavy sectors, benefits export/mining. +- **Dividend season**: Most IDX companies pay dividends once a year around April-June. +- **ARB / ARA limits**: IDX has daily price limits (7% down = ARB, up = ARA typically for most stocks, but can vary). Use `low`/`high` to check. + +--- + +## 3. Technical Analysis Framework + +### Core Indicators + +| Indicator | Field | What It Does | How to Interpret | +|-----------|-------|-------------|------------------| +| **RSI (14)** | `RSI` | Momentum oscillator (0-100) | >70 overbought, <30 oversold | +| **RSI (5)** | `RSI.5` | Short-term momentum | Same, faster signals | +| **MACD** | `MACD.macd`, `MACD.signal`, `MACD.histogram` | Trend-momentum | Line > Signal → bullish, < Signal → bearish | +| **Stochastic** | `Stoch.K`, `Stoch.D` | %K & %D lines | >80 overbought, <20 oversold; K crosses D → signal | +| **Bollinger Bands** | `BB.upper`, `BB.middle`, `BB.lower` | Volatility bands | Touch upper → overextended; touch lower → potential bounce | +| **SMA 20** | `SMA20` | Short-term trend | Price > SMA20 → short-term uptrend | +| **SMA 50** | `SMA50` | Medium-term trend | Price > SMA50 → medium-term uptrend | +| **SMA 200** | `SMA200` | Long-term trend | Price > SMA200 → long-term bull market | +| **EMA 5/20/50/200** | `EMA5`, `EMA20`, `EMA50`, `EMA200` | Exponential MA (faster response) | Same as SMA but more current-price-sensitive | +| **ADX** | `ADX` | Trend strength | >25 → trending; <25 → ranging | +| **ATR** | `ATR` | Volatility measure | Higher → wider stops needed | +| **CCI (20)** | `CCI20` | Commodity Channel Index | >100 overbought, <-100 oversold | +| **OBV** | `OBV` | On-Balance Volume | Confirms price trends; divergence warns of reversal | +| **Williams %R** | `Williams %R` | Momentum (-100 to 0) | <-80 oversold, >-20 overbought | +| **Awesome Osc** | `AO` | Momentum (SMA5-SMA34) | >0 bullish momentum, <0 bearish | +| **VWAP** | `VWAP` | Volume-weighted avg price | Above VWAP → bullish intraday | +| **52W High/Low** | `52 Week High`, `52 Week Low` | Yearly range | Near 52W high → strong trend; near 52W low → weak | +| **Rel Volume** | `relative_volume_10d_calc` | Volume vs 10d avg | >1.5 → unusually active | +| **Tech Rating** | `TechRating_1D` | Aggregate daily rating | 0-6 range (6 = best) | + +### 3.1 Trend Confirmation Pattern + +``` +Bullish Setup: + - Price > SMA50 > SMA200 (golden arrangement) + - SMA50 > SMA200 (golden cross already happened) + - RSI between 40-70 (room to run) + - MACD > Signal line (momentum up) + - ADX > 25 (trending) + +Bearish Setup: + - Price < SMA50 < SMA200 (death arrangement) + - SMA50 < SMA200 (death cross) + - RSI between 30-50 + - MACD < Signal line + - ADX > 25 (trending) +``` + +### 3.2 Reversal / Bounce Pattern + +``` +Potential Bottom: + - RSI < 30 (oversold) + - Price near BB.lower or below SMA200 + - MACD histogram narrowing (bearish momentum fading) + - Stoch.K crossing above Stoch.D near <20 + - OBV diverging bullish (price lower, OBV higher) + +Potential Top: + - RSI > 70 (overbought) + - Price near BB.upper or far above SMA200 + - MACD histogram narrowing (bullish momentum fading) + - Stoch.K crossing below Stoch.D near >80 + - OBV diverging bearish (price higher, OBV lower) +``` + +### 3.3 Volume Analysis + +``` +relative_volume_10d_calc: + - > 2.0 → Extraordinary volume (breakout / breakdown) + - 1.5-2.0 → Above average (institutional interest) + - 1.0-1.5 → Normal activity + - < 0.5 → Low interest (illiquid) + +Powerful signals: + - Price up + Volume > 1.5x → Strong accumulation + - Price up + Volume < 0.7x → Weak rally (may reverse) + - Price down + Volume > 1.5x → Strong distribution + - Price down + Volume < 0.7x → Exhaustion (may bottom) +``` + +--- + +## 4. Comprehensive Analysis Template + +Use this structure when asked to analyze a specific Indonesian stock. Fetch data in a single batch call using `get_stock_quotes` with ALL relevant columns. + +### Required Data Fetch + +```json +get_stock_quotes({ + "tickers": ["IDX:{TICKER}"], + "columns": [ + "name","description","sector","industry","exchange","currency", + "close","open","high","low","volume","change","change_abs", + "market_cap_basic","price_earnings_ttm","earnings_per_share_diluted_ttm", + "earnings_per_share_diluted_yoy_growth_ttm","price_to_book_fq","price_to_sales", + "price_to_cash_flow","dividends_yield_current","dividends_payout_ratio", + "return_on_equity","return_on_assets","operating_margin","profit_margin", + "revenue_growth","earnings_growth","debt_to_equity","current_ratio_fq", + "beta_1_year","float","shares_outstanding", + "RSI","RSI.5","Stoch.K","Stoch.D","MACD.macd","MACD.signal","MACD.histogram", + "BB.upper","BB.middle","BB.lower","SMA20","SMA50","SMA200", + "ADX","ATR","CCI20","OBV","AO","Williams %R", + "VWAP","52 Week High","52 Week Low","relative_volume_10d_calc","volume_ma_10", + "TechRating_1D" + ] +}) +``` + +### 4.1 Analysis Report Format + +``` +# Stock Analysis: {NAME} ({TICKER}) + +## Company Overview +- Sector: {sector} +- Industry: {industry} +- Market Cap: {market_cap_basic} IDR +- Description: {description} + +## Price Snapshot +- Current Price: {close} +- Daily Change: {change}% ({change_abs}) +- 52W Range: {52 Week Low} - {52 Week High} +- VWAP: {VWAP} + +## Fundamental Analysis + +### Valuation +- P/E (TTM): {price_earnings_ttm} — [Undervalued/Fair/Overvalued — explain vs sector avg] +- P/B: {price_to_book_fq} — [Price vs book value assessment] +- P/S: {price_to_sales} +- P/CF: {price_to_cash_flow} +- Dividend Yield: {dividends_yield_current}% + +### Profitability +- ROE: {return_on_equity}% +- ROA: {return_on_assets}% +- Operating Margin: {operating_margin}% +- Profit Margin: {profit_margin}% + +### Growth & Momentum +- EPS (TTM): {earnings_per_share_diluted_ttm} +- EPS YoY Growth: {earnings_per_share_diluted_yoy_growth_ttm}% +- Revenue Growth: {revenue_growth}% +- Earnings Growth: {earnings_growth}% + +### Financial Health +- Debt/Equity: {debt_to_equity} +- Current Ratio: {current_ratio_fq} +- Beta (1Y): {beta_1_year} + +## Technical Analysis + +### Trend +- Price vs SMA20: {close vs SMA20} +- Price vs SMA50: {close vs SMA50} +- Price vs SMA200: {close vs SMA200} +- ADX: {ADX} — [Trending (ADX>25) or Ranging] +- Overall Trend: [Bullish/Bearish/Neutral] + +### Momentum +- RSI (14): {RSI} — [Overbought/Oversold/Neutral] +- RSI (5): {RSI.5} +- MACD: {MACD.macd} vs Signal {MACD.signal} — [Bullish/Bearish crossover? Histogram {MACD.histogram}] +- Stochastic: %K {Stoch.K} vs %D {Stoch.D} +- CCI (20): {CCI20} +- Williams %R: {Williams %R} +- Awesome Osc: {AO} — [Positive=Bearish momentum waiting / Negative=Bearish / Positive=Bulish / Negative=Bearish momentum waiting] + +### Volatility +- ATR: {ATR} +- Bollinger Bands Position: {close relative to BB.upper/BB.lower} +- 52W Range Position: {(close - 52W Low) / (52W High - 52W Low) * 100}% + +### Volume +- Volume: {volume} +- vs 10d Avg: {relative_volume_10d_calc}x +- OBV: {OBV} +- Vol MA(10): {volume_ma_10} + +### Technical Rating +- TechRating_1D: {TechRating_1D}/6 + +## Summary & Verdict + +### Fundamental Verdict +- [BUY / HOLD / SELL] — Based on valuation, profitability, growth, and financial health + +### Technical Verdict +- [BUY / HOLD / SELL] — Based on trend, momentum, volume, and volatility + +### Overall Recommendation +- [Strong Buy / Buy / Hold / Sell / Strong Sell] +- Key Catalysts/Risks: + 1. ... + 2. ... + 3. ... +``` + +### 4.2 Interpretation for Specific Indonesian Sectors + +**Financials / Banks (BBRI, BMRI, BBNI, BBTN)**: +- Focus on: P/B (<1.5 is cheap), ROE (>15%), NIM, D/E +- Healthy D/E is higher for banks (5-10x is normal) +- Low P/B + ROE > 15% = classic Graham-style buy for Indonesian banks + +**Consumer Goods (UNVR, ICBP, INDF, HMSP, GGRM)**: +- Focus on: Profit Margin > 12%, Revenue Growth > 5%, Dividend Yield +- Low D/E expected (< 0.8) +- Stable performers during economic uncertainty + +**Mining / Energy (ADRO, ITMG, PTBA, MEDC)**: +- Focus on: P/E (cyclical — buy at high P/E when earnings are low, avoid low P/E when earnings peak) +- Revenue Growth & Earnings Growth are commodity-price-driven +- High dividend yields common in coal sector + +**Infrastructure / Telco (TLKM, ISAT, JSMR, EXCL)**: +- Focus on: D/E (cap-ex heavy), Profit Margin, Revenue Growth +- P/E range 10-20 is normal for TLKM + +**Property / Real Estate (BSDE, PWON, CTRA, SMRA)**: +- Focus on: P/B, Current Ratio, D/E +- Highly sensitive to interest rates and BI policy + +### 4.3 Rating Scale + +When combining fundamental + technical into an overall verdict: + +| Score | Rating | Criteria | +|-------|--------|----------| +| 4.5-5.0 | **Strong Buy** | Undervalued + Bullish technical + Strong financials | +| 3.5-4.4 | **Buy** | Fair/Undervalued + Bullish/neutral technical + Good financials | +| 2.5-3.4 | **Hold** | Fair value + mixed technical + average financials | +| 1.5-2.4 | **Sell** | Overvalued + bearish technical + weak financials | +| 1.0-1.4 | **Strong Sell** | Overvalued + bearish technical + poor financials | + +--- + +## 5. Quick Screening Commands + +### Find Undervalued Large-Caps in IDX +```json +fundamental_scan({ + "market_country": "indonesia", + "filters": [ + {"field": "market_cap_basic", "operator": ">", "value": 10000000000000}, + {"field": "price_earnings_ttm", "operator": "between", "value": [5, 15]}, + {"field": "price_to_book_fq", "operator": "<", "value": 2}, + {"field": "return_on_equity", "operator": ">", "value": 12} + ], + "columns": ["name","close","change","market_cap_basic","price_earnings_ttm","price_to_book_fq","return_on_equity","dividends_yield_current","sector"], + "order_by": "market_cap_basic", + "limit": 20 +}) +``` + +### Find Oversold Bounce Candidates +```json +technical_scan({ + "market_country": "indonesia", + "filters": [ + {"field": "RSI", "operator": "<", "value": 30}, + {"field": "close", "operator": "above_pct", "value": ["SMA200", 0.9]}, + {"field": "relative_volume_10d_calc", "operator": ">", "value": 1.2} + ], + "columns": ["name","close","change","RSI","SMA200","relative_volume_10d_calc","MACD.histogram"], + "order_by": "RSI", + "limit": 20 +}) +``` + +### Find Breakout Candidates +```json +technical_scan({ + "market_country": "indonesia", + "filters": [ + {"field": "RSI", "operator": "between", "value": [50, 70]}, + {"field": "close", "operator": ">", "value": "SMA50"}, + {"field": "close", "operator": ">", "value": "SMA200"}, + {"field": "relative_volume_10d_calc", "operator": ">", "value": 1.5}, + {"field": "ADX", "operator": ">", "value": 25} + ], + "columns": ["name","close","change","RSI","SMA50","SMA200","ADX","relative_volume_10d_calc"], + "order_by": "relative_volume_10d_calc", + "limit": 20 +}) +``` + +### Find High-Dividend Stocks +```json +fundamental_scan({ + "market_country": "indonesia", + "filters": [ + {"field": "dividends_yield_current", "operator": ">", "value": 4}, + {"field": "market_cap_basic", "operator": ">", "value": 5000000000000}, + {"field": "price_earnings_ttm", "operator": "<", "value": 20}, + {"field": "dividends_payout_ratio", "operator": "<", "value": 80} + ], + "columns": ["name","close","dividends_yield_current","dividends_payout_ratio","price_earnings_ttm","market_cap_basic","sector"], + "order_by": "dividends_yield_current", + "limit": 20 +}) +``` + +### Find Growth Stocks +```json +fundamental_scan({ + "market_country": "indonesia", + "filters": [ + {"field": "revenue_growth", "operator": ">", "value": 15}, + {"field": "earnings_growth", "operator": ">", "value": 10}, + {"field": "return_on_equity", "operator": ">", "value": 10}, + {"field": "market_cap_basic", "operator": ">", "value": 1000000000000} + ], + "columns": ["name","close","revenue_growth","earnings_growth","return_on_equity","price_earnings_ttm","market_cap_basic","sector"], + "order_by": "revenue_growth", + "limit": 20 +}) +``` + +--- + +## 6. Workflow: How to Run Full Analysis + +**Step 1** — Get company overview & fundamentals: +``` +get_stock_quotes(tickers=["IDX:BBRI"], columns=[all fundamental + general fields]) +``` + +**Step 2** — Get technical indicators: +``` +get_stock_quotes(tickers=["IDX:BBRI"], columns=[all technical fields + price fields]) +``` + +**Step 3** — Get sector context: +``` +screen_market({ + "market_country": "indonesia", + "filters": [{"field": "sector", "operator": "==", "value": "Financials"}], + "columns": ["name","close","change","price_earnings_ttm","return_on_equity","market_cap_basic"], + "limit": 10 +}) +``` + +**Step 4** — Produce report following Section 4 template. + +--- + +## 7. Field Reference (for constructing queries) + +### Indonesian Stock Ticker Format +- `IDX:BBRI` — Bank Rakyat Indonesia +- `IDX:TLKM` — Telkom Indonesia +- `IDX:ASII` — Astra International +- `IDX:UNVR` — Unilever Indonesia +- `IDX:ICBP` — Indofood CBP +- `IDX:INDF` — Indofood Sukses Makmur +- `IDX:BMRI` — Bank Mandiri +- `IDX:BBNI` — Bank Negara Indonesia +- `IDX:ADRO` — Adaro Energy +- `IDX:ITMG` — Indo Tambangraya Megah +- `IDX:JSMR` — Jasa Marga +- `IDX:PGAS` — Perusahaan Gas Negara +- `IDX:SMGR` — Semen Indonesia +- `IDX:CTRA` — Ciputra Development +- `IDX:PWON` — Pakuwon Jati +- `IDX:BSDE` — Bumi Serpong Damai +- `IDX:EXCL` — XL Axiata +- `IDX:ISAT` — Indosat +- `IDX:HMSP` — HM Sampoerna +- `IDX:GGRM` — Gudang Garam + +### All Available Columns (for easy copy-paste) + +``` +General: name, description, ticker, exchange, market, sector, industry, country, currency, type, typespecs, is_primary +Price: open, high, low, close, volume, change, change_abs, premarket_change, postmarket_change, VWAP, 52 Week High, 52 Week Low +Fundamental: market_cap_basic, price_earnings_ttm, earnings_per_share_diluted_ttm, earnings_per_share_diluted_yoy_growth_ttm, dividends_yield_current, dividends_payout_ratio, price_to_book_fq, price_to_sales, price_to_cash_flow, return_on_equity, return_on_assets, operating_margin, profit_margin, revenue_growth, earnings_growth, debt_to_equity, current_ratio_fq, beta_1_year, float, shares_outstanding, insider_ownership, institutional_ownership, AnalystRating +Technical: RSI, RSI.5, Stoch.K, Stoch.D, MACD.macd, MACD.signal, MACD.histogram, BB.upper, BB.middle, BB.lower, SMA, EMA, SMA20, SMA50, SMA200, EMA5, EMA20, EMA50, EMA200, ADX, ATR, AO, OBV, CCI20, ROC, Williams %R, relative_volume_10d_calc, volume_ma_10, TechRating_1D +```