๐Ÿซ

golden-elderberry โ€” Panic Fade

์›๋ž˜ favorite(โ‰ฅ70%)์ด๋˜ ํ† ํฐ์ด ์•…์žฌ/๋ฃจ๋จธ์— ๊ณตํ™ฉ ํˆฌ๋งค๋กœ 12%p ์ด์ƒ ๊ธ‰๋ฝํ•œ ๋’ค, ๋ฐ”๋‹ฅ ์•ˆ์ •ํ™”๊ฐ€ ํ™•์ธ๋˜๋ฉด ์—ญ๋งค์ˆ˜ํ•ด ๊ณผ์ž‰๋ฐ˜์‘์˜ ๋˜๋Œ๋ฆผ(+10%)์„ ์ˆ˜ํ™•ํ•œ๋‹ค.

์œ ํ˜• ์—ญํ–‰ (mean-reversion)์ƒํƒœ ์‹ ๊ทœ ยท ๊ฒ€์ฆ ๋Œ€๊ธฐํ•ต์‹ฌ ํŽธํ–ฅ ์†์‹ค ํšŒํ”ผ + ๊ณตํ™ฉ ํˆฌ๋งค

ํ•ต์‹ฌ ์ˆ˜์‹

p   = favorite์˜€๋˜ ์ชฝ ํ† ํฐ ๊ธฐ์ค€ ๊ฐ€๊ฒฉ
ref = ์ตœ๊ทผ 48h(๋‹จ ์ตœ๊ทผ 3h ์ œ์™ธ) ์ตœ๊ณ ๊ฐ€,  ref โ‰ฅ 0.70

BUY if ref - p โ‰ฅ 0.12                                  # ๊ณตํ™ฉ ๋‚™ํญ
   AND 0.35 โ‰ค p โ‰ค 0.75                                  # ๋ถ•๊ดด ๋ฐฐ์ œ ๋ฐด๋“œ
   AND ์ตœ๊ทผ 45๋ถ„: p โ‰ฅ min(์ง์ „ ์Šค๋ƒ…์ƒท) AND std โ‰ค 0.02    # ๋ฐ”๋‹ฅ ์•ˆ์ •ํ™”
   AND hours_left โ‰ฅ 48h

์™œ ์ด ์ „๋žต์ธ๊ฐ€

์†์‹ค ํšŒํ”ผ์˜ ๊ณผ์ž‰๋ฐ˜์‘. ์†์‹ค ํšŒํ”ผ๋Š” ์ด๋“ ๋Œ€๋น„ ์•ฝ 2๋ฐฐ์˜ ์‹ฌ๋ฆฌ ๊ฐ€์ค‘์„ ๊ฐ–๋Š”๋‹ค (Kahneman & Tversky์˜ prospect theory). ์•…์žฌ/๋ฃจ๋จธ๊ฐ€ ํ„ฐ์ง€๋ฉด ๋ณด์œ ์ž๋“ค์€ "๋” ์žƒ๊ธฐ ์ „์—" ์ผ๋‹จ ๋˜์ง€๊ณ , ๋งค์ˆ˜ ๋Œ€๊ธฐ์ž๋Š” ๊ด€๋งํ•œ๋‹ค โ†’ ๊ฐ€๊ฒฉ์ด ํŽ€๋”๋ฉ˜ํ„ธ ์ดํ•˜๋กœ ์˜ค๋ฒ„์ŠˆํŒ…ํ•œ๋‹ค. ๊ธ‰๋ฝ ์งํ›„๋Š” ์œ ๋™์„ฑ ๊ณต๊ธ‰์ž๋„ ์Šคํ”„๋ ˆ๋“œ๋ฅผ ๋ฒŒ๋ฆฌ๋Š” ๊ตฌ๊ฐ„์ด๋ผ ์†Œ๋Ÿ‰์˜ ํˆฌ๋งค๋งŒ์œผ๋กœ๋„ ๊ฐ€๊ฒฉ์ด ๊ณผ๋„ํ•˜๊ฒŒ ๋ฐ€๋ฆฐ๋‹ค. 24/7 3~5๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ๋„๋Š” ๋ด‡์€ ์‚ฌ๋žŒ๋“ค์ด ์ž๋Š” ์ƒˆ๋ฒฝ์˜ ๊ณตํ™ฉ๋„ ์žก๋Š” ๊ตฌ์กฐ์  ์šฐ์œ„๊ฐ€ ์žˆ๋‹ค.

๋ฆฌ์„œ์น˜ ๊ทผ๊ฑฐ. ๋ ˆํฌ์˜ momentum ๋ฆฌ์„œ์น˜ ๋ฌธ์„œ(golden-cherry์˜ polymarket-strategy-momentum ๊ณ„์—ด)๊ฐ€ ์ง์ ‘ ๊ทผ๊ฑฐ๋‹ค: "10%+ ๊ธ‰๋ณ€์€ mean-revert" (์†Œํญ ๋“œ๋ฆฌํ”„ํŠธ๋Š” ์ง€์†, ๊ธ‰๋ณ€์€ ํšŒ๊ท€). Panic Fade๋Š” ์ด ํšŒ๊ท€ ์˜์—ญ๋งŒ ์ •์กฐ์ค€ํ•œ๋‹ค.

์™œ ๋งˆ๊ฐ์ด ๋จผ(โ‰ฅ48h) ์‹œ์žฅ๋งŒ์ธ๊ฐ€. ๋งˆ๊ฐ ์ง์ „ ๊ธ‰๋ฝ์€ "์ง„์งœ ์ •๋ณด"(์‚ฌ๊ฑด ํ™•์ •)์ผ ํ™•๋ฅ ์ด ๋†’๋‹ค. ํ•ด๊ฒฐ๊นŒ์ง€ 48์‹œ๊ฐ„ ์ด์ƒ ๋‚จ์€ ์‹œ์žฅ์œผ๋กœ ํ•œ์ •ํ•ด ์ •๋ณด์— ์˜ํ•œ ๋ถ•๊ดด์™€ ์‹ฌ๋ฆฌ์— ์˜ํ•œ ์˜ค๋ฒ„์ŠˆํŒ…์„ ๋ถ„๋ฆฌํ•œ๋‹ค. ๊ธ‰๋ณ€ ์ด๋ฒคํŠธ์˜ ๋ฐ˜๋Œ€ ๊ฐ€์„ค(์ง„์งœ ์ •๋ณด + ๊ฑฐ๋ž˜๋Ÿ‰ ํญ์ฆ = ํŽธ์Šน)์€ ์ž๋งค ๋ด‡ golden-lime์ด ๊ฒ€์ฆํ•œ๋‹ค โ€” ๊ฐ™์€ ์ด๋ฒคํŠธ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์˜๋„์  A/B ์Œ์ด๋‹ค.

๊ธฐ์กด ๋ด‡์—์„œ ๋ฐฐ์šด ๊ฒƒ (STRATEGY_ANALYSIS ๋ฐ˜์˜):

๊ธฐ์กด ์•ฝ์ elderberry์˜ ์ˆ˜์ •
banana: ์Šค๋ƒ…์ƒท "๊ฐœ์ˆ˜" ๊ธฐ๋ฐ˜ ์œˆ๋„์šฐ โ†’ Jenkins ์ค‘๋‹จ ์‹œ 15๋ถ„ ์œˆ๋„์šฐ๊ฐ€ ๋ช‡ ์‹œ๊ฐ„์„ ์ปค๋ฒ„timestamp ๊ธฐ๋ฐ˜ ์œˆ๋„์šฐ + ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฒ€์ฆ (is_window_valid), invalid๋ฉด ์ง„์ž… ์•ˆ ํ•จ
banana: ๊ด€๋Œ€ํ•œ cold-start ํด๋ฐฑ์œผ๋กœ ์‚ฌ์‹ค์ƒ ๋ฌด์ „๋žต ์ง„์ž…cold start๋Š” prices-history ๋ฐฑํ•„๋กœ ํ•ด๊ฒฐ, ๋ฐฑํ•„ ์‹คํŒจ ์‹œ ์ง„์ž… ๊ธˆ์ง€
cherry: rapid_jump ์˜๊ตฌ skipskip์€ reentry_cooldown_hours(24h) ๋™์•ˆ๋งŒ ์œ ํšจ
cherry: ํ•œ ๋ฒˆ ๊ฑฐ๋ž˜ํ•œ ์‹œ์žฅ ์˜๊ตฌ ์žฌ์ง„์ž… ๊ธˆ์ง€HOLDING/์ฟจ๋‹ค์šด๋งŒ ์ฒดํฌํ•˜๋Š” ์žฌ์ง„์ž… ํ—ˆ์šฉ ๊ตฌ์กฐ
cherry: ํ•ด๊ฒฐ๋œ ์‹œ์žฅ์ด ์˜๊ตฌ HOLDING ์ข€๋น„๋กœ ๋‚จ์Œmidpoint ์กฐํšŒ ์‹คํŒจ + ํ•ด๊ฒฐ 24h ๊ฒฝ๊ณผ ์‹œ EXPIRED ๋งˆ๊ฐ + ์ˆ˜๋™ redeem ๊ฒฝ๊ณ 
cherry: TP ๋ชฉํ‘œ๊ฐ€๊ฐ€ 1.0์„ ๋„˜์–ด ๋„๋‹ฌ ๋ถˆ๊ฐ€๋ชฉํ‘œ๊ฐ€ 0.99 ์บก
cherry: ํŠธ๋ ˆ์ผ๋ง ์Šคํƒ‘์ด ์‹คํšจ ์†์ ˆ์„ ์„ ๋Œ€์ฒด (whipsaw)๊ธ‰๋ฝ ๋งค์ˆ˜๋Š” ์ง„์ž… ์งํ›„ ๋ณ€๋™์ด ํฌ๋ฏ€๋กœ trailing ์ž์ฒด๋ฅผ ์ œ๊ฑฐ
๊ณตํ†ต: LOG_LEVEL env ๋ฌด์‹œsetup_logger๊ฐ€ LOG_LEVEL์„ ์ฝ์Œ (--verbose๊ฐ€ ์ตœ์šฐ์„ )

์ง„์ž… ๊ทœ์น™

๋ชจ๋‘ AND. favorite์˜€๋˜ ์ชฝ ํ† ํฐ ๊ธฐ์ค€ ๊ฐ€๊ฒฉ p๋กœ ํ‰๊ฐ€ํ•œ๋‹ค.

์กฐ๊ฑด๊ฐ’ (๊ธฐ๋ณธ)์ด์œ 
์œ ๋™์„ฑliquidity โ‰ฅ $20,000 (gamma liquidity)๋„“์€ ์Šคํ”„๋ ˆ๋“œ๊ฐ€ ๋งŒ๋“œ๋Š” ๊ฐ€์งœ ๊ธ‰๋ฝ ๋ฐฉ์–ด
๊ฑฐ๋ž˜๋Ÿ‰volume24hr โ‰ฅ $10,000 (gamma volume24hr)์‹ค๊ฑฐ๋ž˜๊ฐ€ ๋™๋ฐ˜๋œ ๊ธ‰๋ฝ๋งŒ ๋Œ€์ƒ
์ž”์—ฌ ์‹œ๊ฐ„hours_left โ‰ฅ 48h (gamma endDate)๋งˆ๊ฐ ์ง์ „ ๊ธ‰๋ฝ = ์ง„์งœ ์ •๋ณด์ผ ํ™•๋ฅ ์ด ๋†’์•„ ๋ฐฐ์ œ
์œˆ๋„์šฐ ์œ ํšจ์„ฑ48h ์œˆ๋„์šฐ์— โ‰ฅ 5 ํฌ์ธํŠธ, span โ‰ฅ 24h (is_window_valid)invalid๋ฉด ๋ฐฑํ•„ ์‹œ๋„ ํ›„ ์žฌ๊ฒ€์ฆ, ๊ทธ๋ž˜๋„ invalid๋ฉด ์ง„์ž… ๊ธˆ์ง€ (banana ๊ตํ›ˆ)
favorite ํŒ๋ณ„ref ์œˆ๋„์šฐ์˜ YES ์ตœ๊ณ ๊ฐ€ โ‰ฅ 0.5๋ฉด YES์ชฝ, ์•„๋‹ˆ๋ฉด NO์ชฝ(1-p ํ™˜์‚ฐ) ํ‰๊ฐ€ (evaluate_panic_fade)YES/NO ์–‘๋ฐฉํ–ฅ ์‹œ์žฅ ์ปค๋ฒ„
๊ธฐ์ค€๊ฐ€ref = ์ตœ๊ทผ 48h(๋‹จ ์ตœ๊ทผ 3h ์ œ์™ธ) ์ตœ๊ณ ๊ฐ€, ref โ‰ฅ 0.70์ตœ๊ทผ 3h ์ œ์™ธ = ๊ธ‰๋ฝ ์ž์ฒด๋ฅผ ref์— ๋„ฃ์ง€ ์•Š๊ธฐ ์œ„ํ•จ
๋‚™ํญref - p โ‰ฅ 0.12๊ณตํ™ฉ ๊ทœ๋ชจ ํ•„ํ„ฐ
๋ถ•๊ดด ๋ฐฐ์ œ0.35 โ‰ค p โ‰ค 0.750.35 ๋ฏธ๋งŒ ๋ถ•๊ดด๋Š” ์ง„์งœ ์ •๋ณด๋กœ ๊ฐ„์ฃผ
๋ฐ”๋‹ฅ ์•ˆ์ •ํ™”์ตœ๊ทผ 45๋ถ„(โ‰ฅ 3 ์Šค๋ƒ…์ƒท): ํ˜„์žฌ๊ฐ€ โ‰ฅ ์ง์ „ ์Šค๋ƒ…์ƒท๋“ค(์ตœ์‹  ํฌ์ธํŠธ ์ œ์™ธ) min AND ๊ตฌ๊ฐ„ std โ‰ค 0.02๋–จ์–ด์ง€๋Š” ์นผ๋‚  ํšŒํ”ผ (์‹ ์ €๊ฐ€ ๊ธˆ์ง€ โ€” ํ˜„์žฌ๊ฐ€ ์ž์‹ ์€ Phase 0์—์„œ ์ด๋ฏธ ์Šค๋ƒ…์ƒท์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ min ๊ณ„์‚ฐ์—์„œ ์ œ์™ธ)
์žฌ์ง„์ž… ์ฟจ๋‹ค์šดHOLDING ์—†์Œ + ๋งˆ์ง€๋ง‰ ์ฒญ์‚ฐ/skip ํ›„ 24h ๊ฒฝ๊ณผ (is_reentry_blocked)๋ฐ˜๋ณต ์†์ ˆ ๋ฐฉ์ง€

๋งค์ˆ˜ ์ง์ „ CLOB midpoint ์žฌ๊ฒ€์ฆ: ๊ฐ€๊ฒฉ์ด current_max๋ฅผ ๋„˜์—ˆ์œผ๋ฉด(๋ฐ˜๋“ฑ ์ด๋ฏธ ์™„๋ฃŒ) rebound_before_entry๋กœ skip(์ฟจ๋‹ค์šด ์‹œ์ž‘), current_min ๋ฏธ๋งŒ์ด๋ฉด(๋ถ•๊ดด ์ง„ํ–‰) ์ด๋ฒˆ ์‚ฌ์ดํด๋งŒ ๋ณด๋ฅ˜ํ•œ๋‹ค.

์ฒญ์‚ฐ ๊ทœ์น™

์šฐ์„ ์ˆœ์œ„ ์ˆœ์œผ๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค. trailing stop์€ ์—†๋‹ค.

์šฐ์„ ์ˆœ์œ„์กฐ๊ฑด๊ฐ’exit_reason
1์†์ ˆP&L โ‰ค -10%stop_loss
2์ต์ ˆํ˜„์žฌ๊ฐ€ โ‰ฅ min(์ง„์ž…๊ฐ€ ร— 1.10, 0.99)take_profit
3๋ณด์œ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ณด์œ  โ‰ฅ 48h (๋ฐ˜๋“ฑ ์‹คํŒจ)max_holding
4์‹œ๊ฐ„ ์ฒญ์‚ฐํ•ด๊ฒฐ๊นŒ์ง€ < 24htime_exit
-ํ•ด๊ฒฐ leakmidpoint ์กฐํšŒ ์‹คํŒจ + ํ•ด๊ฒฐ 24h ๊ฒฝ๊ณผ (EXPIRED, ์ˆ˜๋™ redeem)resolved_unredeemed

ํŒŒ๋ผ๋ฏธํ„ฐ (ํ™˜๊ฒฝ๋ณ€์ˆ˜)

์šฐ์„ ์ˆœ์œ„: env > config.yaml > ์ฝ”๋“œ ๊ธฐ๋ณธ๊ฐ’

env๊ธฐ๋ณธ๊ฐ’์˜๋ฏธ
POLYBOT_BUY_AMOUNT5.01ํšŒ ๋งค์ˆ˜ USDC
POLYBOT_MIN_LIQUIDITY20000์ตœ์†Œ ์œ ๋™์„ฑ $
POLYBOT_MIN_VOLUME_24H10000์ตœ์†Œ 24h ๊ฑฐ๋ž˜๋Ÿ‰ $
POLYBOT_TAKE_PROFIT0.10์ต์ ˆ +10% (๋ชฉํ‘œ๊ฐ€ 0.99 ์บก)
POLYBOT_STOP_LOSS-0.10์†์ ˆ -10%
POLYBOT_MAX_POSITIONS-1์ตœ๋Œ€ ๋™์‹œ ํฌ์ง€์…˜ (-1 ๋ฌด์ œํ•œ)
POLYBOT_REENTRY_COOLDOWN_HOURS24์žฌ์ง„์ž… ์ฟจ๋‹ค์šด
POLYBOT_HISTORY_BACKFILLtrueprices-history ๋ฐฑํ•„
POLYBOT_EXCLUDED_CATEGORIES""์ œ์™ธ ์นดํ…Œ๊ณ ๋ฆฌ (comma ๊ตฌ๋ถ„, ๋นˆ ๊ฐ’ = ๋น„ํ™œ์„ฑ)
POLYBOT_REF_WINDOW_HOURS48๊ธฐ์ค€๊ฐ€ ์‚ฐ์ถœ ์œˆ๋„์šฐ
POLYBOT_REF_EXCLUDE_RECENT_HOURS3ref์—์„œ ์ œ์™ธํ•  ์ตœ๊ทผ ๊ตฌ๊ฐ„
POLYBOT_REF_MIN0.70ref ์ตœ์†Œ๊ฐ’ (์›๋ž˜ favorite)
POLYBOT_DROP_MIN0.12์ตœ์†Œ ๋‚™ํญ
POLYBOT_CURRENT_MIN0.35์ง„์ž… ๋ฐด๋“œ ํ•˜ํ•œ (๋ถ•๊ดด ๋ฐฐ์ œ)
POLYBOT_CURRENT_MAX0.75์ง„์ž… ๋ฐด๋“œ ์ƒํ•œ
POLYBOT_STAB_WINDOW_MINUTES45์•ˆ์ •ํ™” ํ™•์ธ ์œˆ๋„์šฐ (๋ถ„)
POLYBOT_STAB_MAX_STD0.02์•ˆ์ •ํ™” ์ตœ๋Œ€ std
POLYBOT_ENTRY_HOURS_MIN48์ง„์ž… ์ตœ์†Œ ์ž”์—ฌ ์‹œ๊ฐ„
POLYBOT_MAX_HOLDING_HOURS48์ตœ๋Œ€ ๋ณด์œ  ์‹œ๊ฐ„
POLYBOT_EXIT_HOURS24ํ•ด๊ฒฐ ์ด ์‹œ๊ฐ„ ์ „ ์ฒญ์‚ฐ
LOG_LEVELINFO๋กœ๊ทธ ๋ ˆ๋ฒจ

์ด ์ „๋žต์ด ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ

A/B ๊ฒ€์ฆ ๊ณ„ํš

1) ์‹œ๋ฎฌ๋ ˆ์ด์…˜ (1~2์ฃผ) โ€” uv run python main.py run --simulate --job sim-test๋ฅผ Jenkins 3~5๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์‹คํ–‰. data/sim-test/trades_sim.db ์ถ•์ .

2) ์†Œ์•ก ์‹ค์ „ (4์ฃผ) โ€” POLYBOT_BUY_AMOUNT=1๋กœ ์‹œ์ž‘, ๋ฌธ์ œ ์—†์œผ๋ฉด ์ฆ์•ก.

3) ํŒ๋‹จ ๊ธฐ์ค€ โ€” 4์ฃผ + 30๊ฑด ์ด์ƒ ๊ฑฐ๋ž˜์—์„œ:

4) ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ • โ€” ์›”๋ณ„ CSV(trades_YYYY-MM.csv)์˜ ref_price_at_buy/drop_at_buy/exit_reason์œผ๋กœ ๋‚™ํญ ๊ตฌ๊ฐ„๋ณ„ ์Šน๋ฅ ์„ ์ง‘๊ณ„ํ•ด ๋ฐ์ดํ„ฐ๋กœ ์กฐ์ •ํ•œ๋‹ค.

5) ํšŒ๊ณ  ๊ณตํ†ต ์ปฌ๋Ÿผ (A/B ํฌ์ŠคํŠธ๋ชจํ…œ ๊ณ„์•ฝ) โ€” trades์™€ CSV์— strategy_name("elderberry"), mode("live"/"sim"), volume_24h_at_buy(๋งค์ˆ˜ ์‹œ์  gamma volume24hr), stabilization_range_at_buy(์ง„์ž… ํŒ์ •์— ์“ด ์•ˆ์ •ํ™” ๊ตฌ๊ฐ„ ๊ณ ์ €ํญ max-min)๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ๊ต์ฐจ ๋ด‡ UNION ์ฟผ๋ฆฌ ์‹œ strategy_name์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ , sim/live ํ˜ผ์ž…์€ mode๋กœ ๊ฑธ๋Ÿฌ๋‚ธ๋‹ค.

๋ฒ ๋ฆฌ์—์ด์…˜ ํ›„๋ณด:

์•ˆ๋ณ€๊ฒฝ env๊ฐ€์„ค
A-1 (์–•์€ ๋‚™ํญยท๋น ๋ฅธ ํšŒ์ „)POLYBOT_DROP_MIN=0.08, POLYBOT_TAKE_PROFIT=0.06, POLYBOT_MAX_HOLDING_HOURS=24์ž‘์€ ๊ณผ์ž‰๋ฐ˜์‘์ด ๋” ์ž์ฃผ, ๋” ๋นจ๋ฆฌ ๋ณต์›๋œ๋‹ค
A-2 (๊นŠ์€ ๋‚™ํญ๋งŒ)POLYBOT_DROP_MIN=0.18, POLYBOT_CURRENT_MIN=0.40๊ทน๋‹จ์  ๊ณตํ™ฉ์ผ์ˆ˜๋ก ๋˜๋Œ๋ฆผ ํญ์ด ํฌ๋‹ค
A-3 (์—„๊ฒฉํ•œ ์•ˆ์ •ํ™”)POLYBOT_STAB_WINDOW_MINUTES=90, POLYBOT_STAB_MAX_STD=0.015์•ˆ์ •ํ™”๋ฅผ ์˜ค๋ž˜ ํ™•์ธํ• ์ˆ˜๋ก ๋–จ์–ด์ง€๋Š” ์นผ๋‚  ํšŒํ”ผ์œจ์ด ์˜ค๋ฅธ๋‹ค (์ง„์ž… ํšŸ์ˆ˜๋Š” ๊ฐ์†Œ)

์‹คํ–‰ (Jenkins)

#!/bin/bash
export POLYBOT_BUY_AMOUNT=20
export POLYMARKET_PRIVATE_KEY=<Jenkins credential>
export POLYMARKET_FUNDER_ADDRESS=<Jenkins credential>
export LOG_LEVEL=INFO
# ์ „๋žต ํŒŒ๋ผ๋ฏธํ„ฐ ์˜ˆ์‹œ (์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’)
export POLYBOT_DROP_MIN=0.12
export POLYBOT_REENTRY_COOLDOWN_HOURS=24
export POLYBOT_MAX_HOLDING_HOURS=48

cd ./golden-elderberry
uv sync
uv run python ./main.py run

3~5๋ถ„ ์ฃผ๊ธฐ cron ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค (์Šค๋ƒ…์ƒท ์ถ•์ ์ด ์‹œ๊ทธ๋„ ํ’ˆ์งˆ์„ ์ขŒ์šฐ).