GaussWorldTrader 설치부터 모의 체결까지 — 기본값이 «주문 안 냄»인 트레이딩 워크스테이션

미국 주식 11,577개를 한 번에 훑어 진입·손절·목표 세 숫자를 내놓는데, 주문은 기본적으로 안 냅니다. 그 판단을 weltiq 페이퍼로 옮겨 실제 체결까지 따라갔습니다.

54편. GaussWorldTrader — 판단은 끝까지 내고, 주문은 안 냅니다

이 글의 완료 조건: 독자는 키 하나 없이 대시보드를 띄워 보고, 그다음 미국 주식 전 종목을 훑어 「진입·손절·목표」가 붙은 후보 목록을 자기 터미널에서 뽑으면 성공입니다.

하는 일 미국 주식·크립토·옵션을 알파카 자료로 훑고, 전략 12개(그중 하나는 LLM 위원회)로 방향 + 진입가 + 손절 + 목표 + 수량을 냅니다. 상주 서비스의 기본 실행 모드는 shadow — 제안만 기록하고 주문은 제출하지 않습니다
맞는 사람 주문을 내 주는 것보다 판단의 근거와 경계가 기록으로 남는 것이 중요한 사람 · 종목을 직접 고르기 전에 시장 전체를 한 번 훑고 싶은 사람 · 알파카 계정이 이미 있는 사람
안 맞는 사람 한국 주식을 보는 사람(알파카 전용) · 자동으로 사고팔아 주길 바라는 사람 · OpenRouter 같은 중계 키만 있는 사람(§2.1 의 벽)
이 글의 결과물 미국 주식 11,577개를 훑어 나온 조건부 워치리스트 다섯 줄, 그리고 그중 한 판단이 weltiq 모의 계좌에서 실제로 체결된 기록
준비물·비용 코드 0원(MIT) · LLM 키 없이도 전부 돌아갑니다(이 글의 모든 판단은 fast 모드, LLM 호출 0회·$0) · 시세는 알파카 무료 키 · 5절의 규칙 직접 작성은 weltiq 유료 기능입니다
시간·난도 의존성 설치 4.19초(uv·캐시 있음. pip 로 처음 받으면 훨씬 깁니다) + TA-Lib 한 줄 · 첫 판단 6.8초 · 전 종목 스크리닝 56.17초 · 난도 중
weltiq 와의 관계 붙습니다. 이 도구가 비워 둔 자리가 정확히 우리 자리입니다 — 판단은 끝까지 나오는데 주문이 안 나가니까요
검증 환경·날짜 macOS · Python 3.13.12(3.14.7 에서도 동작 확인) · 커밋 14f357e · 2026-09-24
고지 필자는 weltiq 와 제휴를 맺고 기고합니다. 이 글의 모든 명령과 숫자는 위 환경에서 실제로 돌려 얻은 실측이고, 주문은 전부 모의입니다. 이 도구가 내는 BUY·손절·목표는 전부 그 도구의 출력이며 필자의 의견이 아닙니다

원문 로그와 원자료: reports/a/54-gaussworldtrader/


1. 이게 뭔가요

Magica-Chen/GaussWorldTrader 는 알파카를 바닥에 깐 파이썬 트레이딩 워크스테이션입니다. 시세를 받고, 전략을 돌리고, 백테스트하고, 세션을 감독하는 것까지 한 저장소에 들어 있습니다.

이 연재에서 다룬 도구들과 갈리는 지점이 하나 있습니다. 기본값이 「주문을 안 내는 것」입니다. 상주 서비스의 실행 모드가 shadow 로 출고되고, 그 모드에서는 판단이 기록만 되고 브로커로 나가지 않습니다. 주문을 내려면 페이퍼 계정 선택과 페이퍼 주문 실행을 각각 따로 켜야 합니다.

항목 값 확인 방법
주소 github.com/Magica-Chen/GaussWorldTrader
라이선스 MIT GitHub API
별 수 ★113 · 포크 23 (관측일 2026-09-24) GitHub API
만들어진 날 2025-08-18 GitHub API
마지막 푸시 2026-09-07 GitHub API
이 글이 돌린 커밋 14f357e61ba630d334ee9e75a3ff01edaa95ed3f git log -1
코드 크기 src/ 27,415줄 · tests/ 3,877줄 wc -l 실측
전략 12개 (주식 8 · 크립토 2 · 옵션 2) main_cli.py list-strategies
브로커 알파카 하나 (alpaca-py>=0.42.0) requirements.txt

네 개의 역할이 시간대를 나눠 맡습니다. 저장소 문서(docs/FOUR_AGENT_OPERATIONS.md)의 표현을 그대로 옮기면, PostGauss 가 끝난 장을 복기하고, CloseGauss 가 그 굳은 증거로 조건부 계획을 세우고, PreGauss 가 그 계획을 장 열기 전에 다시 검증하고, LiveGauss 가 장중에 트리거를 봅니다.

이 구조에서 눈여겨볼 것은 역할 이름이 아니라 각 단계가 자기 산출물을 불변 기록으로 남긴다는 점입니다. 계획에는 유효 시작·만료·마감 시각이 박히고(SessionPlan.valid_from / entry_expires_at / close_at), 검증 결과는 ELIGIBLE / DEFERRED / REJECTED / INVALIDATED / ENTRY_EXPIRED / REVIEW_REQUIRED 여섯 중 하나로 남습니다. 판단이 흐르는 게 아니라 단계마다 도장을 받습니다.


2. 설치하기

파이썬 3.12 이상이면 됩니다. 필자는 3.13.12 로 돌렸고, 3.14.7 에서도 CLI 가 그대로 떴습니다.

git clone https://github.com/Magica-Chen/GaussWorldTrader.git
cd GaussWorldTrader
python -m venv .venv && source .venv/bin/activate
python -m pip install -r requirements.txt

한 가지만 미리 깔아야 합니다 — TA-Lib. 이건 파이썬 패키지가 아니라 C 라이브러리를 감싼 것이라, 밑에 깔린 C 라이브러리가 없으면 설치가 중간에 죽습니다.

brew install ta-lib        # macOS. 필자 환경은 0.6.4
# Linux 면 소스 빌드. Windows 는 WSL 을 권합니다(저장소가 POSIX 파일 락을 씁니다)

필자 실측으로 의존성 설치는 4.19초였습니다. 다만 이건 uv 로, 그것도 캐시가 이미 있는 상태에서 잰 값입니다. pip 로 처음 받으면 훨씬 오래 걸립니다 — 받을 게 많습니다 (vectorbt·streamlit·scikit-learn·plotly가 전부 들어옵니다).

설치가 됐는지 확인하는 줄은 이겁니다.

python main_cli.py list-strategies

전략 12개가 표로 나오면 설치가 끝난 것입니다. 주식 8 · 크립토 2 · 옵션 2 로 갈려 있고, multi_agent 가 LLM 위원회를 쓰는 전략입니다

테스트도 돌려 봤습니다. 237개 중 235개 통과, 1개 실패, 1개 건너뜀 — 5.95초. 실패한 것은 리서치 워커를 하위 프로세스로 띄우는 test_t23_subprocess_worker_has_no_broker_environment_and_completes 하나로, 워커가 RuntimeError 로 죽습니다. 이 테스트가 확인하려던 「하위 프로세스에 브로커 키가 새지 않는가」는 통과합니다 — 죽는 곳은 그다음, 워커가 실제로 완료되는지를 보는 자리입니다.

2.1 막힌 자리 — LLM 제공자를 갈아 끼울 수 없습니다

이 글에서 유일하게 못 뚫은 벽입니다. 먼저 밝혀 둡니다.

저장소의 .env.example 은 OPENAI_BASE_URL 을 설정 항목으로 안내합니다(17행). 그런데 코드에서 그 변수를 읽는 곳이 없습니다. 저장소 전체를 뒤져도 걸리는 것은 .env.example 그 한 줄뿐이고, 실제 제공자 클래스는 주소를 코드에 박아 둡니다.

# src/llm/providers.py:394
self.base_url = "https://api.openai.com/v1"

DeepSeek·Anthropic·Moonshot 도 똑같이 박혀 있습니다. 그래서 OpenRouter 같은 중계 서비스 키로는 LLM 모드를 못 돌립니다. 필자에게 있는 것이 그 키라, 이 글의 판단은 전부 fast 모드(LLM 없이 산술만)로 냈습니다.

export MULTI_AGENT_MODE=fast   # LLM 호출 0회

나쁜 소식만은 아닙니다. fast 모드가 있다는 것 자체가 이 도구의 설계를 말해 줍니다 — 위원회 구조는 그대로 두고 각 애널리스트의 자리에 산술 규칙을 꽂습니다. 그래서 키 없이도 판단 산출 형태는 똑같이 나옵니다. 이 글의 3·4절이 그 증거입니다.

돈 이야기. 이 글의 도구 실행 비용은 0원입니다. LLM 호출 0회(도구가 스스로 usage: {'calls': 0, ..., 'estimated_cost_usd': 0.0} 을 찍습니다), 시세는 알파카 무료 키. LLM 모드를 켜면 세션당 예산이 gauss.research 절에 있습니다 — 기본값이 session_llm_absolute_cap_usd = "5.00" 이고 네 역할에 10:60:20:10 으로 쪼개 줍니다.


3. 설치했으니 일단 한 번 돌려봅시다

3.1 키 없이 대시보드부터

이 도구의 좋은 점 하나. 키가 하나도 없어도 진짜 화면이 뜹니다.

python -m streamlit run examples/dashboard_preview.py

키 없이 뜬 오프라인 미리보기. 파란 띠의 «SHADOW MODE — decisions are observations; broker submission is disabled» 가 이 도구의 한 줄 요약입니다. 그 위 카드 넷이 실행 모드 Shadow · 환경 Paper · 기록된 계획 1 · 진입 Paused 를 보여 줍니다

여기 뜨는 기록은 전부 합성입니다. 화면이 스스로 OFFLINE PREVIEW · SYNTHETIC RECORDS · NO BROKER CONNECTED 라고 세 번 말합니다. 자료 품질 칸도 Synthetic demonstration 이고요. 지어낸 숫자를 진짜처럼 보여 주지 않는다는 점에서, 이 미리보기는 잘 만들어져 있습니다.

키를 넣고 진짜 계좌에 붙인 화면은 다른 명령입니다.

python dashboard.py     # http://localhost:3721

이쪽은 시세·분석·백테스트·워치리스트·계좌·주문·뉴스까지 여덟 절로 늘어납니다.

3.2 키를 넣고 첫 판단

.env 에 알파카 키를 넣습니다. 페이퍼 주소를 쓰세요.

cp .env.example .env
# ALPACA_API_KEY / ALPACA_SECRET_KEY / ALPACA_BASE_URL=https://paper-api.alpaca.markets

이렇게 말합니다

SPY·QQQ·애플·MS·엔비디아·테슬라를 400일치로 보고, 위원회 전략이 뭐라고 하는지 보여 줘.

그러면 이런 게 돌아옵니다 (아래는 도구의 출력 원문이고, 길어서 metadata 를 잘랐습니다)

Decisions:
ExecutionDecision(symbol='SPY', side='buy', quantity=6.441442638324476,
  order_type='limit', limit_price=767.76, action='BUY',
  reason='Fast mode weighted vote: BUY=0.55, SELL=0.00, HOLD=0.21, risk=medium',
  stop_loss=756.2436, take_profit=790.7928, metadata={…})
직접 치고 싶다면
export MULTI_AGENT_MODE=fast
python main_cli.py run-strategy --strategy multi_agent --days 400 \
    SPY QQQ AAPL MSFT NVDA TSLA

그런데 잘라 낸 metadata 쪽이 이 도구의 진짜 값입니다. 펼치면 이렇습니다.

위에서부터 판단 한 줄 · 위험 평가(비중 상한 3.25%, ATR 변동성 0.91%, 그리고 도구가 스스로 붙인 risk_flags: ['agent_disagreement']) · 위원회 셋의 개별 의견(technical 만 BUY 0.55, 나머지 둘 HOLD) · 호출 사용량(calls 0, 비용 $0.0). **판단만이 아니라 누가 왜 갈렸는지가 같이 남습니다**

초보자가 막히는 자리 다섯.

증상 원인 고침
pip install 이 ta-lib 에서 죽는다 C 라이브러리가 없다 brew install ta-lib 먼저
No data for AAPL 알파카 키가 안 읽혔다 .env 위치 확인 — 저장소 루트여야 합니다
No actionable decisions. 정상입니다. 전 종목 HOLD 면 이렇게 나옵니다 종목을 늘리거나 --days 를 늘리세요
리포트에 warmup incomplete 가 뜬다 기본 --days 60 은 SMA50 을 못 채웁니다 --days 400 처럼 넉넉히
FRED API key not provided macro_factor 전략만 씁니다 다른 전략은 그냥 돕니다

4. 본격적으로 — 실전 시나리오

4.0 먼저, 이 도구의 판단은 어떤 모양으로 나오나

시나리오에 들어가기 전에 한 번 정리하고 갑니다. 이 연재에서 도구들이 갈리는 제일 큰 지점이 판단을 어디까지 채워서 내놓느냐이기 때문입니다.

층 무엇이 나오나 어디서
① 방향만 BUY / SELL / HOLD + 지표 + 신호 강도 SignalSnapshot
② 방향 + 레벨 ① + 목표 진입가 · 손절 · 목표가 (수량 없음) ActionPlan
③ 방향 + 레벨 + 배분 ② + 수량 · 주문 종류 StrategySignal → ExecutionDecision

셋 다 냅니다. 그리고 층이 갈라져 있다는 게 중요합니다 — 수량은 마지막에 붙고, 그 앞까지는 계좌와 무관한 판단입니다. 전 종목 스크리닝 리포트(§4 시나리오 D)에서 배분이 숫자가 아니라 산식으로 나오는 이유가 이겁니다. 계좌가 아직 안 묶여서요.

Shares = floor(min(0.0025 × equity / (entry − stop), 0.10 × equity / entry, available cash / entry))

상주 세션 경로로 가면 여기에 진입 규칙·무효화 규칙·유효 시각이 더 붙습니다. 계획에 valid_from·entry_expires_at·close_at 이 박히고, 검증 결과가 ELIGIBLE / DEFERRED / REJECTED / INVALIDATED / ENTRY_EXPIRED / REVIEW_REQUIRED 여섯 중 하나로 남습니다. 판단에 유통기한이 있는 도구는 이 연재에서 드뭅니다.

시나리오 D (= S4). 미국 주식 전부를 한 번에 훑기

이게 이 도구가 제일 잘하는 일입니다. 종목을 골라 주는 게 아니라, 종목을 고르기 전에 시장 전체를 한 번 거르는 자리죠.

python gauss_bot.py --config examples/gauss.free-delayed.example.toml --once

56.17초가 걸렸습니다. 그 사이에 한 일이 이겁니다.

거른 과정이 숫자로 남습니다 — 상장 11,577 → 최근 봉 있는 것 11,555 → 유동성 통과 2,802 → 봉 60개 이상으로 실제 분석 199. 표의 가로 칸을 보세요. Trigger · Max entry · Stop · Target 네 개가 종목마다 다 채워집니다

세 줄 요약

  1. 무엇이 나왔나 — 조건부 워치리스트 5종목. 종목마다 트리거·최대 진입가·손절·목표 네 숫자가 붙습니다. 그리고 그 숫자들이 어떻게 계산됐는지도 리포트가 문장으로 적습니다: 트리거는 전일 고가 + 0.05 ATR, 손절 거리는 1.5 ATR, 목표는 그 2배.
  2. 몇 단계였나 — 명령 한 줄. 한 번 돌리면 results/gauss/research/<타임스탬프>/report.md 에 같은 내용이 파일로도 남습니다.
  3. 무엇이 안 되나 — 이벤트 달력이 반쯤 죽습니다. 실측 로그 그대로: Calendar coverage: earnings: UNAVAILABLE (ValueError); macro: UNAVAILABLE (ValueError). Finnhub·FRED 키를 안 넣어서인데, 도구가 그 사실을 조용히 넘기지 않고 「UNAVAILABLE」로 리포트 본문에 적습니다. 이 연재에서 이렇게 하는 도구는 흔하지 않습니다.

리포트 마지막 절도 그대로 옮겨 둡니다 — 이 도구가 자기 결과를 어떻게 부르는지 보여 주니까요.

These are unvalidated research scenarios, not execution approvals or backtested expectancy estimates. No orders, strategy approvals or changes to the running session database are made.

시나리오 S6. 고리 한 바퀴 — 분석에서 체결, 그리고 규칙 수정까지

5절에서 한 번에 다룹니다. 이 도구가 주문을 안 내기 때문에 고리를 닫는 자리가 곧 weltiq 자리라, 절을 나누면 같은 이야기를 두 번 쓰게 됩니다.

돌리지 않은 시나리오


5. weltiq 와 연결하기

5-1. 왜 여기가 우리 자리인가

이 도구는 판단을 끝까지 냅니다. 방향만 내고 마는 게 아니라 진입가·손절·목표·수량까지 냅니다. 그런데 상주 서비스의 기본 모드가 shadow 라 그 완성된 판단이 주문으로 나가지 않습니다.

이 도구가 남기는 것: 「SPY 를 767.76 에 6.44주 사고, 756.2436 에 손절하고, 790.7928 을 목표로 한다」

이 도구가 하지 않는 것: 그 주문을 내는 것

빈칸이 정확히 여기입니다. 그래서 절차는 셋입니다.

  1. 도구의 숫자를 규칙 문서로 옮깁니다. 진입 조건 close ≤ 767.76, 손절 756.2436, 목표 790.7928, 수량 6.441442638324476 — 전부 그 도구의 출력 그대로입니다
  2. 근거를 씁니다. weltiq 는 근거 없는 규칙을 받지 않습니다. 이 판에서는 도구가 낸 말을 그대로 옮겼습니다 — 위원회 셋 중 technical 만 BUY(0.55), 나머지 둘은 HOLD, 도구 자신이 risk_flags: ['agent_disagreement'] 를 붙였다는 것까지
  3. 중지 조건과 함께 슬롯을 만듭니다. 최대 손실 400 USD · 최대 가동 2시간. 안 적으면 거절됩니다
직접 치고 싶다면
POST /v1/strategy-rules   → doc_hash ce7bb23e…
POST /v1/ai/thesis        → {doc_hash, text}
POST /v1/containers       → {source:"ai", doc_hash, venue:"us-equity",
                             symbols:["SPY"], tf:"1m", balance:"100000",
                             stop_max_loss:"400", stop_after_hours:2}
전체 스크립트는 [`reports/a/54-gaussworldtrader/to_weltiq.py`](/news-assets/evidence/a/54-gaussworldtrader/to_weltiq.py).

5-2. 실제로 체결됐습니다 (= S5)

슬롯을 만들고 48초 뒤 체결이 났습니다.

슬롯 상세. 맨 위에 도구의 숫자가 그대로 규칙 한 줄이 돼 있습니다. ORDERS 칸을 보세요 — buy 6주가 filled, 그 위에 보호 손절 stop_market 6주가 acked 로 같이 걸립니다. FILLS 칸의 체결가 767.846773, 수수료 0

원장에 남은 체결 한 줄입니다.

체결 시각 2026-09-24T03:40:12.805719+09:00
수량 6 (도구가 낸 값은 6.441442638324476)
체결가 767.846773
예상가 (expected_px) 767.75
도구가 낸 지정가 767.76
수수료 0 USD
체결 성격 taker · order_type: market · quote_source: alpaca-iex

여기서 두 가지가 드러납니다.

첫째, 소수 주수가 잘립니다. 도구는 6.441442638324476주를 내는데 우리 원장에는 6주가 남았습니다. 0.4414주, 약 $339어치가 사라졌습니다. 도구 쪽은 알파카 계좌의 fractional_trading 설정을 읽어 소수 주수를 그대로 쓰는데, 우리 us-equity 는 주수 단위입니다. 어느 쪽이 맞는 이야기가 아니라, 옮길 때 이 칸이 깎인다는 것을 알고 있어야 한다는 이야기입니다.

둘째, 「지정가」가 지정가로 옮겨가지 않습니다. 도구가 order_type='limit', limit_price=767.76 이라고 냈는데, 우리 쪽에서는 그 숫자가 확정 봉 진입 조건(close ≤ 767.76)이 되고 실제 주문은 시장가로 나갑니다. 그래서 체결이 도구가 쓴 값보다 0.086773 위에서 났습니다. 우리 원장이 기대가 767.75 와 체결가 767.846773 을 나란히 적어 두기 때문에 미끄러진 폭이 숫자로 남습니다 — 0.096773, 1.26bp.

5-3. 고리를 닫아 봤습니다 (= S6)

위 한 줄이 고칠 거리를 줬습니다. 그래서 2판을 돌렸습니다.

1판 2판
진입 조건 close ≤ 767.76 (도구 값 그대로) close ≤ 767.66 (실측 미끄러짐 0.0968 만큼 내림)
손절 · 목표 · 수량 도구 값 그대로 — 안 건드렸습니다
중지 조건 최대 손실 400 · 2시간 최대 손실 12 · 1시간 (일부러 좁게)
doc_hash ce7bb23e… e8aa3458…
결과 48초 만에 체결 체결 0건

2판이 안 산 것이 이 절의 결과입니다. 23분 동안 1분 간격으로 99번 재는 동안 SPY 는 767.69~768.29 사이에 있었습니다. 2판의 문턱은 767.66 — 3센트 차이로 한 번도 안 닿았습니다.

같은 도구의 같은 판단인데, 사람이 고친 것은 진입 문턱 10센트 하나입니다. 그것으로 한 판은 사고 한 판은 안 샀습니다. 미끄러짐을 메우려고 문턱을 내렸더니 이번에는 진입 자체가 사라진 거죠. 이게 고리를 한 바퀴 돌려야만 보이는 것입니다 — 1판만 돌렸으면 "10센트 내리면 되겠네" 에서 끝났을 겁니다.

1판은 관측을 마치고 사람이 정지시켜 청산했습니다. 그 한 바퀴의 결산입니다.

보유 시간 17분 49초 (03:40:12 → 03:58:01)
진입 6주 @ 767.846773 · 수수료 0
청산 6주 @ 768.1081765 · 수수료 0.09493817
청산 쪽 미끄러짐 기대 768.21 → 실제 768.1081765 = −0.1018
실현 손익 +1.5684210 (수수료 전)
수수료 뺀 자산 100,001.47348283 — +0.0015%

수수료가 살 때는 0 이고 팔 때만 붙습니다. 미국 주식 수수료 구조가 그렇습니다. 그리고 미끄러짐이 양쪽에서 불리한 방향으로 났습니다 — 살 때 0.0968 비싸게, 팔 때 0.1018 싸게. 합치면 0.1986, 이번 판 손익 1.5684 의 12.7% 입니다. 이 도구가 낸 목표(790.79)와 손절(756.24) 사이는 34달러인데, 왕복 미끄러짐만 20센트입니다.

그리고 좁게 건 중지 조건은 발동하지 않았습니다. 최대 손실 12 USD 를 걸어 뒀지만 2판은 진입 자체를 안 해서 손실이 날 일이 없었습니다. 우리 쪽 최대 손실은 실현 손익 누적을 보는 값이라, 포지션이 없으면 아무리 좁게 걸어도 걸릴 것이 없습니다. S7 은 이번 판에서 못 봤습니다.

옮겨진 것과 안 옮겨진 것

도구가 낸 것 weltiq 규칙
action BUY · side buy 진입 long — 그대로
limit_price 767.76 close ≤ 767.76 — 성격이 바뀝니다. 지정가가 아니라 진입 조건이 됩니다
stop_loss 756.2436 levels.stop — 그대로. 엔진이 보호 주문으로 실제로 걸었습니다(stop_market 6주 acked)
take_profit 790.7928 levels.limit — 그대로
quantity 6.441442638324476 6 — 소수부가 잘립니다
confidence 0.7254871504666395 칸이 없습니다. 근거 문서에 문장으로만
risk_assessment.max_position_pct 0.0325 칸이 없습니다. 비중 상한을 담을 자리가 없어 수량으로만
reports — 위원회 셋의 개별 의견과 각자의 지표 칸이 없습니다. 근거 문서에 요약으로만

5-4. 그래서 이게 어디로 이어지나

도구의 판단을 사람이 규칙으로 다시 쓰면, 그 규칙 하나가 백테스트·모의를 같은 몸으로 지나갑니다. 우리 쪽 모드 분기는 어댑터(시계·시세·브로커) 경계에만 있고, 전략 문서의 doc_hash 가 구간을 꿰는 실입니다. 위 표의 ce7bb23e… 와 e8aa3458… 가 그 실이고, 1판과 2판이 갈린 지점이 그 두 해시 사이에 정확히 기록돼 있습니다.

실전 구간은 아직 열려 있지 않습니다. "같은 문서가 그대로 간다"까지가 사실이고 그 뒤는 예정입니다. 전환 자체는 커넥터 교체 수준이지만 승격 사다리가 관문입니다 — 차이는 능력이 아니라 관문이라는 뜻입니다.

(이 글의 슬롯 둘은 확인 뒤 정지했습니다. 2판은 삭제까지 됐고, 1판은 삭제가 막혔습니다 — 원장은 청산 완료인데 슬롯 화면의 실시간 스냅샷이 청산 1초 전에 얼어붙어 「SPY 6주 보유 중」으로 남았고, 삭제 검사가 그 스냅샷을 봅니다. 우리 쪽 결함이고, 이 글에 적어 둡니다. 되살려서 다시 청산하면 지워지겠지만 없는 6주를 파는 주문이 나갈 수 있어 하지 않았습니다. 슬롯은 정지·분리 상태라 아무것도 하지 않습니다.)


6. 써 보니

좋았던 것

아쉬웠던 것

이런 사람에게 맞다 / 안 맞다

맞다 — 종목을 고르기 전에 시장 전체를 한 번 거르고 싶고, 그 거른 과정이 숫자로 남기를 바라는 사람. 11,577 → 2,802 → 199 → 5 가 매번 리포트에 적힙니다.

안 맞다 — 자동으로 사고팔아 주길 바라는 사람. 이 도구는 그걸 일부러 안 합니다. 그리고 중계 LLM 키만 가진 사람.


7. 다음 편 예고

다음은 rmbell09-lang/tradesight 입니다. 이 편의 도구가 「주문을 안 내는 것」을 기본값으로 삼았다면, 다음 편은 브로커 리컨실리에이션·증거 게이트·승격 사다리를 자가호스팅으로 구현해 둔 물건입니다. 필자가 이 연재에서 "여기는 우리 자리입니다" 라고 여러 번 썼던 그 자리를, 남이 이미 지어 놨을 때 무슨 말을 해야 하는지 — 그 글이 될 것 같습니다.