compare_price_performance
Compare daily price performance of up to 8 US or Korean stocks, ETFs, or indices on one aligned calendar, with currency conversion and optional benchmark-relative strength.
Instructions
Compare the daily price performance of 1-8 US or Korean stocks, ETFs or indices on one common trading calendar (상대강도, 기준일 100, 수익률 비교, 코스피와 비교). For 내 보유 종목을 코스피/S&P와 비교: get holdings from investmcp get_holdings, then call this once with their symbols (KR 6-digit codes and US tickers together) and benchmark KOSPI (or SPY/^GSPC). Prefer it for cross-market price history and index levels: it uses the KOSPI index itself (not an ETF proxy such as KODEX 200), aligns calendars, converts USD and KRW holdings into one currency and labels sources. metric: normalized_price (default; every series = 100 on the common base date), price_return_pct, relative_strength_ratio (symbol / benchmark, base 100) or excess_return_pp (return minus the benchmark's, %p); the last two need benchmark (e.g. SPY, QQQ, KOSPI, ^GSPC). If relative strength (상대강도) is asked without a benchmark, the result is normalized_price with a warning naming that choice; pass benchmark for a true relative-strength ratio. Window: period 1mo (default) | 3mo | 6mo | ytd | 1y | d calendar days, or start_date/end_date, or trading_days N (N common trading days ending at the latest one). Symbols: AVGO, BRK.B, 005930 (tries .KS then .KQ), 005930.KS, ^GSPC, aliases KOSPI, KOSDAQ, S&P500, SPX, NASDAQ, NDX; an ETF benchmark is labelled a proxy. currency native | USD | KRW converts with the Yahoo KRW=X close of the same date. Prices are Yahoo daily closes, split-adjusted, dividends excluded: price return, not total return. One symbol failing returns its entry in errors; the rest are still compared. Up to 260 points per series; long windows switch to weekly points (data_quality.sampling). trading_days N counts today's session when a provisional point ends the series. By default the last point is provisional: today's trades (regular session, or pre-market before the open) after the last confirmed close, with provisional=true, session and exchange-local time; the confirmed close replaces it after the close, so no date appears twice. After-hours trades appear in freshness and the summary, never as a point. confirmed_only=true: completed daily closes only. table: period_return_pct to the last point and confirmed_return_pct to the last confirmed close. Text: a one-line summary, then the full result as compact JSON (the same object as structuredContent). Show source_line and warnings under the chart. Read-only calculation; no account access or orders.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | normalized_price | |
| period | No | 1mo (default) | 3mo | 6mo | ytd | 1y | <N>d | |
| symbols | Yes | 1-8 symbols, order kept | |
| currency | No | native | |
| end_date | No | YYYY-MM-DD; default today | |
| benchmark | No | e.g. SPY, QQQ, KOSPI, ^GSPC | |
| start_date | No | YYYY-MM-DD; instead of period | |
| trading_days | No | N common trading days; instead of period | |
| confirmed_only | No | false (default): include the latest trade as a provisional value; true: completed daily closes only |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | ||
| as_of | No | last completed (confirmed) daily bar date used, exchange-local; provisional values are dated after it | |
| error | No | ||
| table | No | ||
| errors | No | ||
| metric | Yes | ||
| series | No | ||
| warnings | No | show under the chart or table | |
| base_date | No | ||
| benchmark | No | ||
| freshness | No | per symbol: last confirmed close, latest trade (session, time, source, delay) and status | |
| base_index | No | ||
| price_mode | No | latest (default): the newest trade is included as a provisional value, labelled with its session and time; confirmed_only: completed daily closes only | latest |
| metric_unit | Yes | index (base 100) | percent | ratio index (base 100) | pp | |
| source_line | Yes | show under the chart or table | |
| data_quality | Yes | ||
| latest_as_of | No | UTC time of the newest latest-price trade used; null under confirmed_only or when none is available | |
| retrieved_at | Yes | UTC time of this calculation | |
| currency_mode | Yes | ||
| requested_period | Yes | ||
| effective_end_date | No | ||
| effective_start_date | No |