gunja-multi-tenant.serviceok1000 cash_point ๋ถ์ โ user 16 ๊ฑฐ๋ ์ ๋ฐ ์ ๊ฒ(์ ์ sprint) โ admin tenant ๋น๊ต โ ๊ฐ์ ์ฝ๋์ธ๋ฐ ๊ฒฐ๊ณผ ์ ๋ฐ๋ ๋ฐ๊ฒฌ:
| admin | user 16 | |
|---|---|---|
| 5/8 | +$226.32 (15W/0L) | โ$199.72 (0W/1L) โ daily SL pause |
| 5/9 | +$105.17 (7W/0L) | โ$32.31 (0W/2L) |
| 5์ ๋์ | +$617.89 โ | โ$94.22 โ |
์ฝ๋ ํธ๋ ์ด์ค ๊ฒฐ๊ณผ multi_tenant_agent.py:111์ด is_hedge_mode=False ๊ฐ์ โ user์ Bitget ๊ณ์ mode์ ๋ฌด๊ดํ๊ฒ one-way๋ก ํธ๋ ์ด๋ฉ โ ํ์ด ํค์ง NPV ๋์ ๋ฐ์.
์ฌ์ฉ์ ๋ช ๋ น: "multi-tenant๋ hedge mode๋ก ๋ณ๊ฒฝ, ๊ด๋ฆฌ์์ ๋ชจ๋ ๋์ผํด์ผ ํ๋ค"
์ํ ๋ถ์ ํ 3๋จ๊ณ ์ ์ โ ์ฌ์ฉ์ ๊ฒฐ์ = Phase A๋ง
| Phase | ๋ด์ฉ | ๊ฒฐ์ |
|---|---|---|
| A | ์ฝ๋ ๊ฐ์ one-way ์ ๊ฑฐ, admin๊ณผ ๋์ผํ ์๋ ๊ฐ์ง ๋์ | โ ์ ์ฉ |
| B | user 16 Bitget ๊ณ์ hedge mode ์นด๋๋ฆฌ ์ ํ | ๋ณด๋ฅ (์ด์์ง) |
| C | ๋๋จธ์ง user ์์ฐจ ์ ํ | ๋ณด๋ฅ (์ด์์ง) |
Phase A ๋จ๋ ์ผ๋ก๋ ์๋ฏธ ํผ: user๊ฐ ๋ณธ์ธ Bitget ์ฑ์์ hedge๋ก ๋ณ๊ฒฝํด๋๋ฉด ์์คํ ์ด ์๋ ๊ฐ์ง โ user ์์จ ๊ฒฐ์ ๊ตฌ์กฐ.
# 1.1 Position Mode: ๊ธฐ๋ณธ์ ์ผ๋ก One-way mode ์ฌ์ฉ
# Multi-Tenant ์ ์ ๋๋ถ๋ถ์ด one-way mode๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์์ ํ๊ฒ one-way๋ก ๊ธฐ๋ณธ ์ค์
# Pair Hedge๋ one-way mode์์๋ ์๋ (ํ๋ฒ์ ํ ๋ฐฉํฅ๋ง ๊ฐ๋ฅ)
self.is_hedge_mode = False
logger.info(f"[{user_id}] Using one-way mode (default for multi-tenant)")
# 1.1 Position Mode: admin๊ณผ ๋์ผํ ์๋ ๊ฐ์ง (2026-05-10 unify)
# ๊ธฐ์กด one-way ๊ฐ์ ์ ์ฑ
์ ๊ฑฐ โ ๊ฐ user์ Bitget ๊ณ์ mode๋ฅผ fetch_positions๋ก ์ถ๋ก
# ํ์ฑ ํฌ์ง์
์ค hedged=True๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด hedge mode, ์๋๋ฉด one-way
# admin/scripts/run_pair_hedge_trading.py์ ํจํด(line 128~141)๊ณผ ์ ํํ ๋์ผ
self.is_hedge_mode = False
try:
positions = self.exchange.fetch_positions()
for pos in positions:
if float(pos.get('contracts', 0)) > 0:
pos_mode = pos.get('hedged', False)
if pos_mode:
self.is_hedge_mode = True
break
except Exception as e:
logger.warning(f"[{user_id}] Could not detect hedge mode: {e}")
logger.info(f"[{user_id}] Hedge Mode: {self.is_hedge_mode} (auto-detected, unified with admin)")
multi_tenant_agent.py.bak-20260510-hedge-unify (15150 bytes)/tmp/multitenant_hedge_unify.py (paperclip + kahan)systemctl restart gunja-multi-tenant
โ Active: active (running) since Sat 2026-05-09 16:48:23 UTC
| user | hedge mode | capital | ์ํ |
|---|---|---|---|
| 1 | False | $0.00 | SKIP_LOW_CAPITAL |
| 3 | False | $0.00 | SKIP_LOW_CAPITAL |
| 16 | โ True | $546.40 (free $72.99) | ํ์ฑ, ์ด๋ฏธ Bitget์์ hedge์์ |
| 24 | โ True | $760.22 | ํ์ฑ (ํ์ด 6๊ฐ ๋ณด์ ) |
| 26 | True | $67.24 | SKIP_LOW_CAPITAL |
| 27 | True | โ | ํ์ฑ |
user 16์ ์ด๋ฏธ Bitget ๊ณ์ ์์ hedge mode์๋ค. ์ฝ๋๋ง one-way๋ก ๊ฐ์ ํ๊ณ ์์์ ๋ฟ.
โ 5/8 โ$199, 5/9 โ$32 ์์ค์ root cause = ๊ฑฐ๋์๋ hedge์ธ๋ฐ ์์คํ
์ one-way๋ก ์ด์ฉ = ํ์ด ํค์ง ๋นํจ์จ ๊ทธ ์์ฒด.
์ด์ ๋ณด๊ณ ์(stage8-ewallet-filter ๋ค์ sprint)์ "ํ์ด NPV ๋์ ๊ฐ์ค" ์ ํํ ์
์ฆ.
| ์์ | ์ ๊ฒ |
|---|---|
| +24h (5/10 17:00 UTC) | user 16 ์ ์ง์ ์ hedge ๋์ ํ์ธ. 5/8-9 ๊ฐ์ ์์ค ํจํด ์ฌ๋ฐ ์ฌ๋ถ |
| +72h | user 16 5์ ๋์ net์ด โ$94.22์์ ํ๋ณตํ๋ ์ถ์ธ ํ์ธ |
| +1์ฃผ์ผ | user 24/27 hedge ๋ชจ๋์์ admin ์์ค win rate(86%+) ๊ทผ์ ์ฌ๋ถ |
ํ๊ท ๋ฐ์ ์ ๋กค๋ฐฑ:
cp /opt/gunja/src/multi_user/multi_tenant_agent.py.bak-20260510-hedge-unify \
/opt/gunja/src/multi_user/multi_tenant_agent.py
systemctl restart gunja-multi-tenant
Phase A ๋จ๋ ์ ์ฉ๋ง์ผ๋ก 6 user ์ ์์ด ๋ณธ์ธ Bitget mode๋ฅผ ์์จ์ ์ผ๋ก ๋ฐ๋ผ๊ฐ๋ ๊ตฌ์กฐ ์์ฑ. ์ถ๊ฐ ๊ฑฐ๋์ mode ์ ํ ์์ ์ด ์ฌ์ค์ 0๊ฐ๋ก ์ค์๋ค(์ด๋ฏธ ๋ชจ๋ hedge ์ฌ์ฉ ์ค).
"๊ด๋ฆฌ์์ ๋ชจ๋ ๋์ผ" โ ์ฝ๋ 100% ๋์ผ, mode 6/6 ์ผ์น, ์ ๋ตยทconfigยทexecutor ๊ณต์ .