Agentic Trading Lab
에이전트와 대화하고, 거래 아이디어를 테스트하며, 코드 없이 실제 시장 데이터에 AI 트레이딩 에이전트를 적용
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
It is remarkable how much long-term advantage people like us have gotten by trying to be consistently not stupid, instead of trying to be very intelligent.
A paper trading desk for high-probability Kalshi contracts. It starts with $1,000 of simulated cash, reads the public book, and buys only when a favorite still makes sense after the Kalshi fee and the settled record. The aim is to avoid the stupid trade, not to invent a clever one.README 전문 보기 ↗It is remarkable how much long-term advantage people like us have gotten by trying to be consistently not stupid, instead of trying to be very intelligent.
Charlie Munger
A paper trading desk for high-probability Kalshi contracts. It starts with $1,000 of simulated cash, reads the public book, and buys only when a favorite still makes sense after the Kalshi fee and the settled record. The aim is to avoid the stupid trade, not to invent a clever one.
The desk starts in paper mode. A Kalshi key is not required for the paper book. Public market data is enough. Switch to live trading on the dashboard: confirm the warning, choose $1 to $5,000, and approve. That amount is the most the desk may use. Orders then go to Kalshi with CST_KALSHI_API_KEY_ID and the PEM file at CST_KALSHI_PRIVATE_KEY_PATH.
A contract priced at 90¢ is not a gift. If that price is the true chance, buying it loses the fee. The desk treats cash as the default and buys only when all of this is true:
New buys pause if equity falls 5% from its peak, or if you pause them. If a held favorite's bid drops 8¢ under the price we paid, and the bid still has size, the desk sells. That can book a small loss. It is there so a broken quote does not turn into a total loss of the premium. A stop is not a promise that the account never goes down.
After each scan the desk writes a retrospective. The governor may only tighten a knob, one step, inside the rail. It cannot turn the fee rule off, and it cannot lower the 90% floor. With CST_OPENAI_API_KEY set, one Decisions call may drop a proposed clip, and a chat note may suggest drops. Neither can add a buy. A missing key or a bad response leaves the deterministic set.
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest
cst serve
Open http://127.0.0.1:8000.
For continuous operation on this Mac, run .venv/bin/python tools/paper_service.py install. The macOS service starts at login, restarts after a crash, and prevents idle sleep while running. It reads .env from this checkout. Keep the Mac powered, awake, and connected; closing a laptop lid or shutting it down can interrupt the run. Use status, restart, or stop in place of install to manage the service. A restart loads code changes without resetting the account.
The runner scans every ten minutes and marks open positions every minute. Its log is data/logs/runner.log; the account and research record live in data/book.sqlite. Scans retain a source-code fingerprint, observation and evaluation times, the book before execution, settings, calibration, counts, refusals, equity, and favorite quotes. Trade records contain fills, fees, exits, and settlements. Retrospectives retain model concerns, proposed and applied changes, and model failures. These records are local and ignored by Git.
Run .venv/bin/python tools/paper_report.py for a read-only JSON retrospective with recent scans, reviews, trades, changes, and cash/fee/P&L reconciliation. Fills and settlements update the account in one database transaction; an interrupted write rolls back the whole operation.
cst cycle runs one scan in the terminal. cst simulate prints the separate model described below. cst reset returns the paper book to the starting cash and starts the paper window over. cst bench times the admission rule on a fixed fixture and, if a key is set, one Decisions call. It does not write the book.
Copy .env.example to .env to change the starting bankroll, the 90% bar, or the one-second quote-evaluation cadence. After the first run, learned knobs live in data/book.sqlite and survive a restart. The environment values are the seed, and the reset command restores them.
The status line stays Paper until you approve live trading. The strip under the thesis is the paper window: day count, net P&L after fees, resolved trades, hit rate, drawdown, and cash still in open clips. The simulation record shows archived observations and historical sample sizes separately from this account's results. A fill is an open position, not a confirmed win.
Open Activity & analysis for scan counts, reviews, and historical evidence. Settings contains controls and risk parameters. The scan splits its page budget across the next 24 hours, days 1–7, and days 7–21 within the configured limits. The earliest window receives twice the weight: four of the default eight pages. Each active contract still has to pass the entry rules. Coverage is partial.
You can pause new buys, block a contract, close a paper clip when the book has size, and tighten a risk knob by one step. You cannot force a buy the fee rule or the settled record refused. Those changes are listed under "What changed by hand." Mutating requests send the token from the page's own state.
"Closest look" is the buy, or the favorite that came nearest and was still refused, with the cents written out.
The equity line is the paper account, marked at the bid after an exit fee. A new clip usually shows a small dip equal to the spread and the fee. That dip is real friction, not a bug.
The table at the bottom is a model with a known true chance. It is not the live book.
The scan reads each favorite's series fee multiplier and applies 0.07 × multiplier × contracts × price × (1 − price). Unknown fee schedules are skipped. Paper buys cross the spread; fills and exit marks round the fee up to the next cent as a conservative approximation. The recorded entry fee schedule is retained for exit marks. Kalshi's account-specific precision and per-order rounding rebates are not simulated. See the series metadata and fee-rounding rules.
When you are ready to talk about real orders, the names in .env.example are the ones to fill:
CST_OPENAI_API_KEY. Optional. It lets the Decisions call drop a duplicate clip and lets the chat note read the tape. The desk still runs without it. The Decisions model is gpt-6-luna. The chat model is CST_OPENAI_MODEL.CST_KALSHI_API_KEY_ID and CST_KALSHI_PRIVATE_KEY_PATH. Paper mode ignores them. Live mode signs orders with them after you approve an amount on the dashboard.src/cst/fees.py — venue fee mathsrc/cst/venues/ — public Kalshi readssrc/cst/text.py — strict match for "same price", looser match for "same risk"src/cst/strategy.py — the admission rulesrc/cst/depth.py — fresh displayed size, read onlysrc/cst/decisions.py — one drop-only Decisions call per scansrc/cst/review.py — the governor, and the optional chat notesrc/cst/broker.py — paper fills, stops, settlementsrc/cst/store.py — the book, the audit, the operator overridessrc/cst/simulate.py — the separate modelsrc/cst/engine.py — the scan loopsrc/cst/dashboard/ — the page served at /docs/ARCHITECTURE.md — where to lookdocs/GAPS.md — choices still openAGENTS.md — how to work in this repoThe scan filters by closing time and excludes multivariate combos and inactive contracts. It reads a bounded number of pages. Activity & analysis shows the counts.
The fee formula and the public endpoints follow Kalshi's market-data quick start. The shape of the desk — a venue adapter, a paper broker, and a risk gate in front of any order — is the usual structure of paper-first prediction-market bots. The code here is original.
A favorite can settle at zero. Sizing and the pause line keep that from being the whole account. They do not repeal it.