
Trader – Tác nhân LLM cho Robinhood với lớp an toàn Rust và giao dịch thử nghiệm
URL bài viết: https://github.com/zhangxd6/Trader/ URL bình luận: https://news.ycombinator.com/item?id=48383892 Điểm: 3 Bình luận: 1
Trader — Tác nhân giao dịch Robinhood dựa trên LLM
Một tác nhân Rust kết nối một LLM với API giao dịch tác nhân chính thức của Robinhood, thực thi các giới hạn rủi ro nghiêm ngặt trong một lớp an toàn được định kiểu và giao dịch thử nghiệm dựa trên dữ liệu thị trường trực tiếp trước khi bạn mạo hiểm một đô la.
Chức năng
trader là một vòng lặp tác nhân thực hiện các công việc sau:
Xây dựng một lời nhắc từ tệp YAML chiến lược của bạn — các ngưỡng cứng (cắt lỗ, giới hạn vị thế, bộ lọc mua) và các quy tắc phán đoán dạng văn bản tự do.
Chuyển lời nhắc đó cho một LLM (OpenAI, Anthropic, Groq, Ollama hoặc bất kỳ điểm cuối tương thích nào).
LLM gọi các công cụ MCP của Robinhood để đọc danh mục đầu tư của bạn, lấy báo giá và đặt lệnh.
Mọi lệnh đều được chặn bởi một SafetyValidator Rust được định kiểu, thực thi các giới hạn rủi ro của bạn — từ chối bất kỳ lệnh nào vi phạm chúng bất kể mô hình đã quyết định gì.
Mọi thứ đều được kiểm toán — lời nhắc hệ thống, tin nhắn người dùng, mọi lệnh gọi công cụ và kết quả, lý luận trung gian của LLM và phản hồi cuối cùng — vào một tệp JSONL.
Tác nhân không triển khai lại API Robinhood. Nó là một cầu nối MCP: LLM điều khiển các công cụ; chúng tôi đứng giữa và thực thi an toàn.
Kiến trúc
đánh dấu bộ lập lịch
│
▼
TradingAgent ── xây dựng lời nhắc hệ thống + tin nhắn người dùng từ YAML chiến lược
│
▼
LlmProvider.run_agent_loop() ← OpenAI / Anthropic / Groq / Ollama
│ LLM gọi các công cụ trong một vòng lặp cho đến khi đạt được câu trả lời cuối cùng
▼
SafetyValidator (Rust, thực thi nghiêm ngặt)
│ ├─ đọc công cụ → chuyển tiếp nguyên trạng; kết quả được quan sát
│ └─ công cụ đặt lệnh → kiểm tra tất cả các giới hạn rủi ro, sau đó chuyển tiếp hoặc chặn
▼
SimulationExecutor (chế độ thử nghiệm) hoặc Robinhood MCP (trực tiếp)
│ chặn các lệnh; áp dụng chúng vào │
│ một danh mục đầu tư ảo trên đĩa │
▼ ▼
AuditLogger → logs/audit.jsonl (một dòng JSON mỗi chu kỳ, toàn bộ cuộc trò chuyện)
Chuỗi thực thi là một chồng đặc tính (ToolExecutor). Mỗi lớp độc lập, có thể kiểm tra và có thể kết hợp. Thêm một nhà môi giới mới, một LLM mới hoặc một quy tắc an toàn mới không ảnh hưởng đến các lớp khác.
Các tính năng chính
Tính năng
Chi tiết
Chiến lược lai
Các ngưỡng có cấu trúc được thực thi bởi Rust + các quy tắc văn bản tự do được chuyển đến LLM
Bất kỳ LLM nào
OpenAI, Anthropic, Groq, Ollama, Azure hoặc bất kỳ điểm cuối tương thích OpenAI/Anthropic nào
Giao dịch thử nghiệm
Chế độ mô phỏng sử dụng dữ liệu thị trường Robinhood trực tiếp với danh mục đầu tư ảo
Đường cong vốn chủ sở hữu
Biểu đồ ASCII + xuất CSV giá trị danh mục đầu tư của mỗi chu kỳ mô phỏng
Công cụ nghiên cứu
LLM có thể gọi get_stock_news (RSS của Yahoo Finance) và web_search (Brave/DDG)
Nhật ký kiểm toán đầy đủ
Mỗi chu kỳ → JSONL: lời nhắc hệ thống, tin nhắn người dùng, tất cả các lệnh gọi công cụ, toàn bộ cuộc trò chuyện
Bảng điều khiển TUI
Các bảng ratatui trực tiếp cho chiến lược, danh mục đầu tư, lý luận và nhật ký — tất cả đều có thể cuộn
Nhiều chiến lược
Chạy nhiều chiến lược song song, mỗi chiến lược trên khoảng thời gian lập lịch riêng
Docker
docker-compose up để chạy trong container
Bắt đầu nhanh
Điều kiện tiên quyết
Rust 1.75+
Tài khoản Robinhood Agent và mã thông báo OAuth MCP của nó
Một LLM: Ollama cục bộ (miễn phí) hoặc khóa API cho OpenAI / Anthropic / Groq
1. Sao chép và cấu hình
git clone https://github.com/zhangxd6/Trader.git
cd Trader
cp .env.example .env
# Chỉnh sửa .env — thêm ROBINHOOD_MCP_TOKEN và bất kỳ khóa API LLM nào
cp config/strategy.example.yaml config/strategy.yaml
# Chỉnh sửa config/strategy.yaml — chọn LLM và chiến lược của bạn
2. Xây dựng
cargo build --release
# Tệp nhị phân nằm tại ./target/release/trader
3. Xác minh kết nối
./target/release/trader auth # xác nhận kết nối MCP
./target/release/trader tools # liệt kê tất cả các công cụ Robinhood có sẵn
4. Giao dịch thử nghiệm trước
# Đặt lại danh mục đầu tư ảo mới trị giá 10.000 USD
./target/release/trader simulate --reset
# Chạy một chu kỳ quyết định và xem LLM sẽ thực hiện gì
./target/release/trader simulate --once
# Bảng điều khiển TUI trực tiếp với đường cong vốn chủ sở hữu
./target/release/trader simulate --tui
# Kiểm tra P&L sau vài chu kỳ
./target/release/trader simulate --status --chart
# Xuất đường cong vốn chủ sở hữu ra CSV
./target/release/trader simulate --csv equity.csv
5. Xem lại nhật ký kiểm toán
# In đẹp chu kỳ mới nhất (yêu cầu jq)
tail -1 logs/audit.jsonl | jq .
# Xem mọi lệnh gọi công cụ mà LLM đã thực hiện
tail -1 logs/audit.jsonl | jq '.tool_calls[] | {tool, intercepted}'
# Đọc toàn bộ cuộc hội thoại của LLM
tail -1 logs/audit.jsonl | jq '.conversation'
YAML chiến lược
Các chiến lược kết hợp các giới hạn cứng (được Rust thực thi) với các quy tắc văn bản tự do (được LLM hướng dẫn):
strategy:
name: "Mag7 Dip Buyer"
description: >
Mua nhóm Magnificent 7 khi giá giảm từ mức cao gần đây. Giữ để
phục hồi động lượng. Không bao giờ đuổi theo. Luôn giữ 30% tiền mặt.
watchlist: [AAPL, MSFT, NVDA, GOOGL, META, AMZN, TSLA]
industries: [Technology, AI, Cloud Computing]
structured: # ← được Rust thực thi; LLM không thể ghi đè
stop_loss_pct: 6.0
take_profit_pct: 20.0
max_positions: 4
min_confidence: 0.75
buy_filters:
max_price_vs_52w_high_pct: 85.0 # chỉ mua khi giảm ≥15% so với mức cao nhất 52 tuần
min_volume_ratio: 0.90
rules: # ← được truyền nguyên văn vào lời nhắc của LLM
- "Chỉ MUA khi có sự giảm giá rõ ràng — ít nhất 5% dưới mức cao cục bộ gần đây"
- "Không mở vị thế mới nếu SPY đang trong xu hướng giảm được xác nhận"
- "Ưu tiên NVDA và MSFT để tiếp xúc với AI; coi TSLA là rủi ro cao hơn"
interval_minutes: 30
risk:
dry_run: true # chỉ đặt false khi sẵn sàng giao dịch tiền thật
max_trade_usd: 1000.0
max_position_pct: 0.20
max_daily_trades: 4
min_cash_reserve_pct: 0.30
Xem config/strategy.example.yaml để biết tài liệu tham khảo đầy đủ bao gồm các tùy chọn đa chiến lược và nghiên cứu.
Ví dụ: Chiến lược tài khoản nhỏ 300 USD
config/small-account.yaml là một ví dụ thực tế nhằm mục tiêu tăng trưởng 10% hàng tháng từ tài khoản tiền mặt 300 USD:
Tập trung: tối đa 2 vị thế, mỗi vị thế 130 USD, mức sàn tiền mặt 54 USD
Điểm vào kỷ luật: chỉ mua khi giảm ≥5% với xác nhận khối lượng
Thoát nhanh: chốt lời ở 12%, cắt lỗ ở 5%, không bình quân giá xuống
Được LLM hướng dẫn: bối cảnh thị trường, lựa chọn tên và quy tắc thời gian bằng tiếng Anh đơn giản
./target/release/trader --config config/small-account.yaml simulate --tui
Nhà cung cấp LLM
provider value
Endpoint
Example models
openai
api.openai.com
gpt-4o, gpt-4o-mini
anthropic
api.anthropic.com
claude-opus-4-7, claude-sonnet-4-6
openai-compatible
any (set base_url)
Groq llama-3.3-70b, Ollama qwen2.5:7b, Azure
anthropic-compa
Nguồn tin: Hacker News LLM — Tác giả: zhangxd6. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.