Files
Hermes-Skills/okx-auto-position/references/v4.5.86-2026-09-11-single-coin-70pct-config-driven.md
T

57 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# v4.5.86 (2026-09-11) 单币种上限 70% 配置化 + 存量减仓实证
## 用户原话
- "可用资金大于100刀了,现在要控制仓位了,一个币种满仓最多就是200刀的70%。现在将近300刀,就要分配一下了,你规划一下,这个分配的算法。先计划,不修改。"
- "多币方案是,比如现在一共是290刀,单币种上限是200刀,暂定,可配置的。你看看。现有的仓位按这个来减。"
## 改动清单 (1 行配置 + 0 行代码)
`~/.hermes/skills/trading/okx-auto-position/config.json`:
```json
"position_sizing": {
"balance_utilization": 0.60,
"single_coin_max_pct": 0.70, // ← 新增 (旧: 代码 fallback 0.75)
...
}
```
advisor 既有代码 (不用改):
```python
single_coin_cap_pct = cfg('position_sizing', 'single_coin_max_pct', 0.75)
total_cap = acct_info['total_capital'] # = free + used_margin, 实时
single_coin_cap = total_cap * single_coin_cap_pct
single_coin_avail = max(0, single_coin_cap - same_coin_margin)
avail_margin = min(free/1.07, single_coin_avail/1.07) # SAFETY_FACTOR 见 v4.5.74
```
验证: `python3 -c "from config_loader import get; print(get('position_sizing','single_coin_max_pct'))"` → `0.7` ✓
## 存量减仓实证 (2026-09-11)
| 项 | 减仓前 | 减仓后 |
|---|---|---|
| SKHYNIX long @10x | 1.784 张 / $229.10 (73.9%) | **1.69 张 / $217.06 (69.8%)** ✓ |
| Free | $76.85 | $93.78 |
| Total | $310.14 | $310.83 |
流程 (`/tmp/reduce_to_70.py` 模式):
1. `fetch_balance()` + `fetch_positions()` 拿实时 total / 持仓占用
2. `target = total × 0.70`; 已用 ≤ target → 不动
3. `margin_per_ct = initialMargin / contracts` (**实测值**, 含浮盈亏)
4. `reduce_ct = ceil((已用 − target) / margin_per_ct, 到 lot step)`
5. 市价 `reduceOnly=True` 反方向平 → sleep 2 → 重 fetch 验证占用 ≤70%
## 多币分配语义 (user 选定 "先到先得")
- 无预约槽位/均分 — 每个信号独立 `min(该币剩余额度, free/1.07)`
- 第 1 个币最多吃满 70%, 后续信号只能用剩余 Free
- 上限随 total_capital 浮动: 赚钱 → 上限自动涨; 亏钱 → 自动缩
## 坑
- ❌ 硬编码 0.70 进 advisor (违反"任何名单/阈值不硬编码"铁律) — 走 config
- ❌ 每张保证金用理论值 `ctVal×price/lev` — 浮盈亏会让实际 initialMargin 偏离, 用实测
- ❌ 减仓后不验证 — 必须 re-fetch 确认占用真的 ≤ 70%
- ❌ 只减增量不管存量 — user 拍板"现有的仓位按这个来减", 存量立即对齐