orallexa 설치부터 실제 체결까지 — 화면의 확신도 50.8%가 무슨 뜻인지 끝까지 따라가 봤습니다
Platt 보정·Brier 로그·편향 추적까지 갖춘 드문 도구입니다. 그런데 16종목을 돌렸더니 확신도는 세 값밖에 안 나왔고, 「CLAUDE AI OVERLAY」 버튼은 눌러도 LLM 을 안 부릅니다.
34편. orallexa — 「확신 80%」가 정말 80%인지 재 봤습니다이 글의 완료 조건: 독자는 이 도구가 화면에 띄우는 확신도가 어떤 식으로 만들어지는지 자기 손으로 확인하고, 그 숫자를 우리 슬롯에 올려 실제 체결까지 받아 보면 성공입니다.
| 하는 일 | 미국 주식·크립토 티커 하나를 기술지표로 채점하고, 거기에 Claude 판단을 얹어 BUY/SELL/WAIT + 확신도 + 상승·중립·하락 확률을 냅니다. 주문은 알파카 페이퍼로 나갑니다 |
| 맞는 사람 | 확신도·보정·Brier 같은 계측 장치가 코드에 어떻게 들어가는지 보고 싶은 사람 · 판단만 받아서 자기 실행 층에 붙일 사람 |
| 안 맞는 사람 | README 의 「8소스 융합·Bull/Bear/Judge 토론」을 쓰려는 사람(§2.2 에서 안 돌아갑니다) · 손절을 도구에 맡기려는 사람(§4.3) |
| 이 글의 결과물 | 16종목 판단 16건, 확신도 원값과 화면값의 대조표, 알파카로 나가는 주문 인자 원문, 그리고 그 판단을 weltiq 로 옮겨 받은 왕복 체결 1회 |
| 준비물·비용 | 코드 0원(MIT) · 자료 무료(yfinance) · LLM 토큰만 — 성공 호출 1회 $0.002834 실측, 이 글 전체 41회 $0.093519 |
| 시간·난도 | 의존성 설치 163초 · 판단 1건 평균 4.096초 · 난도 중 |
| weltiq 와의 관계 | 붙었습니다. 도구가 낸 BTC 판단을 슬롯에 올려 36초 뒤 체결, 2분 뒤 청산. §5 가 그 기록입니다 |
| 검증 환경·날짜 | macOS · Python 3.11.16 · 커밋 794a2ec · 2026-09-24 · LLM 은 OpenRouter 경유 claude-sonnet-4-6 고정 |
| 고지 | 필자는 weltiq 와 제휴를 맺고 기고합니다. 이 글의 모든 명령과 숫자는 위 환경에서 실제로 돌려 얻은 실측이고, 주문은 전부 모의입니다. 이 도구가 내는 BUY·확신도·확률은 전부 그 도구의 출력이며 필자의 의견이 아닙니다 |
원문 로그와 원자료: reports/a/34-orallexa/
사람 쪽 문장은 실제로 친 명령을 대화로 옮긴 것이고, 출력은 실측이며 숫자는 손대지 않았습니다.
1. 이게 뭔가요
alex-jb/orallexa-ai-trading-agent 는
티커 하나를 기술지표로 채점하고 그 위에 Claude 판단을 얹는 시스템입니다.
| 항목 | 값 | 확인 방법 |
|---|---|---|
| 주소 | github.com/alex-jb/orallexa-ai-trading-agent |
|
| 라이선스 | MIT | LICENSE · GitHub API |
| 별 수 | ★67 · 포크 21 (관측일 2026-09-24) | GitHub API |
| 만들어진 날 / 마지막 푸시 | 2026-04-01 / 2026-07-12 | GitHub API |
| 이 글이 돌린 커밋 | 794a2ec0ce0b1271b468814eee47c2cd4edde147 |
git log -1 |
| 코드 크기 | 본체 51,130줄 · 테스트 18,112줄 / 83파일 | wc -l 실측 |
| 브로커 | 알파카 페이퍼 하드코딩 (bot/alpaca_executor.py:32,61) |
이 도구를 이 자리에 세운 이유가 있습니다. 이 연재에서 지금까지 본 도구 중 확신도를 재는
설비가 가장 많이 들어 있습니다. Platt 보정(engine/platt_calibration.py), Brier 감사와
신뢰도 다이어그램(markets/auto/brier_audit.py), 편향 추적(engine/bias_tracker.py),
소스별 정확도(engine/source_accuracy.py), 결정 로그(engine/decision_log.py). 논문 인용까지
붙어 있습니다.
그래서 이 편의 질문은 하나입니다. 화면에 뜨는 「확신도 50.8%」가 무슨 뜻인가.
orallexa 자체 UI. MSFT 를 SWING·1D 로 돌리고 「CLAUDE AI OVERLAY」를 켠 화면입니다. 가운데 아래 세 칸을 보세요 — SIGNAL Strong 79/100, **CONFIDENCE Low 48%**, RISK Low. 그런데 그 바로 위에는 **73% UPSIDE PROBABILITY** 가 큼직하게 떠 있습니다. 「얼마나 확신하나」로 읽히는 숫자가 한 화면에 둘 있고 **25포인트 벌어져 있습니다.** 맨 위 BREAKING 줄은 직전 판단(55%)과 비교해 +18% 움직였다고 알려 줍니다
이 도구의 뼈대
scripts/run_daily_pilot.py ← 자율 진입점 (launchd 로 매일 09:35 ET)
↓
core/brain.run_prediction ← use_debate 기본값 False
↓
skills/prediction.py 기술지표 채점 → Claude 호출 1회
↓ confidence = scale_confidence(LLM 원값)
engine/decision_log.py memory_data/decision_log.json 에 적재
↓
bot/alpaca_executor.py 확신도 게이트 → 알파카 주문
옆에 다른 진입점이 셋 더 있습니다 — app.py(Streamlit)·api_server.py(FastAPI, 이 글의
UI 가 쓰는 것)·core/loop.py. 같은 티커에 다른 경로가 붙고 결과가 다릅니다. 이 글은
자율 진입점 run_daily_pilot.py 로 못 박고 쟀습니다.
2. 설치하기
파이썬 3.11 이상이면 됩니다. 필자는 3.11.16 으로 돌렸습니다.
git clone https://github.com/alex-jb/orallexa-ai-trading-agent.git
cd orallexa-ai-trading-agent
python3.11 -m venv .venv
.venv/bin/pip install -r requirements.txt # 163초
.env 는 이렇게 채웁니다. 키는 Anthropic 키 하나면 판단이 돌고, 알파카 키는 주문을
낼 때만 필요합니다.
ANTHROPIC_API_KEY=...
ALPACA_API_KEY=... # 페이퍼 (무료)
ALPACA_SECRET_KEY=...
필자는 Anthropic 직접 호출 대신 OpenRouter 를 썼습니다. SDK 를 그대로 두고
ANTHROPIC_BASE_URL=https://openrouter.ai/api 만 넣으면 통합니다.
2.1 막힌 자리 — 자율 진입점은 .env 를 안 읽습니다
README 는 .env 에 키를 넣으라고 합니다. 그런데 load_dotenv 를 부르는 파일은
api_server.py 와 desktop_agent/main.py 둘뿐입니다. scripts/run_daily_pilot.py 로
바로 돌리면 키가 안 잡힙니다.
그리고 이 실패가 조용합니다. 필자는 이걸 모르고 첫 판을 돌렸는데, 401 이 떨어졌는데도
결과물은 멀쩡한 모양으로 나왔습니다 — WAIT · 확신도 32.8% · "Claude overlay applied".
LLM 이 401 을 받아도 근거 줄에 「Claude overlay applied」가 찍힙니다. 호출 실패 시
llm/ui_analysis.py:229 가 기본값(WAIT·40%)을 조용히 돌려주고, 위층은 그걸 정상 응답으로
받기 때문입니다. 0.5초 만에 끝나는 것 말고는 티가 안 납니다.
우회는 한 줄입니다.
set -a; source ./.env; set +a # 먼저 export 하고
PYTHONPATH=. .venv/bin/python scripts/run_daily_pilot.py --tickers NVDA --dry-run
막혔는지 확인하는 법: 판단 하나가 4초쯤 걸리면 LLM 이 돈 것이고, 0.5초 만에 끝나면 안 돈 것입니다. 시간이 제일 정직한 지표입니다.
2.2 잠복한 것 하나 — 오늘 새로 깔면 LLM 경로 3분의 2가 죽어 있습니다
requirements.txt:2 는 버전 없이 anthropic 한 줄입니다. 오늘 새로 깔면 1.8.0 이
오는데, 그 SDK 의 Messages.create() 에는 temperature 인자가 없습니다.
「CLAUDE AI OVERLAY」를 켜고 끈 두 호출이 **한 글자도 다르지 않습니다.** 서버 로그에는 Claude overlay failed: Messages.create() got an unexpected keyword argument 'temperature' 가 매번 찍히는데, 응답은 200 OK 로 정상값처럼 돌아옵니다. temperature 를 넘기는 호출은 33곳 중 22곳입니다
22곳이 무엇인지가 중요합니다 — llm/debate.py(Bull/Bear/Judge)·llm/debate_graph.py·
engine/multi_agent_analysis.py·engine/daily_intel.py·engine/scenario_sim.py·
llm/perspective_panel.py. 저장소 설명에 적힌 「8소스 신호 융합, Claude Opus 4.7 위의
Bull/Bear/Judge 토론」이 전부 이 목록 안에 있습니다.
살아 있는 11곳에 자율 진입점이 쓰는 prediction_decision_report 가 들어 있습니다. 그래서
파일럿은 돕니다. 테스트 83파일 18,112줄이 이걸 못 잡는 이유는 전부 클라이언트를 가짜로
바꿔 놓고 돌기 때문입니다 — 진짜 SDK 의 시그니처를 아무도 확인하지 않습니다.
고치는 건 한 줄인데(의존성에 상한을 박으면 됩니다), 받은 그대로는 안 돕니다.
3. 설치했으니 일단 한 번 돌려봅시다
3.1 첫 판단
이렇게 말합니다
NVDA 를 스윙으로 한 번 봐 줘. 주문은 내지 말고.
그러면 이런 게 돌아옵니다
PILOT_START tickers=['NVDA'] confidence_gate=60.0% dry_run=True
HTTP Request: POST https://openrouter.ai/api/v1/messages "HTTP/1.1 200 OK"
DECISION NVDA decision=WAIT confidence=42.6% risk=MEDIUM elapsed=5.0s
PILOT_DONE trades=0 decisions=1
직접 치고 싶다면
set -a; source ./.env; set +a
PYTHONPATH=. .venv/bin/python scripts/run_daily_pilot.py --tickers NVDA --dry-run
이렇게 나오면 성공입니다. 200 OK 와 4~5초가 함께 보이면 LLM 이 실제로 답한 것입니다.
3.2 대시보드 띄우기
이 도구의 대시보드는 백엔드와 프런트 두 개를 따로 띄웁니다.
# 터미널 1 — API
set -a; source ./.env; set +a
.venv/bin/python api_server.py # → http://localhost:8002
# 터미널 2 — UI
cd orallexa-ui && npm install && npm run dev # → http://localhost:3000
- 주소: UI 는
http://localhost:3000, API 는http://localhost:8002. README 에 포트가 안 적혀 있습니다 —api_server.py:1578에 있습니다. 바꾸려면 그 줄을 고칩니다 - 로그인은 없습니다. 계정 없이 그대로 열립니다
- 처음 열면 왼쪽에 티커 입력칸, 가운데에
STANDBY. 티커를 넣고RUN SIGNAL을 눌러야 화면이 찹니다. 데모 모드도 있어 키 없이 눌러 볼 수 있습니다 - 막힌 자리: README 의 따라치기 블록 한가운데에 면책 문구가 끼어 있어 그대로 복사하면
깨집니다.
npm install은 6초, Next 기동은 129ms 로 빨랐습니다
3.3 초보자가 막히는 자리 넷
| 증상 | 원인 | 우회 |
|---|---|---|
판단이 0.5초 만에 끝나고 늘 WAIT 40% |
.env 를 안 읽는다 (§2.1) |
set -a; source ./.env; set +a |
| 오버레이를 켜도 숫자가 안 변한다 | anthropic 1.8.0 + temperature (§2.2) |
SDK 버전 고정 |
| 대시보드가 「PAPER TRADING · NOT CONNECTED」 | 아래 §4.5 | 키 문제가 아니다 |
BTC-USD 로 주문이 400 |
분석은 BTC-USD, 알파카 크립토는 BTC/USD |
§5 의 매핑 |
4. 본격적으로 — 실전 시나리오
4.1 시나리오 D. 「확신 80%」가 정말 80%인가 (= S4)
이 도구의 확신도는 상한 82% 라고 코드에 적혀 있습니다(models/confidence.py:23).
그래서 16종목을 한 번씩 돌리고, 화면에 뜨는 값과 LLM 이 실제로 쓴 원값을 같이 잡았습니다.
16종목 전부에 대해 LLM 이 쓴 확신도 원값이 **52 · 58 · 62 세 개뿐**입니다. 화면에 뜬 값도 42.6% · 47.6% · 50.8% 셋. 제일 높은 것과 낮은 것의 차이가 **8.2포인트**입니다. 82% 상한 근처는 한 번도 나오지 않았습니다. 반면 같은 판단이 함께 내는 p_up(상승 확률)은 **0.15에서 0.57까지** 벌어집니다
세 줄 요약
- 16종목에서 확신도는 세 값뿐이었고 폭은 8.2포인트였습니다. 같은 종목 NVDA 를 5회 반복했을 때도 원값이 5/5 전부 52.0 이었습니다
- 화면값 = 원값 × 0.82 입니다.
scale_confidence()는 이름과 문서 설명("capped at 82%")과 달리 상한을 씌우는 게 아니라 모든 값에 0.82를 곱합니다. 52 → 42.6, 62 → 50.8 - 80%는 구조적으로 안 나옵니다. LLM 이 최고로 쓴 62가 화면에서는 50.8%가 됩니다
그래서 화면의 50.8% 는 확률이 아닙니다. 이 도구가 스스로 인용하는 논문(Prophet Arena, arxiv 2510.17638)이 지적하는 「LLM 이 중간 구간으로 몰린다」는 현상이 그대로 관측된 것이고, 거기에 0.82 곱하기가 한 번 더 얹힌 값입니다.
한 술 더 뜨는 자리가 있습니다. LLM 호출이 안 붙는 경로에서는 확신도가 아예 수식입니다 —
|기술점수 − 50| × 2 × 0.82. §1 의 화면에서 본 48% 가 정확히 이것입니다(기술점수 79 →
|79−50|×2 = 58 → 58 × 0.82 = 47.6). 화면에 「CLAUDE AI OVERLAY」가 켜져 있었는데도
그렇습니다(§2.2). 반면 같은 카드의 73% UPSIDE 는 확률 모델이 낸 별개 숫자입니다.
4.2 Brier 로그가 쌓이나 (시나리오 D-2)
이 도구에는 자기 확신도를 채점하는 감사가 있습니다. markets/auto/brier_audit.py 는
결정 로그를 읽어 Brier 점수·신뢰도 다이어그램·ECE 를 내고, Platt 보정을 했으면 얼마나
좋아졌을지까지 계산합니다. 돌려 봤습니다.
받은 그대로 돌리면 loaded 0 historical decisions 입니다 — 결정 로그 경로가 **저자 맥의 바탕화면으로 하드코딩**돼 있습니다(brier_audit.py:189-190). 보고서 출력 경로도 마찬가지라, 제 맥에 ~/Desktop/Interview-Prep/Projects/alex-brain/… 폴더가 새로 생겼습니다. 경로를 실제 로그로 바꿔 끼우면 20행을 읽는데, 그중 채점 가능한 것은 **1행**입니다
세 줄 요약
- 로그는 쌓입니다. 파일럿은 판단마다
decision_log.json에 한 줄을 남깁니다. 오늘 20행이 됐습니다 - 그런데 채점되는 것은 1행이었습니다. 감사는
WAIT을 건너뛰는데(방향 주장이 없으니 맞습니다) 20행 중 11행이 WAIT 입니다. 남은 9행 중 하루 이상 지난 것이 1행뿐이었고, 그 한 줄의 Brier 는 0.2704 였습니다(forecast_p 0.52, 실제 −2.26% →actual 0) - Platt 은 못 돌았습니다. 최소 30관측이 필요한데 1개입니다 —
_Skipped: Need at least 30 observations, got 1._
그리고 제일 중요한 것: 감사가 채점하는 숫자는 confidence 가 아니라
probabilities.up 입니다(brier_audit.py:301). 화면에 뜨는 확신도 50.8% 는 이
감사에 한 번도 들어가지 않습니다. 재는 장치는 있는데, 사람이 보는 숫자를 안 잽니다.
Platt 은 주식 판단에 붙어 있지 않습니다. engine/platt_calibration.py 를 임포트하는
곳은 자기 테스트와 이 감사 하나뿐이고, 감사 안에서도 「했다면 얼마나 좋아졌을까」 보고서
한 문단입니다. 저자 자신이 그 함수 독스트링에 적어 뒀습니다 — "before flipping the live
wire-up flag on polymarket_daily.py / stock decision path". 즉 아직 안 이었습니다.
로그의 목적도 미달입니다. run_daily_pilot.py 의 독스트링은 이 스크립트가 존재하는
이유를 "100 eligible production debate rows" 를 모으기 위해서라고 적어 뒀습니다. 그런데
파일럿은 use_debate 기본값 False 로 부릅니다. 20행 중 토론이 들어 있는 행은 0개이고
entry_price 도 20행 전부 0.0 입니다.
4.3 시나리오 S5·S7. 자율 경로는 손절을 안 넘깁니다
브래킷 주문(진입 + 손절 + 익절을 한 묶음으로) 코드는 진짜로 있습니다.
alpaca_executor.py:176-186 이 OrderClass.BRACKET 을 만듭니다. 조건이 하나 붙어 있습니다 —
if stop_loss > 0 and take_profit > 0.
그래서 알파카로 실제로 나가는 인자를 가로채 두 경로를 나란히 놓았습니다.
같은 execute_signal() 을 같은 계좌로 부르는데, **자율 경로는 order_class: null · stop_loss: null** 이고 사람이 레벨을 채우는 경로는 order_class: "bracket" 입니다. 다른 것은 인자 두 개뿐입니다. run_daily_pilot.py:134-139 는 그 둘을 넘기지 않습니다
실제 주문으로도 확인했습니다. 게이트를 45로 내리고 MSFT 를 한 번 냈습니다.
Order submitted: BUY 9 MSFT @ $500.40 (conf=51%, stop=$0.00, target=$0.00)
도구 자신의 로그가 stop=$0.00 이라고 적습니다. 알파카 쪽 주문 기록도
order_class: "simple", legs: 0 이었습니다(주문 69e14508-…, 확인 뒤 취소).
세 줄 요약
- 브래킷은 사람 경로 전용입니다. 24시간 돌리는 경로에서는 한 번도 안 켜집니다
- 진입 뒤를 보는 것이 없습니다. 손절 이동·부분 청산·재평가 루프가 코드에 0건이고,
close_position은 사람이 누르는 HTTP 엔드포인트입니다 - 기본 설정으로는 아예 주문이 안 나갑니다. 파일럿 기본 게이트는 60%인데 이 도구가 낸
최고 확신도가 50.8% 였습니다 —
SKIP MSFT — confidence 50.8% below gate 60.0%. 0.82 곱하기가 게이트 의미까지 바꿔 놓은 셈입니다(화면 60% = LLM 원값 73.2)
33편 예고를 여기서 정정합니다. 지난 편 말미에 이 도구를 「확신도를 크기에 반영하는 설비가 가장 잘 갖춰진 도구」라고 적었습니다. 설비가 많다는 건 맞고, 크기에 반영한다는 건 틀렸습니다. 확신도는 게이트로만 쓰입니다(
< 40이면 건너뜀,--confidence미만이면 건너뜀). 크기는 자율 경로에서 상수DEFAULT_POSITION_PCT = 5.0, 사람 경로에서는risk_level(LOW/MEDIUM/HIGH)로 정해집니다. 확신도가 주수를 깎는 자리는 어느 경로에도 없습니다.
4.4 시나리오 S5-b. 실패한 주문이 성공으로 집계됩니다
BTC-USD 로 게이트를 45까지 내려 주문을 내 봤습니다.
Order failed for BTC-USD: {"message":"code=400, message=invalid symbol: BTC-USD"}
TRADE BTC-USD decision=BUY result=?
PILOT_DONE trades=1 decisions=1
브로커가 400으로 거절했는데 일일 요약은 trades: 1, 상태는 "traded" 입니다
(run_daily_pilot.py:141이 execute_signal 의 반환값을 안 보고 성공으로 적습니다).
launchd 로 매일 돌려 놓고 grep TRADE 로 확인하는 사람은 나가지 않은 주문을 나간 걸로
셉니다.
4.5 대시보드는 「연결 안 됨」인데 같은 키로 주문이 나갑니다
/api/alpaca/account 는 null 을 돌려주는데 /api/alpaca/positions 는 실제 포지션을 제대로 읽습니다. 원인은 한 줄 — alpaca_executor.py:86 의 int(account.daytrade_count) 가 알파카에서 온 None 을 받습니다. 그 결과 대시보드에는 「NOT CONNECTED — Set ALPACA_API_KEY … in .env」가 뜹니다. **키는 이미 들어 있고, 같은 프로세스가 주문도 냅니다**
4.6 돌리지 않은 시나리오
- S1·S2(자료 받기): 자료는 yfinance 하나라 본론이 아닙니다
- S3(내 기록 복기): §4.2 가 이 도구의 결정 로그로 대신했습니다
- S8(끊고 다시 붙이기): 상주 루프가 없어 해당 없음 — 매일 한 번 깨어나는 스크립트입니다
- S9·S10: 이번 편에서 안 했습니다
5. weltiq 와 연결하기
5-1. 옮긴 것과 우리가 채운 것
도구가 낸 것은 이만큼입니다(BTC-USD, 자율 경로 실측).
| 도구가 낸 것 | 값 |
|---|---|
| 방향 | BUY |
| 확신도 | 50.8% (LLM 원값 62) |
risk_level |
MEDIUM |
| 확률 | up 0.55 / neutral 0.25 / down 0.20 |
| 근거 | "BTC is trading well above both MA20 and MA50 with strong ADX trend strength and positive MACD momentum, though an RSI near 64 and BB% near 0.86 suggest price is approaching overbought territory, warranting moderate conviction on the upside continuation." |
| 진입가·손절·목표·수량 | 없음 — models/decision.py 에 칸 자체가 없습니다 |
빈칸이 둘입니다. 그런데 그 둘을 채우는 코드가 이 저장소 안에 있습니다 —
skills/risk_management.py. 자율 진입점만 이 모듈을 안 부릅니다. 그래서 도구 자신의
모듈에 도구 자신의 판단을 넣어 레벨과 수량을 받았습니다. 숫자는 하나도 만들지 않았습니다.
| 값 | 출처 | |
|---|---|---|
| 손절 | 기준가 −2.5% | _STOP_PCT["MEDIUM"] |
| 목표 | 기준가 +5.0% | _TARGET_PCT["MEDIUM"] |
| 수량 | 0.02 BTC | 위험 $100 ÷ 손절거리, 계좌 20% 상한에 걸려 잘림 |
여기서 하나 더 드러납니다. 레벨과 크기를 정하는 것은 risk_level(MEDIUM)이고
확신도는 이 계산에 한 번도 안 들어갑니다. 50.8%든 82%든 같은 크기가 나옵니다.
가격 기준만 우리 것을 썼습니다. 도구는 yfinance BTC-USD(84138.4609375)로 값을 매기고
우리는 binance-spot BTCUSDT(84120.005)에서 체결합니다. 절대가를 그대로 옮기면 두 시장의
차이가 같이 넘어오므로 도구의 비율을 우리 호가에 적용했습니다 → 손절 82015.05 ·
목표 88323.91.
POST /v1/strategy-rules → doc_hash 128ed65d…
POST /v1/ai/thesis → {doc_hash, text} # 근거 없는 규칙은 안 받습니다
POST /v1/containers → {source:"ai", doc_hash, venue:"binance-spot",
symbols:["BTCUSDT"], tf:"1m", balance:"10000",
stop_max_loss:"150", stop_after_hours:2}
전체 스크립트는 [`reports/a/34-orallexa/to_weltiq.py`](/news-assets/evidence/a/34-orallexa/to_weltiq.py).
5-2. 체결됐습니다, 그리고 손절이 같이 걸렸습니다 (= S5·S6)
슬롯 상세. ORDERS 칸을 보세요 — buy market 0.02 가 filled 이고, **그 위에 sell (close) stop_market 0.02 가 acked** 로 같이 걸려 있습니다. §4.3 에서 도구가 못 붙인 바로 그것입니다. FILLS 칸의 체결가 84094.41860050, 수수료 1.68188837 USDT
슬롯을 만들고 36초 뒤 체결이 났고, 정지를 걸어 2분 뒤 청산했습니다.
| 진입 | 청산 | |
|---|---|---|
| 시각 | 10:49:00.068401 | 10:51:00.052882 |
| 수량·가격 | buy 0.02 @ 84094.41860050 | sell 0.02 @ 84056.09354950 |
| 기대가 | 84086.01 | 84064.50 |
| 미끄러짐 | +8.4086 (1.00bp, 불리) | −8.4065 (1.00bp, 불리) |
| 수수료 | 1.68188837 USDT | 1.68112187 USDT |
실현손익 −0.7665, 수수료 합계 3.36301024, 잔고 10,000 → 9995.87048874
(−0.0413%). 원장 대사는 matched: true, 고아 인텐트 0.
한 판의 손익은 아무 의미가 없습니다. 여기서 볼 것은 숫자가 아니라 칸이 채워졌다는 사실입니다.
5-3. 이 조합이 해 주는 것과 안 해 주는 것
| 이 도구 | weltiq | |
|---|---|---|
| 방향·근거 | 냅니다 | 안 냅니다 |
| 손절 레벨 | risk_management.py 에 있는데 자율 경로가 안 씀 |
규칙 문서에 없으면 거절 |
| 자율 경로에 브래킷 | 안 붙습니다 | 진입과 함께 stop_market 자동 |
| 크립토 주문 | 안 됩니다 (알파카 주식 전용) | 24시간 |
| 확신도가 크기를 깎나 | 아니오 | 아니오 — 옮겨진 수량 그대로입니다 |
| 실패한 주문 집계 | 성공으로 셉니다(§4.4) | 거절 사유가 원장에 남습니다 |
제일 잘 쓰는 법은 이겁니다. 도구를 --dry-run 으로만 돌려 판단 생산기로 쓰고,
레벨·크기·손절 감시·크립토 매핑을 슬롯에 맡깁니다. 알파카 경로는 §4.3·§4.4 를 고치기
전에는 켜 둘 이유가 없습니다.
이 조합이 해 주지 않는 것: 확신도를 크기에 반영하지 않습니다 — 양쪽 다 안 합니다. 그리고 판단을 더 잘 맞히게 해 주지도 않습니다.
실행 구간을 꿰는 실은 이번에도 그대로였습니다. 규칙 문서의 doc_hash 가 백테스트·
페이퍼를 같은 몸으로 지나갑니다. 실전 구간은 아직 열려 있지 않습니다 — 「같은 문서가
그대로 간다」까지가 사실이고 그 뒤는 예정이며, 승격 사다리가 관문입니다.
정리 기록: 슬롯은 정지했고 포지션은 청산해 비었습니다(
status: stopped,positions: null). 삭제는 안 됐습니다 — 포지션이 비었는데도DELETE가 409positions_open을 돌려줍니다. 우리 쪽 알려진 결함이라 억지로 지우지 않고 그대로 남깁니다. 도구 쪽 알파카 주문은 취소했고 계좌에 이 글이 만든 포지션은 없습니다.
6. 써 보니
좋았던 것
- 계측 설비가 후보군에서 제일 두껍습니다. Brier·신뢰도 다이어그램·ECE·Platt 보정· 편향 추적이 전부 코드로 있고, 인용한 논문까지 적혀 있습니다. 이 편이 이걸 깐 것은 없어서가 아니라 있어서 입니다 — 대부분의 도구는 깔 것 자체가 없습니다
- 감사 보고서가 자기에게 불리한 말을 합니다. ECE 0.20 이상을 "system is telling you it doesn't know what it's doing" 이라고 자기 코드에 적어 놨습니다
- 판단에 근거 한 문장이 반드시 붙습니다. §5 에 옮긴 문장이 그것입니다
- UI 가 좋습니다. 상승 확률 막대·직전 판단과의 변화 알림·백테스트 표가 한 화면에 있습니다
- MIT 이고, 알파카 페이퍼가 하드코딩돼 있어 실계좌 URL 이 코드에 없습니다
아쉬웠던 것
- 확신도가 사실상 세 값입니다. 16종목 폭 8.2포인트. 그리고 화면값은 원값 × 0.82 라 80%가 구조적으로 안 나옵니다
- 보정 장치가 주식 경로에 안 붙어 있습니다. Platt 은 「했다면」 보고서 한 문단이고,
Brier 감사는
confidence가 아니라probabilities.up을 봅니다 - 감사 경로가 저자 맥의 바탕화면으로 하드코딩돼 있어 남의 기계에서는 0행을 읽고, 대신 남의 바탕화면에 폴더를 만듭니다
- 자율 경로가 손절을 안 넘깁니다(§4.3). 그리고 실패한 주문을 성공으로 집계합니다(§4.4)
- README 의 간판 기능들이 오늘 새로 깔면 안 돕니다 — 버전 안 박은 의존성 하나 때문에 LLM 호출 33곳 중 22곳이 죽습니다(§2.2)
- 진입점이 넷이고 결과가 다릅니다. 같은 MSFT 가 CLI 에서 50.8%, UI 에서 48% 였습니다
- 2.5개월째 푸시가 없습니다
이런 사람에게 맞다 / 안 맞다
맞다 — 확신도·보정 같은 계측 장치를 어떻게 코드로 짜는지 보고 싶은 사람.
platt_calibration.py 와 brier_audit.py 는 붙어 있지 않을 뿐 잘 쓰인 코드입니다.
그리고 판단만 받아 자기 실행 층에 붙일 사람.
안 맞다 — README 의 8소스·토론·멀티에이전트를 쓰려는 사람(§2.2). 손절을 도구에 맡기려는 사람(§4.3). 크립토를 거래하려는 사람(주문 경로가 없습니다).
7. 다음 편 예고
다음은 achaljhawar/1rok 입니다. 이 편이 「같은 화면에 확신도가 둘 있고
25포인트 다르다」는 이야기였다면, 다음 편은 「같은 도구 표면이라는 말이 반만 사실인」
물건입니다 — 프롬프트가 모델의 구조화 출력 능력에 따라 세 갈래로 갈립니다. 이번 편에서
진입점 넷이 같은 종목에 다른 답을 내는 것을 봤으니, 그 다음 질문으로 이어집니다.