# 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
```
