Spaces:
Running
Running
| # -*- coding: utf-8 -*- | |
| """์ด์ค์ธ์ด ๋ฌธ๊ตฌ โ ์๋ฒ๊ฐ ๋ด๋ ค์ฃผ๋ ๋ชจ๋ ์ฌ๋์ฉ ๋ฌธ์ฅ์ด ์ฌ๊ธฐ ์๋ค. | |
| ๐ด ํ๋ฉด ๋ฌธ๊ตฌ๋ง ๋ฒ์ญํ๋ฉด ๋ฐ์ชฝ์ด๋ค. ์ทจ์งยท๊ท์นยท์ฑ์ ํํธยท๊ฒฝ๊ณ ๋ ์๋ฒ๊ฐ ๋ง๋ค์ด | |
| ๋ด๋ ค๋ณด๋ด๋ฏ๋ก, ์ด์ชฝ์ ์ ํ๋ฉด ์์ด ํ๋ฉด์ ํ๊ตญ์ด๊ฐ ์์ธ๋ค. | |
| ๐ด MCP ๋๊ตฌ ์ค๋ช ๋ ์ธ์ด๋ฅผ ํ๋ค. ์์ด์ ํธ๋ ๊ทธ ์ค๋ช ์ ์ฝ๊ณ ํ๋จํ๋ฏ๋ก | |
| ์์ด๊ถ ์์ด์ ํธ์๊ฒ๋ ์์ด๋ก ์ค์ผ ํ๋ค. | |
| ํค๊ฐ ์์ผ๋ฉด ํ๊ตญ์ด๋ก ๋จ์ด์ง๋ค. ์กฐ์ฉํ ๋น์นธ์ด ๋๋ ๊ฒ๋ณด๋ค ๋ซ๋ค. | |
| """ | |
| DEFAULT = "ko" | |
| LANGS = ("ko", "en") | |
| def pick(accept_language, explicit=None): | |
| """์ธ์ด ๊ฒฐ์ . ๋ช ์ ์ ํ์ด ์์ผ๋ฉด ๊ทธ๊ฒ ์ด๊ธด๋ค. | |
| Accept-Language ๋ "en-US,en;q=0.9,ko;q=0.8" ๊ฐ์ ๋ชจ์์ด๋ค. | |
| ์์์๋ถํฐ ์ฐ๋ฆฌ๊ฐ ์๋ ์ธ์ด๊ฐ ๋์ค๋ ์ฒซ ํญ๋ชฉ์ ์ด๋ค. | |
| """ | |
| if explicit in LANGS: | |
| return explicit | |
| for part in (accept_language or "").split(","): | |
| code = part.split(";")[0].strip().lower()[:2] | |
| if code in LANGS: | |
| return code | |
| return DEFAULT | |
| def t(d, lang): | |
| """{"ko": ..., "en": ...} ์์ ํ๋ ๊ณ ๋ฅธ๋ค. ์์ผ๋ฉด ํ๊ตญ์ด.""" | |
| if not isinstance(d, dict): | |
| return d | |
| return d.get(lang) or d.get(DEFAULT) | |
| # โโโโโโโโโโโโโโโโโโโโโโโ ์ข ๋ชฉ โโโโโโโโโโโโโโโโโโโโโโโ | |
| ASSET = { | |
| "NVDA": { | |
| "label": {"ko": "์๋น๋์", "en": "NVIDIA"}, | |
| "why": {"ko": "AI ๊ทธ ์์ฒด. ์ด ์์ฅ์ ์์ธกํ๋ ๊ฒ์ด ์ด ๋ํ์ ์์ง", | |
| "en": "AI itself. Predicting this market is what this contest is about."}, | |
| }, | |
| "BTC": { | |
| "label": {"ko": "๋นํธ์ฝ์ธ", "en": "Bitcoin"}, | |
| "why": {"ko": "AI๊ฐ ํ๋ ์ ํํ. 24์๊ฐ ๊ฑฐ๋ยทํด์ฅ ์์", | |
| "en": "The new money AI shook. Trades 24/7, never closes."}, | |
| }, | |
| "GOLD": { | |
| "label": {"ko": "๊ธ", "en": "Gold"}, | |
| "why": {"ko": "์ธ๋ฅ๊ฐ 5,000๋ ๋ฏฟ์ด์จ ๊ฐ์น. ๋ฐฉํฅ์ด ์์ด ์ด์ผ๋ก ๋ฒ๊ธฐ ๊ฐ์ฅ ์ด๋ ต๋ค", | |
| "en": "What humanity trusted for 5,000 years. Nearly directionless, " | |
| "so luck alone gets you the least here."}, | |
| }, | |
| "OIL": { | |
| "label": {"ko": "์ ๊ฐ", "en": "Crude Oil"}, | |
| "why": {"ko": "์ธ์์ ๊ตด๋ ค์จ ์ฐ์ ์ ์ฌ์ฅ. AI๋ ์ ์์ฅ๋ ์์ธกํ๋๊ฐ", | |
| "en": "The industrial heart that moved the world. Can AI read the old markets too?"}, | |
| }, | |
| } | |
| # โโโโโโโโโโโโโโโโโโโโโโโ ๊ท์น โโโโโโโโโโโโโโโโโโโโโโโ | |
| RULES = { | |
| "prize": {"ko": "์ข ๋ชฉ๋ณ ์ต์ข ์์ต๋ฅ 1์ %d๋ฌ๋ฌ ยท ์ด %d๋ฌ๋ฌ", | |
| "en": "$%d to the top final return in each asset ยท $%d total"}, | |
| "leverage": {"ko": "ํฌ์ง์ -1.0 ~ +1.0. ๋ ๋ฒ๋ฆฌ์ง 1 ๊ณ ์ . ๋ฒ์ด๋๋ฉด ์๋ฆผ", | |
| "en": "Position -1.0 to +1.0. Leverage fixed at 1. Values outside are clipped."}, | |
| "update": {"ko": "๋งค์๊ฐ ๊ฐฑ์ ๊ฐ๋ฅ. ๋ค์ ๋ผ ๋๊น์ง ์ง์ ํฌ์ง์ ์ด ์ ์ง๋จ", | |
| "en": "Update hourly if you like. Your last position stands until you replace it."}, | |
| "fee_note": {"ko": "ํฌ์ง์ ๋ณ๊ฒฝ๋ถ์๋ง ๋ถ๊ณผ. ์์ฃผ ๋ค์ง์ผ๋ฉด ์์๋ฃ๋ก ์๋๋ค", | |
| "en": "Charged on position changes only. Flip often and the fees eat you."}, | |
| "scoring": {"ko": "์ข ๋ชฉ๋ณ ์ต์ข ์์ต๋ฅ ๋ก ์์. ์์ '์ด์ผ๋ก ์ด๋ด ํ๋ฅ '์ ํจ๊ป ํ์", | |
| "en": "Ranked by final return within each asset, shown next to the odds " | |
| "of getting there by luck."}, | |
| "participation": {"ko": "ํด๋น ์ข ๋ชฉ ๊ฐ์ค~๋ง๊ฐ ๊ธฐ๊ฐ์ 70% ์ด์ ํฌ์ง์ ์ด ์ ํจํด์ผ ์๊ธ ๋์", | |
| "en": "A valid position for at least 70% of the asset's season " | |
| "to be eligible for prizes."}, | |
| "luck_note": {"ko": "์ค๋ ฅ 0์ธ ์ฐธ๊ฐ์๋ฅผ ์์ฆ ๊ธธ์ด๋งํผ 20,000ํ ๋๋ ค ๋ธ ์์ 5% ์ง์ . " | |
| "์์๋ฃ๋ฅผ ๋๊ฐ์ด ๋ฌผ๋ ธ์ต๋๋ค. ์ด ์ ์ ๋์ด์ผ ์ค๋ ฅ์ ์ฆ๊ฑฐ๊ฐ ๋ฉ๋๋ค.", | |
| "en": "The 95th percentile of 20,000 zero-skill players run over the " | |
| "same season length, charged the same fees. Clear this line " | |
| "before calling a result skill."}, | |
| "warning": {"ko": "์๋น๋์ ์ค์ ์ด 2026-08-26์ด๋ค. ์ค์ ์ผ ๋ณ๋์ ํ์์ผ์ 2.7๋ฐฐ์ด๊ณ " | |
| "87%๊ฐ ์๊ฐ ๊ฐญ์ด๋ผ ์ฅ์ค ๋์์ด ์ ๋๋ค. ์์ฆ ์ค 1ํ๋ค.", | |
| "en": "NVIDIA reports on 2026-08-26. Earnings-day moves run 2.7x a normal " | |
| "day and 87% of that lands in the opening gap, so you cannot react " | |
| "intraday. It happens once this season."}, | |
| "durability_warn": {"ko": "์์ฅ์ด ์ฌ์์์ ๊ฒฌ๋๋ค๋ ์ฆ๊ฑฐ๊ฐ ์์ต๋๋ค. " | |
| "๋ฏธ๋ฌ๋ ์์ ์คํ ๋ฆฌ์ง๋ฅผ ๋ถ์ด์ญ์์ค.", | |
| "en": "No evidence the ledger survives a restart. " | |
| "Attach a mirror or persistent storage."}, | |
| } | |
| # โโโโโโโโโโโโโโโโโโโโโโโ ์ฑ์ ํํธ โโโโโโโโโโโโโโโโโโโโโโโ | |
| HINT = { | |
| "pending": {"ko": "์ง๊ณ ์ ", "en": "not scored yet"}, | |
| "have_pos": {"ko": "ํฌ์ง์ ์ ์ ์๋์ต๋๋ค. ์์ฆ์ด ํ๋ฃจ ์ด์ ์งํ๋๋ฉด ์์ต๋ฅ ์ด ๊ณ์ฐ๋ฉ๋๋ค.", | |
| "en": "Your position is recorded. Returns appear once the season has " | |
| "run for at least a day."}, | |
| "no_pos": {"ko": "์์ง ํฌ์ง์ ์ ๋ด์ง ์์์ต๋๋ค.", | |
| "en": "You have not submitted a position yet."}, | |
| "over": {"ko": "์ด์ ํ๊ณ์ ์ ๋์์ต๋๋ค", | |
| "en": "You are past the luck ceiling"}, | |
| "under": {"ko": "์์ง ์ด์ผ๋ก๋ ๋์ฌ ์ ์๋ ๋ฒ์์ ๋๋ค", | |
| "en": "Still inside what luck alone could produce"}, | |
| "unknown_asset": {"ko": "์ ์ ์๋ ์ข ๋ชฉ. ๊ฐ๋ฅ: %s", | |
| "en": "Unknown asset. Available: %s"}, | |
| "need_key": {"ko": "์ฐธ๊ฐ ํค๊ฐ ํ์ํฉ๋๋ค. ํ๋ฉด์์ ๋ก๊ทธ์ธํ๋ฉด fc_ ๋ก ์์ํ๋ ํค๊ฐ " | |
| "๋์ต๋๋ค. MCP ์ค์ ์ Authorization ํค๋์ ๋ฃ์ด ์ฃผ์ธ์.", | |
| "en": "A participant key is required. Sign in on the site to get a key " | |
| "starting with fc_, then put it in the Authorization header of " | |
| "your MCP config."}, | |
| "kept": {"ko": "๋ค์ ์ ์ถํ ๋๊น์ง ์ด ํฌ์ง์ ์ด ์ ์ง๋ฉ๋๋ค", | |
| "en": "This position stands until you submit again"}, | |
| } | |
| # โโโโโโโโโโโโโโโโโโโโโโโ ์ทจ์ง โโโโโโโโโโโโโโโโโโโโโโโ | |
| MANIFESTO = { | |
| "title": {"ko": "AI๋ ์์ฅ์ ์ด๊ธธ ์ ์๋๊ฐ", | |
| "en": "Can AI Beat the Market?"}, | |
| "sub": {"ko": "122์ผ๊ฐ์ ๊ณต๊ฐ ์คํ", "en": "A 122-day open experiment"}, | |
| # ๋ํ์ ๋ช ๋ถ. 3๋ง์ผ๋ก ๊ฐ๋ค. | |
| # | |
| # ๋ฌธ๊ตฌ ์์น ๋. | |
| # ์ธก์ ํ ๊ฒ๋ง ์ด๋ค. ๋ํ์ ์ฃผ์ฅ์ ์ ๋ถ ์ซ์๋ก ๋ท๋ฐ์นจ๋์ด์ผ ํ๋ค. | |
| # ์์ฅ ์๊ณก์ '๋ํ ์๊ธ์ ์ ๋์ฑ ์์'๋ก ์ด๋ค โ ๋ฌธํ์ ๊ทผ๊ฑฐ๊ฐ ์๋ ํํ์ด๋ค. | |
| "acts": [ | |
| ({"ko": "์์ฅ์ ์ ์ด๋ ค์ด๊ฐ", | |
| "en": "Why markets are hard"}, | |
| {"ko": "๊ธ๋ฆฌ ๊ฒฐ์ ํ๋, ์ ์ ํ๋, ์ค์ ๋ฐํ ํ๋๊ฐ ๋ช ๋ฌ์น ๋ถ์์ ์ง์๋๋ค. " | |
| "๋ณ์์ ์๊ฐ ๊ด์ธก์น๋ณด๋ค ๋ง๊ณ , ํฐ ์๊ธ์ ์ ๋ณด๊ฐ ์๋๋ผ ์ ๋์ฑ ๋๋ฌธ์ " | |
| "์์ง์ฌ ๊ฐ๊ฒฉ์ ์ค์ ๊ฐ์น์์ ๋ฐ์ด๋ ๋๋ค. " | |
| "์ด๋ค ๋จ์ผ ๋ชจ๋ธ๋ ์์ฅ ์ ์ฒด๋ฅผ ๋ด์ง ๋ชปํ๋ ๊ฒ์ ๋ชจ๋ธ์ด ๋ถ์กฑํด์๊ฐ ์๋๋ผ " | |
| "๋์์ด ๊ทธ๋ฐ ์ฑ์ง์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.", | |
| "en": "One rate decision, one war, one earnings print erases months of " | |
| "analysis. There are more moving parts than observations, and large " | |
| "capital moves for liquidity rather than information, pushing price " | |
| "away from value. No single model holds the whole market โ not because " | |
| "our models are weak, but because that is what the thing is."}), | |
| ({"ko": "์ธ๊ฐ๊ณผ AI, ๋๊ฐ ๋์์ง ์๋ฌด๋ ๋ชจ๋ฅธ๋ค", | |
| "en": "Nobody knows whether humans or AI read it better"}, | |
| {"ko": "์ธ๊ฐ์ ๋งฅ๋ฝ๊ณผ ์์ฌ๋ฅผ ์ฝ๊ณ , AI๋ ํจํด๊ณผ ๊ท๋ชจ๋ฅผ ์ฝ์ต๋๋ค. " | |
| "๋์ ๊ฐ์ ์กฐ๊ฑด์์ ๊ฐ์ ๊ธฐ๊ฐ ๊ฒจ๋ฃจ๊ฒ ํ ๊ณต๊ฐ ๊ธฐ๋ก์ด ์์ต๋๋ค. " | |
| "์ฑ๊ณต์ ์ฌํ์ ์ ๋ณ๋์ด ๋ณด๋๋๊ณ ์คํจ๋ ๊ธฐ๋ก์กฐ์ฐจ ๋จ์ง ์์ผ๋, " | |
| "์ฐ๋ฆฌ๊ฐ ์๋ ๊ฒ์ ์ด์๋จ์ ์ด์ผ๊ธฐ๋ฟ์ ๋๋ค. " | |
| "122์ผ ๋์ ๋ชจ๋ ์ฐธ๊ฐ์์ ์ฑ์ ์ ์ฒ์๋ถํฐ ๋๊น์ง ๋จ๊น๋๋ค.", | |
| "en": "Humans read context and narrative; machines read patterns and scale. " | |
| "No public record exists of the two competing under identical " | |
| "conditions over the same window. Winners are selected after the fact " | |
| "and losers leave no trace, so all we know are the stories that " | |
| "survived. For 122 days every entrant's record stands, start to finish."}), | |
| ({"ko": "ํจ๊ป ์ฌ๋ฉด ๋ฌด์์ ์ ์ ์๋", | |
| "en": "What we actually learn by measuring together"}, | |
| {"ko": "๋จ๊ธฐ ๋ฐฉํฅ์ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ํํ 60๊ฐ ํ๋ณด ๋ณ์ ์ด๋์์๋ ์์ธก๋ ฅ์ด " | |
| "ํ์ธ๋์ง ์์์ต๋๋ค. ์ด ๋ํ๋ ๊ทธ ์ง์ ์์ ์์ํฉ๋๋ค. " | |
| "ํ ๋ชจ๋ธ์ด ๋ฉ์ถ ์๋ฆฌ๋ ์ ๋ณด๊ฐ ์๋์ง๋ง, ์๋ฐฑ ๊ฐ์ ๋ ๋ฆฝ๋ ๋ชจ๋ธ์ด ๊ฐ์ " | |
| "์๋ฆฌ์์ ๋ฉ์ถ๋ฉด ๊ทธ๊ฒ์ ์์ฅ์ ์ฑ์ง์ ๋ํ ์ ๋ณด์ ๋๋ค. " | |
| "๊ทธ๋์ ์ด ๋ํ๊ฐ ๋ชจ์ผ๋ ๊ฒ์ ๋ต์ด ์๋๋ผ ๊ฒฝ๊ณ์ ๋๋ค. " | |
| "์ด๋๊น์ง๊ฐ ์ด์ด๊ณ ์ด๋๋ถํฐ๊ฐ ์ค๋ ฅ์ธ์ง, ๊ทธ ์ ์ ์ซ์๋ก ๋จ๊น๋๋ค.", | |
| "en": "Across sixty candidate variables we tested directly, none showed " | |
| "predictive power over short-horizon direction. This contest starts " | |
| "from there. Where one model stops is not information; where hundreds " | |
| "of independent models stop is information about the market itself. " | |
| "So what this collects is not an answer but a boundary โ where luck " | |
| "ends and skill begins, written down as a number."}), | |
| ], | |
| "why": [ | |
| ({"ko": "์ฑ๊ณต๋ง ๋ณด๋๋ฉ๋๋ค", "en": "Only the winners get written up"}, | |
| {"ko": "์์ต ๋ธ ์ฌ๋๋ง ์ธํฐ๋ทฐํฉ๋๋ค. ์ง ์ฌ๋ 999๋ช ์ ๊ธฐ๋ก๋ ๋จ์ง ์์ต๋๋ค.", | |
| "en": "The one who made money gets interviewed. The 999 who lost leave no record."}), | |
| ({"ko": "๋ฐฑํ ์คํธ๋ ์กฐ์๋ฉ๋๋ค", "en": "Backtests can be bent"}, | |
| {"ko": "๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ก ์ฐ 200%๋ ๋๊ตฌ๋ ๋ง๋ญ๋๋ค. ๋ฏธ๋๋ก๋ ์ ๋ฉ๋๋ค.", | |
| "en": "Anyone can produce 200% a year on past data. Nobody can on future data."}), | |
| ({"ko": "์ด๊ณผ ์ค๋ ฅ์ด ์ ๋๋ฉ๋๋ค", "en": "Luck and skill look identical"}, | |
| {"ko": "ํ ๋ฌ์ 30% ๋ธ ์ฌ๋์ด ์ค๋ ฅ์ธ์ง ์ด์ธ์ง ํ๋ณํ ๋ฐฉ๋ฒ์ด ์์์ต๋๋ค.", | |
| "en": "There has been no way to tell whether +30% in a month was skill or luck."}), | |
| ], | |
| "how": [ | |
| ({"ko": "์ด์ ํฌ๊ธฐ๋ฅผ ์ซ์๋ก ์๋๋ค", "en": "We measured how far luck alone gets you"}, | |
| {"ko": "์ค๋ ฅ 0์ธ ์ฐธ๊ฐ์๊ฐ 122์ผ์ ์ด๋๊น์ง ๊ฐ๋์ง 20,000ํ ์๋ฎฌ๋ ์ด์ ์ผ๋ก ์์ต๋๋ค. " | |
| "์์๋ฃ๊น์ง ๋ฌผ๋ฆฐ ๊ฐ์ผ๋ก ๋นํธ์ฝ์ธ +86.6%, ๊ธ +9.2%. " | |
| "์ด ์ ์ ๋์ง ๋ชปํ ์์ต์ ์ค๋ ฅ์ ์ฆ๊ฑฐ๊ฐ ๋์ง ์์ต๋๋ค.", | |
| "en": "20,000 simulations of a zero-skill player over 122 days, charged the same " | |
| "fees: Bitcoin +86.6%, Gold +9.2%. A return below that line is not " | |
| "evidence of skill."}), | |
| ({"ko": "์กฐ์์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค", "en": "It cannot be gamed"}, | |
| {"ko": "์ ๋ต์ด ๋ฏธ๋์ ์์ต๋๋ค. ์ ์ถํ ๋ค์ ์ธ์์ด ์ ๋ต์ ๋ง๋ญ๋๋ค.", | |
| "en": "The answer lives in the future. The world writes it after you submit."}), | |
| ({"ko": "๊ฐ์ ์กฐ๊ฑด์ ๋๋ค", "en": "Everyone gets the same conditions"}, | |
| {"ko": "๋ ๋ฒ๋ฆฌ์ง 1 ๊ณ ์ , ๊ฐ์ ๋ฐ์ดํฐ, ๊ฐ์ ์๊ฐ. ํฌ๊ฒ ๊ฑธ์ด ์ด๊ธฐ๋ ๊ธธ์ ๋ง์์ต๋๋ค.", | |
| "en": "Leverage fixed at 1, same data, same clock. Betting bigger is not a way to win."}), | |
| ], | |
| "our_stake": { | |
| "ko": "์ฃผ์ต์ธก์ ์์์ ์ฐธ๊ฐํ์ง ์์ต๋๋ค. ๋์ ๋จ์ ๋ณด์ ยท๋ณ๋์ฑ ํ๊ฒํ ยท๋ฌด์์ " | |
| "์ธ ๊ธฐ์ค์ ์ ๊ฐ์ ํ์ ์ฌ๋ ค, ์ฑ์ ์ ๋ฌด์์ ๊ฒฌ์ค์ง ๋ณด์ด๊ฒ ํฉ๋๋ค.", | |
| "en": "The organizers do not compete. Instead three baselines โ buy and hold, " | |
| "volatility targeting, and random โ sit in the same table so you can see " | |
| "what your result should be measured against."}, | |
| } | |
| ANCHOR = { | |
| "BUYHOLD": {"ko": "๋จ์ ๋ณด์ ", "en": "Buy and Hold"}, | |
| "VOLTARGET": {"ko": "๋ณ๋์ฑ ํ๊ฒํ ", "en": "Volatility Targeting"}, | |
| "RANDOM": {"ko": "๋ฌด์์", "en": "Random"}, | |
| } | |
| TYPE = { | |
| "human": {"ko": "์ฌ๋", "en": "Human"}, | |
| "expert": {"ko": "์ ๋ฌธ๊ฐยท๊ธฐ๊ด", "en": "Quant / Institution"}, | |
| "agent": {"ko": "AI ์์ด์ ํธ", "en": "AI Agent"}, | |
| "anchor": {"ko": "๊ธฐ์ค์ ", "en": "Baseline"}, | |
| } | |
| # โโโโโโโโโโโโโโโโโโโโโโโ MCP ๋๊ตฌ ์ค๋ช โโโโโโโโโโโโโโโโโโโโโโโ | |
| TOOLDESC = { | |
| "get_rules": { | |
| "ko": "์ฑ๋ฆฐ์ง ๊ท์น๊ณผ ํ์ฌ ์์ฆ ์ ๋ณด๋ฅผ ์ฝ๋๋ค. ์ฐธ๊ฐ ์ ์ ๋ฐ๋์ ๋จผ์ ํธ์ถํ๋ค. " | |
| "์ข ๋ชฉ ๋ชฉ๋กยท๋ง๊ฐ์ผยท๋ ๋ฒ๋ฆฌ์ง ์ํยท์์๋ฃยท์ฑ์ ๋ฐฉ์์ด ๋ค์ด ์๋ค.", | |
| "en": "Read the challenge rules and current season. Always call this first. " | |
| "Covers the asset list, deadline, leverage cap, fees, and scoring."}, | |
| "get_data": { | |
| "ko": "์ข ๋ชฉ์ ๊ณผ๊ฑฐ ์์ธ๋ฅผ ๋ฐ๋๋ค. ์ด ๋ฐ์ดํฐ๋ก ์ง์ ๋ชจ๋ธ์ ๋ง๋ค์ด ์์ธกํ๋ผ. " | |
| "๋ฏธ๋ ๋ฐ์ดํฐ๋ ์ฃผ์ง ์๋๋ค โ ์ ๋ต์ ์์ง ์ธ์์ ์๋ค.", | |
| "en": "Fetch historical prices for an asset. Build your own model on it. " | |
| "No future data is served โ the answer does not exist yet."}, | |
| "submit_position": { | |
| "ko": "ํฌ์ง์ ์ ์ ์ถํ๋ค. -1.0(์ ๋ ์) ~ +1.0(์ ๋ ๋กฑ). ๋ ๋ฒ๋ฆฌ์ง๋ 1๋ก ๊ณ ์ ์ด๋ฉฐ " | |
| "๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์๋ฆฐ๋ค. ๋ค์ ์ ์ถํ ๋๊น์ง ์ด ํฌ์ง์ ์ด ์ ์ง๋๋ค. " | |
| "ํฌ์ง์ ์ ๋ฐ๊ฟ ๋๋ง๋ค ์์๋ฃ๊ฐ ๋๊ฐ๋ฏ๋ก ์์ฃผ ๋ค์ง์ผ๋ฉด ์ํด๋ค.", | |
| "en": "Submit a position from -1.0 (fully short) to +1.0 (fully long). Leverage is " | |
| "fixed at 1 and values outside the range are clipped. The position stands " | |
| "until you submit again. Every change costs a fee, so flipping often loses money."}, | |
| "check_score": { | |
| "ko": "๋ด ์ฑ์ ๊ณผ ์์๋ฅผ ํ์ธํ๋ค. ์์ต๋ฅ ยท์์ยท์ด์ ํ๊ณ์ ๋๋น ์์น๋ฅผ ๋๋ ค์ค๋ค.", | |
| "en": "Check your standing: return, rank, and where you sit against the luck ceiling."}, | |
| } | |
| MCP_INSTRUCTIONS = { | |
| "ko": "๊ธ์ต ์์ธก ์ฑ๋ฆฐ์ง๋ค. ๋ฐฉํฅ์ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ์ค์ ํฌ์ง์ ์ ์ก์ " | |
| "์์ต๋ฅ ๋ก ๊ฒจ๋ฃฌ๋ค. get_rules ๋ก ์์ํ๋ผ.", | |
| "en": "This is a financial forecasting challenge. You do not call direction โ you take " | |
| "real positions and compete on returns. Start with get_rules."} | |