finchal / seasons.py
SeaWolf-AI's picture
FINCHAL season 1 server
48097ce verified
Raw
History Blame Contribute Delete
11.6 kB
# -*- coding: utf-8 -*-
"""์‹œ์ฆŒ ๋“ฑ๋ก๋ถ€. ์‹œ์ฆŒ๋งˆ๋‹ค ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ์ „๋ถ€ ์—ฌ๊ธฐ ์žˆ๊ณ  ๋‹ค๋ฅธ ๊ณณ์—๋Š” ์—†๋‹ค.
ODC์™€ ๊ฐ™์€ ์›์น™์„ ๋”ฐ๋ฅธ๋‹ค. ์‹œ์ฆŒ๋ณ„ ๊ทœ์น™์€ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ  ์‹œ์ฆŒ๋งˆ๋‹ค ๋˜ํ’€์ดํ•ด ์ ๋Š”๋‹ค.
์‹œ์ฆŒ 2์—๋Š” ์‹œ์ฆŒ 1์—์„œ ๋ฐœ๊ฒฌํ•œ ๊ฒฐํ•จ์˜ ๊ต์ •์ด ๋“ค์–ด๊ฐ€๋Š”๋ฐ, ๊ทธ ๊ต์ •์ด ์‹œ์ฆŒ 1์—
๋‹ฟ์•„์„œ๋Š” ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‹œ์ฆŒ 1 ์ฐธ๊ฐ€์ž๋Š” ์ด๋ฏธ ๊ณต๊ฐœ๋œ ๊ทœ์น™ ์•„๋ž˜ ์ฑ„์ ๋๋‹ค.
์‹œ์ฆŒ 1๊ณผ 2๋Š” ๊ฒน์ณ ๋Œ์•„๊ฐ„๋‹ค. ๊ทธ๋ž˜์„œ '์ง€๊ธˆ ์‹œ์ฆŒ'์€ ์ƒ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์กฐํšŒ๋‹ค.
์ •๊ทœํ™” ๊ณ„์ˆ˜(์šด์˜ ํ•œ๊ณ„์„ )์˜ ๊ทผ๊ฑฐ ์ˆ˜์น˜๋Š” calibrate.py๊ฐ€ ์‚ฐ์ถœํ•ด luck_ceiling.json์—
๋„ฃ๋Š”๋‹ค. ๊ฐœ๋ง‰ ์ „ ๋ฐ์ดํ„ฐ๋กœ๋งŒ ๊ณ„์‚ฐํ•˜๊ณ  ์‹œ์ฆŒ ์ค‘์—๋Š” ์žฌ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋Š”๋‹ค.
"""
SEASONS = {
1: {
"name": "์‹œ์ฆŒ 1 ยท ๋„ค ๊ฐœ์˜ ์‹œ์žฅ",
"opens": "2026-08-24",
"closes": "2026-12-24",
# ์„ฑ๊ฒฉ์ด ๊ฐˆ๋ฆฌ๋Š” ๋„ค ์‹œ์žฅ. ์„œ๋กœ ๊ฑฐ์˜ ๋ฌด์ƒ๊ด€์ด๋ผ(-0.04 ~ 0.19) ์ฐธ๊ฐ€์ž๊ฐ€ ํฉ์–ด์ง„๋‹ค.
# ๋„์ง€์ฝ”์ธ์€ ๋น„ํŠธ์ฝ”์ธ๊ณผ ์ƒ๊ด€ 0.763, ๋ฐ˜๋„์ฒดETF๋Š” ์—”๋น„๋””์•„์™€ 0.797์ด๋ผ ๋บ๋‹ค.
# ๋‘ ์ข…๋ชฉ์ด ์‚ฌ์‹ค์ƒ ํ•˜๋‚˜๊ฐ€ ๋˜๋ฉด 4์ข…๋ชฉ์ด 3์ข…๋ชฉ์ด ๋œ๋‹ค.
#
# AI๊ฐ€ ๋งŒ๋“  ๊ฒƒ ์—”๋น„๋””์•„ โ†• ์ธ๊ฐ„์ด ์˜ค๋ž˜ ๋ฏฟ์€ ๊ฒƒ ๊ธˆ
# AI๊ฐ€ ํ”๋“  ๊ฒƒ ๋น„ํŠธ์ฝ”์ธ โ†• ์„ธ์ƒ์„ ๊ตด๋ ค์˜จ ๊ฒƒ ์œ ๊ฐ€
#
# ๐Ÿ”ด ์—”๋น„๋””์•„ ์‹ค์ ์ด ๊ฐœ๋ง‰ ์ดํ‹€ ๋’ค(8/26)๋‹ค. ์‹ค์ ์ผ ๋ณ€๋™์€ ํ‰์ƒ์ผ์˜ 2.7๋ฐฐ์ด๊ณ 
# 87%๊ฐ€ ์‹œ๊ฐ€ ๊ฐญ์ด๋ผ ์žฅ์ค‘ ๋Œ€์‘์ด ์•ˆ ๋œ๋‹ค. ๋ชจ๋‘์—๊ฒŒ ๊ฐ™์€ ์กฐ๊ฑด์ด์ง€๋งŒ
# ์ดˆ๋ฐ˜ ์ˆœ์œ„์— ์šด์ด ํฌ๊ฒŒ ์„ž์ธ๋‹ค๋Š” ์ ์€ ์ฐธ๊ฐ€ ์•ˆ๋‚ด์— ๋ช…์‹œํ•œ๋‹ค.
"assets": {
"NVDA": {"label": "์—”๋น„๋””์•„", "cat": "stock", "vol": 0.514,
"why": "AI ๊ทธ ์ž์ฒด. ์ด ์‹œ์žฅ์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ์ด ๋Œ€ํšŒ์˜ ์ƒ์ง•",
"src": "NVDA", "hours": "rth",
"anchor": {1: 0.781, 5: 0.772, 21: 0.780}},
"BTC": {"label": "๋น„ํŠธ์ฝ”์ธ", "cat": "coin", "vol": 0.392,
"why": "AI๊ฐ€ ํ”๋“  ์ƒˆ ํ™”ํ. 24์‹œ๊ฐ„ ๊ฑฐ๋ž˜ยทํœด์žฅ ์—†์Œ",
"src": "BTC-USD", "hours": "24h",
"anchor": {1: 0.807, 7: 0.801, 30: 0.757}},
"GOLD": {"label": "๊ธˆ", "cat": "commodity", "vol": 0.212,
"why": "์ธ๋ฅ˜๊ฐ€ 5,000๋…„ ๋ฏฟ์–ด์˜จ ๊ฐ€์น˜. ๋ฐฉํ–ฅ์ด ์—†์–ด ์šด์œผ๋กœ ๋ฒŒ๊ธฐ ๊ฐ€์žฅ ์–ด๋ ต๋‹ค",
# ๐Ÿ”ด ์„ ๋ฌผ(GC=F)์ด ์•„๋‹ˆ๋ผ ETF๋ฅผ ์“ด๋‹ค. GC=F๋Š” ์›”๋ง ์ด์ƒ์ ํ”„๊ฐ€
# ์ •์ƒ์˜ 2.4๋ฐฐ๋กœ, ๋กค ์‹œ์  ๊ฐ€๊ฒฉ์ฐจ๊ฐ€ ์ˆ˜์ต๋ฅ ์— ์„ž์—ฌ ๋“ ๋‹ค.
"src": "GLD", "hours": "rth",
"anchor": {1: 0.748, 5: 0.762, 21: 0.744}},
"OIL": {"label": "์œ ๊ฐ€", "cat": "commodity", "vol": 0.369,
"why": "์„ธ์ƒ์„ ๊ตด๋ ค์˜จ ์‚ฐ์—…์˜ ์‹ฌ์žฅ. AI๋Š” ์˜› ์‹œ์žฅ๋„ ์˜ˆ์ธกํ•˜๋Š”๊ฐ€",
# ๐Ÿ”ด CL=F๋Š” 3๋…„ ์ˆ˜์ต์ด +10%์ธ๋ฐ USO๋Š” +89%๋‹ค. 79%p ๊ดด๋ฆฌ๋Š”
# ๊ทผ์›”๋ฌผ์„ ์ด์–ด๋ถ™์ผ ๋•Œ ์ƒ๊ธฐ๋Š” ๋กค ์™œ๊ณก์ด๋‹ค. ์ฐธ๊ฐ€์ž๊ฐ€ ์‹ค์ œ๋กœ
# ๋‚ผ ์ˆ˜ ์—†๋Š” ์†์ต์ด๋ผ ETF๋ฅผ ์“ด๋‹ค.
"src": "USO", "hours": "rth",
"anchor": {1: 0.782, 5: 0.780, 21: 0.804}},
},
"prize_usd_per_asset": 500,
"prize_total_usd": 2000,
"prize_rule": "์ข…๋ชฉ๋ณ„ ์ตœ์ข… ์ˆ˜์ต๋ฅ  1์œ„์—๊ฒŒ ๊ฐ 500๋‹ฌ๋Ÿฌ. ์ด 2,000๋‹ฌ๋Ÿฌ",
# ์ข…๋ชฉ ๊ฐ„ ์ˆ˜์ต๋ฅ ์„ ์ง์ ‘ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์€ ํ๊ธฐํ–ˆ๋‹ค. ๋„ค ๋ฒˆ ๊ณ ์ณ๋„ ํŽธ์ค‘์ด
# ์žกํžˆ์ง€ ์•Š์•˜๋‹ค(4.7๋ฐฐ -> 99.6๋ฐฐ -> 3.7๋ฐฐ -> 6.0๋ฐฐ). ๋ถ„ํฌ ๋ชจ์–‘์ด ์ข…๋ชฉ๋งˆ๋‹ค
# ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ฌ๋ผ, ์–ด๋А ํ•œ ํ†ต๊ณ„๋Ÿ‰์„ ๋งž์ถ”๋ฉด ๋‹ค๋ฅธ ์ง€์ ์ด ์–ด๊ธ‹๋‚œ๋‹ค.
# ์ข…๋ชฉ๋ณ„ ์‹œ์ƒ์€ ๊ทธ ๋น„๊ต ์ž์ฒด๋ฅผ ์—†์•ค๋‹ค. ํ†ตํ•ฉ ์ˆœ์œ„๋Š” ์ฐธ๊ณ  ํ‘œ์‹œ๋กœ๋งŒ ๋‘”๋‹ค.
"leverage": 1.0,
"min_participation": 0.70,
"update": "hourly",
"ledger": "s1/",
},
2: {
# ์˜ˆ๊ณ ๋งŒ ํ•œ๋‹ค. ์ข…๋ชฉ์€ ์‹œ์ฆŒ 1์ด ๋๋‚œ ๋’ค ํ™•์ •ํ•œ๋‹ค.
# ์‹œ์ฆŒ 1์—์„œ ์–ด๋–ค ์„ฑ๊ฒฉ์˜ ์‹œ์žฅ์— ์ฐธ๊ฐ€์ž๊ฐ€ ๋ชจ์ด๋Š”์ง€ ๋ณด๊ณ  ์ •ํ•˜๋Š” ํŽธ์ด ๋‚ซ๋‹ค.
"name": "์‹œ์ฆŒ 2 ยท ์˜ˆ๊ณ ",
"opens": None,
"closes": None,
"assets": {},
"status": "announced",
"teaser": "์„ ๋ฌผ๊ณผ ์›์ž์žฌ, ๊ทธ๋ฆฌ๊ณ  ์™ธํ™˜",
# ์‹ค์ธกํ•ด๋‘” ํ›„๋ณด๋“ค. ํ™•์ • ์•„๋‹˜.
"candidates": {
"COPPER": {"label": "๊ตฌ๋ฆฌ", "vol": 0.291,
"note": "AI ๋ฐ์ดํ„ฐ์„ผํ„ฐ ์„œ์‚ฌ๋Š” ์žˆ์œผ๋‚˜ ๋ฐ์ดํ„ฐ๋กœ๋Š” ์•ฝํ•˜๋‹ค. "
"๋ฐ˜๋„์ฒด ์ƒ๊ด€ 0.28~0.36 < ๊ธˆ ์ƒ๊ด€ 0.40. "
"์„œ์‚ฌ๋กœ ๋‚ด์„ธ์šฐ๋ฉด ์ฐธ๊ฐ€์ž๊ฐ€ ์ƒ๊ด€ํ‘œ๋กœ ๋ฐ˜๋ฐ•ํ•  ์ˆ˜ ์žˆ๋‹ค"},
"OIL": {"label": "์œ ๊ฐ€", "vol": 0.405, "note": "๋กค์˜ค๋ฒ„ ์ฒ˜๋ฆฌ ํ•„์š”"},
"USDKRW": {"label": "๋‹ฌ๋Ÿฌ/์›", "vol": 0.097, "note": "์ €๋ณ€๋™"},
"USDJPY": {"label": "๋‹ฌ๋Ÿฌ/์—”", "vol": 0.093, "note": "์ €๋ณ€๋™"},
"DXY": {"label": "๋‹ฌ๋Ÿฌ์ง€์ˆ˜", "vol": 0.064,
"note": "๋ณ€๋™์„ฑ์ด ๊ธˆ์˜ 1/3. ์ˆœ์œ„๊ฐ€ ์†Œ์ˆ˜์ ์—์„œ ๊ฐˆ๋ฆด ์œ„ํ—˜"},
},
"prize_usd_per_asset": 500,
"leverage": 1.0,
"min_participation": 0.70,
"update": "hourly",
"ledger": "s2/",
# ๐Ÿ”ด ์„ ๋ฌผยท์™ธํ™˜์€ ๋กค์˜ค๋ฒ„๊ฐ€ ์žˆ๋‹ค. ๊ทผ์›”๋ฌผ ๋งŒ๊ธฐ ์‹œ ์ฐจ์›”๋ฌผ๋กœ ๊ฐˆ์•„ํƒ€๋ฉฐ ๊ฐ€๊ฒฉ์ด
# ์ ํ”„ํ•˜๋Š”๋ฐ, ์ด๊ฑธ ์ˆ˜์ต๋ฅ ์— ๊ทธ๋Œ€๋กœ ๋„ฃ์œผ๋ฉด ์—†๋Š” ์†์ต์ด ์ƒ๊ธด๋‹ค.
# ์—ฐ๊ฒฐ์„ ๋ฌผ ๊ตฌ์„ฑ ๋ฐฉ์‹์„ ํ™•์ •ํ•˜๊ธฐ ์ „์—๋Š” ์‹œ์ฆŒ 2๋ฅผ ์—ด์ง€ ์•Š๋Š”๋‹ค.
"rollover": None,
},
}
# ์ฐธ๊ณ ์šฉ โ€” ํ™”๋ฉด์— '์šด์˜ ํ•œ๊ณ„์„ '์„ ๊ทธ์„ ๋•Œ ์“ด๋‹ค. ์ˆœ์œ„ ๊ณ„์‚ฐ์—๋Š” ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
LUCK_CEILING = {
"SOL": 0.8870, "ETH": 0.6227, "BTC": 0.5821, "TSLA": 0.5264,
"NVDA": 0.4399, "OIL": 0.3546, "AAPL": 0.2271, "GOLD": 0.1497,
}
# ๋ฆฌ๋”๋ณด๋“œ์— ์ฐธ๊ฐ€์ž์™€ ํ•จ๊ป˜ ๋†“๋Š” ๊ธฐ์ค€์„ . ODC๊ฐ€ ์Šน์ธ์•ฝ์„ ๊ฐ™์€ ํ‘œ์— ๋„ฃ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
# ์ฒ™๋„๊ฐ€ ์—†๋Š” ๋ฆฌ๋”๋ณด๋“œ๋Š” ์ˆœ์œ„๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.
#
# ๐Ÿ”ด ์ฃผ์ตœ์ธก ๋ชจ๋ธ์€ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค. ์…‹ ๋‹ค ๊ณต๊ฐœ๋œ ๊ต๊ณผ์„œ ๊ธฐ๋ฒ•์ด๋‹ค.
# ์ฃผ์ตœ์ž๊ฐ€ ์ž๊ธฐ ๋ชจ๋ธ์„ ์ฐธ๊ฐ€์ž ํ‘œ์— ์˜ฌ๋ฆฌ๋ฉด "๋ˆ„๊ฐ€ ๋” ๋‚˜์€ ๋ชจ๋ธ์„ ๋งŒ๋“œ๋Š”๊ฐ€"๋ผ๋Š”
# ๋ช…๋ถ„์ด ํ๋ ค์ง„๋‹ค. ๊ธฐ์ค€์„ ์€ ์ฒ™๋„์ด์ง€ ๊ฒฝ์Ÿ์ž๊ฐ€ ์•„๋‹ˆ๋‹ค.
ANCHORS = {
"BUYHOLD": "๋‹จ์ˆœ ๋ณด์œ  โ€” ํฌ์ง€์…˜ ํ•ญ์ƒ +1. ์ด๊ฑธ ๋ชป ์ด๊ธฐ๋ฉด ์˜๋ฏธ๊ฐ€ ์—†๋‹ค",
"VOLTARGET": "๋ณ€๋™์„ฑ ํƒ€๊ฒŸํŒ… โ€” ์ง€์ˆ˜๊ฐ€์ค‘ ๋ณ€๋™์„ฑ์œผ๋กœ ํฌ๊ธฐ๋งŒ ์กฐ์ ˆ. ๋ฐฉํ–ฅ์€ ๋กฑ ๊ณ ์ •",
"RANDOM": "๋ฌด์ž‘์œ„ โ€” ๋งค์ผ -1/0/+1 ์ž„์˜ ์„ ํƒ. ๋ฐ”๋‹ฅ",
}
def season_of(asset):
for sid, s in SEASONS.items():
if asset in s.get("assets", {}):
return sid
return None
# ๋ฐฑ๋ถ„์œ„ ์ฑ„์  ๊ธฐ์ค€ํ‘œ โ€” calibrate.py ์‚ฐ์ถœ. ์ข…๋ชฉ๋ณ„ '์‹ค๋ ฅ0 ์ฐธ๊ฐ€์ž' ์ˆ˜์ต๋ฅ  ๋ถ„ํฌ.
_REF = None
def _ref():
global _REF
if _REF is None:
import json, os
_REF = json.load(open(os.path.join(os.path.dirname(os.path.abspath(__file__)),
"reference_dist.json"), encoding="utf-8"))
return _REF
def percentile(ret, asset):
"""๊ทธ ์ข…๋ชฉ์˜ ์‹ค๋ ฅ0 ๋ถ„ํฌ์—์„œ ๋‚ด ์ˆ˜์ต๋ฅ ์ด ์–ด๋А ๋ฐฑ๋ถ„์œ„์ธ๊ฐ€."""
import bisect
R = _ref()
tbl = R["ref"].get(asset)
if not tbl:
return None
return bisect.bisect_left(tbl, ret) / len(tbl)
def score(ret, asset):
"""์ˆœ์œ„ ์ ์ˆ˜ = -log10(1 - ๋ฐฑ๋ถ„์œ„) = '์šด์œผ๋กœ ์ด ์„ฑ์ ์ด ๋‚˜์˜ฌ ํ™•๋ฅ '์˜ ์—ญ์ˆ˜ ์ง€์ˆ˜.
2.0 ์ด๋ฉด ์šด์œผ๋กœ ์ด๋Ÿด ํ™•๋ฅ  1/100, 3.0 ์ด๋ฉด 1/1,000.
๐Ÿ”ด ์ˆ˜์ต๋ฅ ์„ ์ข…๋ชฉ๋ณ„ ๊ณ„์ˆ˜๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹(= 95๋ถ„์œ„ ๋น„์œจ)์€ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
๊ทธ ์ง€์ ๋งŒ ๋งž๊ณ  ๊ผฌ๋ฆฌ๋Š” ์•ˆ ๋งž์•„, ์šฐ์Šน ํ™•๋ฅ ์ด SOL 22.3% vs GOLD 4.8%๋กœ
4.7๋ฐฐ ํŽธ์ค‘๋๋‹ค. ์šฐ์Šน์ž๋Š” ์ตœ๋Œ“๊ฐ’์ด๊ณ  ์ตœ๋Œ“๊ฐ’์€ ๊ผฌ๋ฆฌ ๋ชจ์–‘์ด ์ •ํ•œ๋‹ค.
๋ถ„ํฌ ์ „์ฒด๋ฅผ ๋งž์ถ”๋Š” ๋ฐฑ๋ถ„์œ„๋กœ ๋ฐ”๊พธ๋‹ˆ ํŽธ์ค‘์ด 1.6๋ฐฐ(๋…ธ์ด์ฆˆ ์ˆ˜์ค€)๋กœ ๋‚ด๋ ค๊ฐ”๋‹ค.
ํ™”๋ฉด์—๋Š” ์ˆ˜์ต๋ฅ ์„ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ค€๋‹ค. ์ˆœ์œ„๋งŒ ์ด ์ ์ˆ˜๋กœ ๋งค๊ธด๋‹ค.
"""
import math
p = percentile(ret, asset)
if p is None:
return None
return -math.log10(max(1.0 - min(p, 1 - 1e-6), 1e-6))
# โ”€โ”€ ์ฐธ๊ฐ€ ์œ ํ˜• โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# ์ž๊ธฐ ์‹ ๊ณ ๋‹ค. ๊ฒ€์ฆํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์ƒ๊ธˆ์€ ํ†ตํ•ฉ ์ˆœ์œ„์—๋งŒ ๊ฑธ๊ณ 
# ์œ ํ˜•๋ณ„ ์ˆœ์œ„๋Š” ๋ช…์˜ˆ๋กœ๋งŒ ๋‘”๋‹ค. ์†์ด๋Š” ์‚ฌ๋žŒ์ด ๋‚˜์™€๋„ ๋Œ€ํšŒ๊ฐ€ ๋ฌด๋„ˆ์ง€์ง€ ์•Š๊ฒŒ.
# ๋“ฑ๋ก์„ ๊นŒ๋‹ค๋กญ๊ฒŒ ๋งŒ๋“ค๋ฉด ์‚ฌ๋žŒ์ด ์•„์˜ˆ ์˜ค์ง€ ์•Š๋Š”๋ฐ, ๊ทธ๊ฒŒ ๋” ํฐ ์†์‹ค์ด๋‹ค.
TYPES = {
"human": {"badge": "๐Ÿง‘", "label": "์‚ฌ๋žŒ", "desc": "์ง์ ‘ ํŒ๋‹จํ•ด ์ œ์ถœ"},
"expert": {"badge": "๐Ÿ“Š", "label": "์ „๋ฌธ๊ฐ€ยท๊ธฐ๊ด€", "desc": "์ž์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜"},
"agent": {"badge": "๐Ÿค–", "label": "AI ์—์ด์ „ํŠธ", "desc": "์ž๋™ ์ œ์ถœ"},
}
# ์œ ํ˜•๋ณ„ ์ฐธ์—ฌ ์š”๊ฑด. ์‚ฌ๋žŒ์€ ๋งค์‹œ๊ฐ„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ์ ‘์† ๋นˆ๋„๋กœ ์™„ํ™”ํ•œ๋‹ค.
# ํฌ์ง€์…˜์„ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ๋„ ์ „๋žต์ด๋‹ค โ€” NVDA์—์„œ ๋‹จ์ˆœ๋ณด์œ ๊ฐ€ ๋ณ€๋™์„ฑ ํƒ€๊ฒŸํŒ…์„ ์ด๊ฒผ๋‹ค.
PARTICIPATION = {
"human": {"valid_ratio": 0.70, "min_visits_per_week": 1},
"expert": {"valid_ratio": 0.70, "min_visits_per_week": 0},
"agent": {"valid_ratio": 0.70, "min_visits_per_week": 0},
}
# ์ƒ๊ธˆ์€ ํ†ตํ•ฉ 1๋ช…. ์œ ํ˜•๋ณ„ 1์œ„๋Š” ๋ช…์˜ˆ ๋ถ€๋ฌธ์ด๋‹ค.
PRIZE_SCOPE = "overall"
HONOR_SCOPES = ["human", "expert", "agent"]
MANIFESTO = {
"title": "AI๋Š” ์‹œ์žฅ์„ ์ด๊ธธ ์ˆ˜ ์žˆ๋Š”๊ฐ€",
"sub": "122์ผ๊ฐ„์˜ ๊ณต๊ฐœ ์‹คํ—˜",
"cta_agent": "๋‹น์‹ ์˜ ์—์ด์ „ํŠธ๋ฅผ ๋ง ์œ„์— ์˜ฌ๋ฆฌ์‹ญ์‹œ์˜ค",
"cta_human": "์ง์ ‘ ์ฐธ๊ฐ€ํ•˜๊ธฐ",
"why": [
("์„ฑ๊ณต๋งŒ ๋ณด๋„๋ฉ๋‹ˆ๋‹ค",
"์ˆ˜์ต ๋‚ธ ์‚ฌ๋žŒ๋งŒ ์ธํ„ฐ๋ทฐํ•ฉ๋‹ˆ๋‹ค. ์ง„ ์‚ฌ๋žŒ 999๋ช…์€ ๊ธฐ๋ก๋„ ๋‚จ์ง€ ์•Š์Šต๋‹ˆ๋‹ค."),
("๋ฐฑํ…Œ์ŠคํŠธ๋Š” ์กฐ์ž‘๋ฉ๋‹ˆ๋‹ค",
"๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋กœ ์—ฐ 200%๋Š” ๋ˆ„๊ตฌ๋‚˜ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฏธ๋ž˜๋กœ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค."),
("์šด๊ณผ ์‹ค๋ ฅ์ด ์•ˆ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค",
"ํ•œ ๋‹ฌ์— 30% ๋‚ธ ์‚ฌ๋žŒ์ด ์‹ค๋ ฅ์ธ์ง€ ์šด์ธ์ง€ ํŒ๋ณ„ํ•  ๋ฐฉ๋ฒ•์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค."),
],
"how": [
("์šด์˜ ํฌ๊ธฐ๋ฅผ ์ˆซ์ž๋กœ ์••๋‹ˆ๋‹ค",
"์‹ค๋ ฅ 0์ธ ์ฐธ๊ฐ€์ž๊ฐ€ 122์ผ์— ์–ด๋””๊นŒ์ง€ ๊ฐ€๋Š”์ง€ 20,000ํšŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์œผ๋กœ ์Ÿ€์Šต๋‹ˆ๋‹ค. "
"์ˆ˜์ˆ˜๋ฃŒ๊นŒ์ง€ ๋ฌผ๋ฆฐ ๊ฐ’์œผ๋กœ ๋น„ํŠธ์ฝ”์ธ +86.6%, ๊ธˆ +9.2%. "
"์ด ์„ ์„ ๋„˜์ง€ ๋ชปํ•œ ์ˆ˜์ต์€ ์‹ค๋ ฅ์˜ ์ฆ๊ฑฐ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."),
("์กฐ์ž‘์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค",
"์ •๋‹ต์ด ๋ฏธ๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์ถœํ•œ ๋’ค์— ์„ธ์ƒ์ด ์ •๋‹ต์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค."),
("๊ฐ™์€ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค",
"๋ ˆ๋ฒ„๋ฆฌ์ง€ 1 ๊ณ ์ •, ๊ฐ™์€ ๋ฐ์ดํ„ฐ, ๊ฐ™์€ ์‹œ๊ฐ. ํฌ๊ฒŒ ๊ฑธ์–ด ์ด๊ธฐ๋Š” ๊ธธ์„ ๋ง‰์•˜์Šต๋‹ˆ๋‹ค."),
],
# ์ฃผ์ตœ์ธก์€ ์ˆœ์œ„์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  ๊ธฐ์ค€์„  ์…‹์„ ๊ฐ™์€ ํ‘œ์— ์˜ฌ๋ ค
# ์ฐธ๊ฐ€์ž๊ฐ€ ์ž๊ธฐ ์„ฑ์ ์„ ๋ฌด์—‡์— ๊ฒฌ์ค˜์•ผ ํ•˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
"our_stake": "์ฃผ์ตœ์ธก์€ ์ˆœ์œ„์— ์ฐธ๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‹จ์ˆœ ๋ณด์œ ยท๋ณ€๋™์„ฑ ํƒ€๊ฒŸํŒ…ยท๋ฌด์ž‘์œ„ "
"์„ธ ๊ธฐ์ค€์„ ์„ ๊ฐ™์€ ํ‘œ์— ์˜ฌ๋ ค, ์„ฑ์ ์„ ๋ฌด์—‡์— ๊ฒฌ์ค„์ง€ ๋ณด์ด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.",
}