계정 없이 어디까지 — MAHORAGA 와 DayTradingAgent

두 트레이딩 에이전트를 계정 없이 끝까지 밀어붙여, 무료로 되는 구간과 지갑을 꺼내야 하는 지점을 정확히 그렸습니다.

29편. 계정 없이 어디까지 — MAHORAGA 와 DayTradingAgent

이 글의 완료 조건: 독자는 이 두 도구를 깔기 전에 어떤 계정이 필요한지, 무료로 어디까지 되는지 알고 나면 성공입니다.

하는 일 MAHORAGA: 소셜 여론(StockTwits·레딧)과 공시를 읽어 사고팔 종목을 고르고 Alpaca 로 주문합니다. DayTradingAgent: 미국·홍콩 주식을 장중에 지켜보며 진입가·손절가·수량을 계산해 신호를 냅니다(주문은 사람이 냅니다)
맞는 사람 둘 중 하나를 깔까 말까 고민하다가 "계정부터 만들라"는 안내문 앞에서 멈춘 사람
안 맞는 사람 지금 당장 돌아가는 완제품이 필요한 사람. 이 글은 벽의 지도이지 완주기가 아닙니다
이 글의 결과물 계정 없이 확인할 수 있는 것 목록과, 각 도구에서 지갑을 꺼내야 하는 정확한 한 줄
준비물·비용 코드 0원(둘 다 MIT) · 모델 유료(실측 71회 호출 $0.197) · 시세: MAHORAGA 는 Alpaca 무료, DayTradingAgent 는 미국 주식이면 무료 프로모션 · weltiq 는 별도
시간·난도 MAHORAGA 로컬 실행 25분 · DayTradingAgent 복기 재현 15분 · 난도 중 (Node 와 파이썬 가상환경을 만들 수 있으면 됩니다)
검증에 쓴 판 Node 26.8.1 · Python 3.14.7 · wrangler 4.61.1
weltiq 와의 관계 안 붙였습니다. 두 도구 모두 판단을 실행까지 밀려면 계정이 필요해서, weltiq 로 옮기는 것은 소스를 읽어 대응만 확인했습니다 (5절)
검증 환경·날짜 2026-09-22 (KST) · macOS · ygwyg/MAHORAGA 2026-02-16 판 · xhqing/DayTradingAgent 2026-09-19 판
제휴 고지 필자는 weltiq 의 제휴 기고자입니다. 이 글의 도구 둘은 weltiq 와 무관한 제3자 오픈소스이며, 아래 수치는 모두 필자가 직접 돌려 얻은 것입니다.

1. 이게 뭔가요

오픈소스 트레이딩 도구를 고를 때 별 개수보다 먼저 봐야 할 것이 있습니다. 켜 보기까지 계정을 몇 개 만들어야 하는가입니다. 이 연재에서 지금까지 다룬 도구들은 대체로 "LLM 키 하나 + 시세 무료"였습니다. 이번 둘은 다릅니다.

MAHORAGA DayTradingAgent (Victor)
저장소 github.com/ygwyg/MAHORAGA · MIT · 별 868 github.com/xhqing/DayTradingAgent · MIT · 별 2
최근 커밋 2026-02-16 (7개월째 멈춤) 2026-09-19
언어 TypeScript (Cloudflare Workers) 파이썬 + 규범 문서
시장 미국 주식 + BTC·ETH·SOL (전부 현물) 미국·홍콩 주식·ETF (파생 금지)
안내문이 요구하는 계정 LLM · Alpaca · Cloudflare 에이전트 하네스 · Tiger 증권 · Futu OpenD 시세

MAHORAGA 는 Cloudflare 위에서 24시간 도는 자율 에이전트입니다. 레딧 네 곳과 StockTwits 를 긁어 종목별 여론 점수를 만들고, 공시(신규 8-K 공시 흐름)를 섞고, 그 후보를 모델에게 넘겨 BUY / SELL / HOLD 와 확신도를 받습니다. 흥미로운 것은 여론을 그대로 믿지 않는다는 점입니다. 글마다 세 가지 배수를 곱합니다 — 반감기 120분짜리 시간 감쇠, 업보트·댓글 구간별 참여도, 그리고 글머리표 배수(DD 1.5배, Meme 0.4배, Shitpost 0.3배). 출처 신뢰도도 따로 두는데 8-K 공시 0.95, StockTwits 0.85, r/wallstreetbets 는 0.6 입니다. 이 도구는 자기가 읽는 곳 중 가장 시끄러운 데를 가장 덜 믿겠다고 코드에 적어 놓았습니다.

DayTradingAgent 는 성격이 아예 다릅니다. README 첫 문단이 "설치할 애플리케이션이 없다. 저장소가 곧 에이전트다"라고 선언합니다. 실체는 규범 문서 약 1,975줄과 스크립트 45개입니다. 에이전트 하네스가 그 문서를 읽고 규율로 삼습니다. 기본은 신호 모드 — 도구는 진입가·손절가·수량을 계산해서 표로 띄우고 소리를 내고, 주문은 사람이 자기 증권 앱에서 냅니다. 개창 전에 여섯 칸(표적·방향·참고가·가격 범위·수량·손절가)을 반드시 확정하게 되어 있고, 승률 50% 초과 그리고 손익비 1.2 이상을 못 넘기면 신호 자체를 내지 않습니다.


2. 설치 — 검증된 한 경로

MAHORAGA (Cloudflare 계정 없이)

안내문은 "Cloudflare 계정을 만들고, D1 을 만들고, KV 를 만들고, 비밀값을 넣고, 배포하라"고 합니다. 그 절반은 건너뛸 수 있습니다. 개발 모드는 데이터베이스·캐시·저장소를 전부 내 컴퓨터에서 흉내 내기 때문입니다.

git clone https://github.com/ygwyg/MAHORAGA && cd MAHORAGA
npm install

# 설정 파일의 자리표시자를 아무 값으로 채웁니다 (로컬에서는 검사하지 않습니다)
sed -e 's/<YOUR_D1_DATABASE_ID>/00000000-0000-0000-0000-000000000000/' \
    -e 's/<YOUR_KV_NAMESPACE_ID>/0123456789abcdef0123456789abcdef/' \
    wrangler.example.jsonc > wrangler.jsonc

cp .env.example .dev.vars     # Alpaca 페이퍼 키·LLM 키·직접 정한 토큰을 채웁니다
npx wrangler d1 migrations apply mahoraga-db --local
npx wrangler dev

마지막 줄이 Ready on http://127.0.0.1:8787 을 찍으면 끝입니다. 로그인 창은 한 번도 뜨지 않습니다.

계정 없이 여기까지 — 로컬 기동과 벽의 위치

계정 없이 되는 구간(초록)과 안 되는 구간(빨강)이 한 화면에 있습니다. Ready on http://127.0.0.1:8787 까지가 무료 구간이고, D1·KV·R2·Durable Object 가 전부 local 로 잡힌 것을 보십시오 — 이게 계정이 필요 없는 이유입니다. 맨 아래 Not logged in. 두 줄이 벽입니다.

DayTradingAgent

git clone https://github.com/xhqing/DayTradingAgent && cd DayTradingAgent
cp .claude/skills/trade/config.example.json .claude/skills/trade/config.json
python3 -m venv .venv
.venv/bin/pip install futu-api numpy scipy matplotlib pandas

여기까지는 무료입니다. 파이썬 꾸러미는 누구나 받을 수 있습니다. 다만 preflight.py 를 돌리기 전에 알아 둘 것이 하나 있습니다 — 이 스크립트는 macOS 사용자 홈에 자동 실행 항목(LaunchAgent)을 설치하고 시스템 절전 방지를 켭니다. 문서에 미리 경고가 없습니다. 되돌리는 법은 아래 표에 적었습니다.

막히는 자리

어디서 무엇이 뜨나 무엇이 필요한가
MAHORAGA wrangler deploy Not logged in. Cloudflare 계정 (무료 등급으로 충분 — 5절 아래 비용표)
MAHORAGA 설정 파일의 데이터베이스 식별자 배포 시 자리표시자 그대로면 실패 wrangler d1 create · kv namespace create (로그인 필요)
MAHORAGA 판단 단계 로그에 skipped_no_llm LLM 키
DayTradingAgent hot_list.py ECONNREFUSED 가 6초마다 반복, 스스로 멈추지 않음 Futu/moomoo 계정으로 로그인한 OpenD 게이트웨이
DayTradingAgent 자동 주문 4종 계좌 정보 파일이 없어 실행 불가 Tiger 증권 자격 (신호 모드만 쓸 거면 불필요)
preflight.py 가 남긴 자동 실행 항목 — launchctl unload ~/Library/LaunchAgents/com.daytrading.monitor-watcher.plist 후 삭제, keepawake_off.sh 실행

3. 첫 결과 — 이렇게 나오면 성공

MAHORAGA: 계정 없이 여기까지 왔다면 시험 200개가 전부 통과하고, 대시보드가 내 페이퍼 계좌를 실시간으로 보여 줍니다.

$ npx vitest run
 Test Files  9 passed (9)
      Tests  200 passed (200)

그런데 대시보드는 위 명령으로 안 뜹니다. wrangler dev 가 띄우는 것은 API 워커이고, 화면은 저장소 안의 별도 앱입니다. 터미널을 하나 더 열어서 이렇게 띄웁니다.

cd MAHORAGA/dashboard
npm install
npm run dev          # 포트를 바꾸려면 npm run dev -- --port 9321
어느 주소로 http://localhost:3000 (대시보드 기본값). 워커는 8787 이고 대시보드가 /api 를 거기로 넘깁니다. 워커 포트를 바꿨다면 WRANGLER_PORT=9320 npm run dev 또는 MAHORAGA_API_URL=http://localhost:9320 npm run dev 로 알려 줘야 합니다
로그인이 필요한가 Cloudflare 계정은 필요 없습니다. 대신 .dev.vars 에 직접 정한 MAHORAGA_API_TOKEN 을 화면 안의 설정 칸에 한 번 넣어야 합니다(브라우저에만 저장됩니다). 그 토큰 없이 보이는 것은 아무것도 없습니다
처음 열면 워커를 먼저 안 띄웠거나 토큰을 안 넣었으면 아래 화면 하나뿐입니다

대시보드를 처음 열었을 때

워커 없이 대시보드만 띄우면 이게 전부입니다. 빨간 OFFLINE 아래에 무엇을 해야 하는지가 적혀 있습니다 — 워커를 띄우고 /agent/enable 을 한 번 때리라는 것입니다. 여기서 막혔다고 계정을 만들지 마십시오. 계정 문제가 아니라 순서 문제입니다.

워커를 띄우고 토큰을 넣으면 이렇게 채워집니다.

대시보드에 실데이터가 들어온 화면

Cloudflare 계정 없이 내 컴퓨터에서만 띄운 화면인데 숫자는 전부 실데이터입니다. 왼쪽 위가 실제 Alpaca 페이퍼 계좌, 아래가 이번에 수집된 신호 29건(StockTwits 15 · 8-K 공시 13 · 크립토 1), 오른쪽 아래가 모델이 각 종목에 대해 쓴 판단과 근거입니다. 맨 아래 줄의 CRYPTO 24/7 · SYMBOLS BTC · PAPER MODE 를 보십시오.

DayTradingAgent: 시세가 없으니 판단은 못 봅니다. 대신 저장소가 저자의 실제 매매 기록을 같이 들고 옵니다 — 2026-07-07 부터 09-14 까지 거래일 31일, 신호 파일 43개. 그래서 복기·통계 쪽은 통째로 돌아갑니다.

이쪽은 대시보드가 없습니다. 웹 UI 도 TUI 도 없고 띄울 주소가 없습니다 — 스크립트를 부르면 터미널에 표가 찍히고, 통계 스크립트는 PNG 파일을 폴더에 떨어뜨립니다. 그게 전부입니다.

$ .venv/bin/python .claude/skills/trade/scripts/review.py reviews/2026-07-21-trades-hk.csv
交易复盘 · N=12 笔已平仓
  N=12   승률 p=0.750   패율 q=0.250
  승배율 R_W=1.542   패배율 R_L=-0.655
  EV=+0.9927 (EV%=+99.27)
  베이즈 P(EV>0) = 97.5% (σ 불확실 82.8%~99.7%)
  판독: 폭 17pp(>5pp) → 소표본, 방향만 취하고 전략 변경 근거로 쓰지 말 것
  표본량 계획: 승률 ±5% → 384건 / EV 확인(80% 확신) → 1,705건

(위 블록은 읽기 쉽게 옮긴 것이고, 실제 출력은 중국어입니다.)

DayTradingAgent 가 일하는 화면 — review.py 원문 출력

이 도구가 계정 없이 일하는 화면입니다. 출력이 중국어라는 것부터 보십시오 — 이 도구를 쓸 생각이면 감안해야 합니다. 초록 칸이 승률·배율·EV, 파란 칸이 베이즈 확률인데, 그 아래 判读(판독) 줄이 이 도구의 성격입니다 — 좋은 숫자가 나왔는데도 "표본이 작으니 방향만 취하고 전략을 바꾸지 말라"고 자기 결과를 깎습니다.

수수료는 어림값이 아니라 실제 요율표를 탑니다. 손익비의 분모는 손절가에 정확히 체결됐을 때 정확히 −1.000 이 되도록 양쪽 수수료까지 넣은 값입니다.

계정 없이 재현한 축차 베이즈 곡선

bayes_evolution.py 가 같은 CSV 로 그려 주는 그림 여섯 장 중 하나입니다. 거래가 20건 쌓이는 동안 "기대값이 0보다 클 확률"이 8.8%에서 96.4%로 올라갑니다. 선보다 파란 띠를 보십시오 — 표본이 적어서 생기는 불확실 구간이고, 이 도구가 "아직 믿지 말라"고 말하는 방식입니다.


4. 제일 잘 쓰는 법

MAHORAGA — 배포하지 말고 로컬에서 판단만 받아 보세요. 이 도구의 가치는 24시간 무인 운영이라고 광고되지만, 처음 쓰는 사람에게 값진 것은 여론 점수가 어떻게 만들어지는지 보는 것입니다. 켜 둔 채 이렇게 한 번씩 찔러 보면 됩니다.

curl -H "Authorization: Bearer $TOKEN" localhost:8787/agent/trigger
curl -H "Authorization: Bearer $TOKEN" localhost:8787/agent/status

status 응답의 signalResearch 칸에 종목별 근거가 문장으로 들어 있습니다. 실제로 받은 것 하나를 옮기면 이렇습니다.

"제시된 $23.49 가격에서는 매력적인 진입 근거가 충분하지 않다. StockTwits 강세 51%는 거의 중립이지 강한 매수 신호가 아니다. 현재 재무·밸류에이션·최근 가격과 거래량 이력이 없으면 펀더멘털 지지도, 이미 급등했는지도 확인할 수 없다. 이 확신도는 기다리자는 판단에 대한 것이지 가격 하락 예측이 아니다." (GME 에 대해, 원문 영어)

한 번 돌릴 때 300초를 기다려야 새 판단이 납니다. 그보다 빨리 찌르면 직전 판단을 재사용하고 로그에 research_skip 만 남습니다.

같은 조건으로 비트코인을 세 번 물어본 결과는 이렇습니다 — 세 번 다 WAIT(기다려라), 확신도 0.88 · 0.90 · 0.89. 24시간 등락이 −1.19% 로 이 도구가 정한 문턱(±2%)에 못 미치는 날이었고, 답이 흔들리지 않았습니다.

여기서 한 가지 주의할 점이 나왔습니다. 모델만 바꿔 한 번 더 물었더니 결론은 같았지만(SKIP, 사지 마라) 확신도가 0.20 으로 떨어졌습니다. 이 숫자는 도구의 성질이 아니라 그때 쓴 모델의 성질입니다. 확신도를 기준으로 무언가를 자동으로 거르실 생각이라면(이 도구의 기본 문턱은 0.6 입니다) 모델을 고정해 두시는 편이 낫습니다.

다만 이 도구는 진입가도 손절가도 내지 않습니다 — 손절 5%, 익절 10% 는 설정 파일의 고정값이지 판단이 아닙니다.

DayTradingAgent — 시세 계정을 만들기 전에, 복기 스크립트부터 자기 기록에 돌려 보세요. review.py 는 CSV 한 장만 받습니다(날짜·종목·방향·진입가·청산가·주수·최대손실). 이 도구를 실제로 쓸지 말지는 자기 매매 50건을 넣어 봤을 때 나오는 숫자를 보고 정하면 됩니다. 이 스크립트가 알려 주는 가장 쓸모 있는 사실이 그것입니다 — 12건으로는 아무것도 확인되지 않고, 확신 있게 말하려면 수백 건이 필요하다는 것.


5. weltiq 로 옮기기 — 통합 실험

이번 편은 연결하지 않았습니다. 한쪽은 판단이 시세 계정에 막혀 안 나왔고, 다른 쪽은 판단은 나왔지만 옮길 때 절반이 사라집니다. 억지로 옮기는 대신 두 도구의 출력 형식과 weltiq 규칙 문서의 칸을 맞춰 본 결과만 적습니다.

칸 MAHORAGA DayTradingAgent
방향 그대로 옮겨집니다 그대로 옮겨집니다
진입가 안 냅니다 — 필자가 새로 써야 합니다 참고가 + 유효 가격 구간을 냅니다 → 그대로
손절 설정값 5% 고정 (판단이 아닙니다) 절대 가격으로 냅니다 → 그대로
목표 설정값 10% 고정 절대 가격 + 이동 신호까지
수량 금액 비중 → 가격으로 나눠야 주수가 됩니다 주수를 그대로 냅니다
거래 시간 해당 없음 04:00–16:00 미 동부 → weltiq 규칙 문서의 장중·시간창 조건에 대응됩니다

한 줄로: MAHORAGA 는 방향만 건너오고 가격 수준을 사람이 새로 써야 하므로 "판단을 옮겼다"고 부를 수 없습니다. DayTradingAgent 는 여섯 칸이 거의 그대로 대응합니다. 옮기지 못하는 칸도 분명합니다 — MAHORAGA 의 비중 지시(%)는 규칙이 아니라 배분 지시라서 규칙 문서에 들어갈 자리가 없고(도구 성질), DayTradingAgent 는 공매도를 기본 허용하는데 weltiq 의 미국 주식 쪽은 공매도를 받지 않습니다(weltiq 제한).

실행은 계정을 확보한 뒤로 남깁니다.


6. 써 보니

좋았던 것

아쉬웠던 것

비용 (가입하지 않고 공개 요금 페이지로만 확인)

계정 무료인가
Cloudflare Workers 무료 등급 있음(요청 10만/일). 유료는 최소 $5/월
Cloudflare 상태 저장(Durable Objects) 무료 등급으로 됩니다 — SQLite 방식만 되는데, MAHORAGA 가 그 방식입니다
Cloudflare 파일 저장(R2) 무료 한도는 있으나 버킷을 만들려면 구독 절차를 한 번 밟아야 합니다. 다만 이 판의 MAHORAGA 는 R2 를 실제로 쓰지 않습니다 — 설정에서 그 항목을 지우면 절차 자체가 빠질 것으로 보입니다(배포로 확인하지는 못했습니다)
Alpaca 페이퍼 무료. 이메일 가입만, 승인·입금 불필요
모델 유료. 실측 71회 호출 $0.197, 호출당 평균 $0.0028
Twitter/X (선택) 유료. 안내문 기준 읽기당 $0.005~0.01
Futu/moomoo OpenD 증권 계좌 개설 없이 앱 계정으로 로그인 가능. 미국 주식 시세는 프로모션 기간 무료. 홍콩 심화 호가는 중국 본토 사용자 무료, 그 외 유료
Tiger OpenAPI API 사용은 무료. 시세 권한은 앱과 별개로 따로 구매해야 하며 가격은 구매 페이지에서만 확인 가능 — 미확인

정리하면: MAHORAGA 를 24시간 돌리는 데 드는 계정 비용의 하한은 Cloudflare 무료 등급 + 모델 토큰입니다. DayTradingAgent 는 미국 주식만 볼 생각이면 시세도 무료이고, 홍콩 심화 호가나 자동 주문을 원할 때만 돈이 듭니다. 즉 두 도구 모두 안내문이 요구하는 계정 목록보다 실제 벽은 낮습니다.


7. 다음 행동

둘 중 하나만 고른다면 이렇게 나뉩니다. 판단을 맡기고 싶으면 MAHORAGA 를 로컬에서 켜 보세요 — 배포는 나중 문제이고, 여론 점수가 어떻게 만들어지는지 보는 것만으로도 값이 있습니다. 자기 매매를 채점받고 싶으면 DayTradingAgent 의 복기 스크립트만 떼어 쓰세요 — 계정이 하나도 필요 없고, "내 표본으로는 아직 아무것도 확인되지 않는다"는 사실을 숫자로 보여 줍니다.

시세 계정을 만들 마음이 생겼다면 순서가 있습니다. Futu/moomoo 앱 계정 → OpenD 실행 → hot_list.py 가 값을 돌려주는지 확인까지가 한 묶음이고, Tiger 는 자동 주문을 원할 때만 필요합니다.

다음 편에서는 미국 장중을 같은 조건으로 도는 도구들을 나란히 놓고, 거래 시간의 정의가 다르면 비교가 어떻게 깨지는지 다룹니다. 이번 편에서 찾은 04:00 대 09:30 이 바로 그 이야기입니다.

weltiq 준비 — 3단계 1. 가입: {{CTA_URL}} 2. 마이 → 연결 관리에서 키를 발급합니다 3. claude mcp add weltiq --transport http https://weltiq.ai/mcp --header "Authorization: Bearer <키>"

페이퍼 전용입니다. 이 글의 5절 표에 있는 칸들이 실제로 어떻게 생겼는지 볼 수 있습니다.


검증 원문·명령·응답 전체는 reports/a/29-account-walls/ 에 있습니다.