Chuyển đến nội dung chính
Hướng dẫn AI

Kiểm thử tiến bộ các bộ phân loại giao dịch với Calibrain Harness

Tìm hiểu cách cài đặt Calibrain Harness, cấu hình thông tin xác thực mô hình và testnet Bybit, chạy giao diện dòng lệnh, kiểm tra dự đoán, bật giao dịch mô phỏng, đánh giá năng lực mô hình và áp dụng các cơ chế hiệu chỉnh, thực thi và kiểm soát rủi ro.

Kiểm thử tiến bộ các bộ phân loại giao dịch với Calibrain Harness

Calibrain Harness là gì?

Calibrain Harness là một hệ thống kiểm thử tiến thời gian thực mã nguồn mở dành cho các mô hình phân loại tốc độ cao. Hệ thống kết nối một mô hình được hỗ trợ với dữ liệu thị trường hợp đồng tương lai vĩnh cửu, đặt các câu hỏi có thể gán nhãn trên mỗi nến đã đóng, chuyển đổi các xác suất trả về thành giá trị kỳ vọng và tùy chọn thực hiện các giao dịch đạt điều kiện chỉ trên Bybit testnet.

Dự án kết hợp hai công cụ liên quan: một bot giao dịch và một bộ công cụ đánh giá mô hình. Mọi dự đoán đều được lưu lại và sau đó đối chiếu với kết quả thị trường, bao gồm cả những dự đoán không tạo ra giao dịch. Điều này giúp tách biệt chất lượng mô hình khỏi tác động của phí, trượt giá, khớp lệnh và các quy tắc chính sách.

Quan trọng: Calibrain Harness đang được phát triển tích cực và là phần mềm nghiên cứu, không phải lời khuyên tài chính. Máy chủ giao dịch của hệ thống được cố định để sử dụng Bybit testnet và không có tùy chọn chuyển sang mainnet. Giao diện, giá trị mặc định và bộ câu hỏi có thể thay đổi giữa các commit.

Cách hệ thống hoạt động

Thay vì yêu cầu mô hình trả lời “mua, bán hoặc giữ”, bộ công cụ đặt những câu hỏi có thể được gán nhãn một cách khách quan từ dữ liệu giá về sau. Một ví dụ là xác định ngưỡng nào sẽ được chạm trước trong một khoảng thời gian cố định: mục tiêu dương hay mức dừng lỗ âm.

  1. Dữ liệu thị trường công khai từ mainnet, tin tức, bối cảnh vĩ mô, thông tin sổ lệnh và dữ liệu phái sinh được thu thập.
  2. Bộ tạo đặc trưng tạo ra một trạng thái ngắn gọn với các đơn vị được gắn nhãn, đồng thời bổ sung tỷ lệ cơ sở lịch sử cho công cụ và vùng giá liên quan.
  3. Kairos hoặc Jev nhận trạng thái cùng bảy câu hỏi có kiểu dữ liệu và có thể gán nhãn.
  4. Phản hồi được xác thực nghiêm ngặt. Phản hồi không hợp lệ được ghi nhận là lỗi thay vì được diễn giải thành một dự đoán tiêu cực.
  5. Các xác suất của mô hình được kết hợp với tỷ lệ cơ sở lịch sử thông qua lớp hiệu chuẩn.
  6. Chính sách tính giá trị kỳ vọng theo R, áp dụng các điều kiện vào lệnh và xác định quy mô rủi ro.
  7. Nếu giao dịch tự động được bật, các lệnh đạt điều kiện sẽ được gửi đến Bybit testnet.
  8. Các yêu cầu, phản hồi, nhãn, phiên chạy và giao dịch được lưu trong SQLite để đánh giá và báo cáo.

Tín hiệu và nhãn sử dụng dữ liệu mainnet vì dữ liệu thị trường testnet có thể là dữ liệu tổng hợp hoặc khác biệt. Tuy nhiên, lệnh chỉ được đặt trên testnet và quy mô được xác định theo độ sâu sổ lệnh khả dụng trên đó.

Tính năng chính

Nhiều mô hình phân loại

Hiện tại, bộ công cụ hỗ trợ Kairos, do DMind cung cấp thông qua Minara Cloud, và Jev, do TypeSafe cung cấp. Cả hai sử dụng cùng kiểu yêu cầu System One, bộ câu hỏi, quy trình xác thực, chính sách và pipeline đánh giá.

Các quyết định, trọng số hiệu chuẩn, kết quả đánh giá và báo cáo được tách riêng theo từng mô hình. Việc chuyển đổi mô hình trực tiếp sẽ bắt đầu một phiên chạy mới và chỉ được phép khi bot không có vị thế, nhằm ngăn kết quả của các mô hình khác nhau bị trộn lẫn.

Thiết bị đầu cuối kiểu Bloomberg

Thiết bị đầu cuối Next.js nhận các cập nhật trực tiếp thông qua một WebSocket. Giao diện hiển thị biểu đồ, tín hiệu mô hình, giá trị kỳ vọng đã hiệu chuẩn và giá trị kỳ vọng thô, vị thế, thông tin tài khoản, sổ lệnh và chế độ xem độ sâu, bản đồ thị trường, tin tức, thanh lý, dữ liệu phái sinh và sổ nhật ký quyết định chứa từng yêu cầu và phản hồi của mô hình.

Hiệu chuẩn và đánh giá tích hợp

Calibrain Harness kết hợp xác suất mô hình với tỷ lệ cơ sở theo từng công cụ bằng công thức w · model + (1 − w) · base rates. Trọng số bắt đầu ở mức 0.5 và được điều chỉnh lại sau mỗi 15 phút khi một câu hỏi đã tích lũy ít nhất 100 kết quả được gán nhãn.

Đánh giá bao gồm điểm Brier và điểm xác suất xếp hạng, năng lực so với khí hậu học và tỷ lệ cơ sở được cung cấp, AUC, độ tin cậy, sai số hiệu chuẩn kỳ vọng, phân tích biến đổi tích phân xác suất, xếp hạng EV, các phép kiểm tra tính nhất quán, chất lượng khớp lệnh và kết quả giao dịch theo từng phiên chạy.

Kiểm soát thực thi trên testnet

Lệnh vào sử dụng lệnh giới hạn IOC được giới hạn tương đối so với mức giá testnet tốt nhất. Mục tiêu có thể đặt dưới dạng lệnh giới hạn chỉ giảm vị thế, trong khi các lệnh dừng được quản lý sẽ kích hoạt bằng giá có thể khớp trên mainnet và đóng vị thế thông qua các lệnh IOC chỉ giảm vị thế có giới hạn trên testnet. Hệ thống cũng bao gồm lệnh dừng theo thời gian, cơ chế dự phòng theo giá đánh dấu, giới hạn lỗ hằng ngày, giới hạn vị thế, giới hạn rủi ro danh mục và công tắc ngắt khẩn cấp.

Điều kiện tiên quyết

Trước khi cài đặt, hãy chuẩn bị:

Khóa Bybit nên có quyền Contract để đặt lệnh và quản lý vị thế. Không cấp quyền rút tiền.

Cài đặt Calibrain Harness

1. Sao chép repository

git clone https://github.com/zadescoxp/calibrain-harness.git
cd calibrain-harness

2. Tạo môi trường Python

Tạo môi trường ảo Python 3.12, cài đặt các gói phụ thuộc và sao chép cấu hình mẫu:

python3.12 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env

Thêm thông tin xác thực vào .env hoặc nhập chúng sau thông qua lệnh KEYS của thiết bị đầu cuối. Ứng dụng đọc các khóa từ tệp này; tệp được gitignore và dự kiến chỉ chủ sở hữu mới có quyền truy cập. Các khóa không được lưu trong cơ sở dữ liệu hoặc gửi đầy đủ đến trình duyệt.

3. Build giao diện thiết bị đầu cuối

cd web-next
npm ci
npm run build
cd ..

Thao tác này tạo thiết bị đầu cuối tĩnh trong web-next/out. Dịch vụ Python cung cấp giao diện, API và WebSocket, vì vậy không cần một tiến trình Node.js riêng cho môi trường production.

4. Khởi động dịch vụ

.venv/bin/python -m ctb.server

Mở http://127.0.0.1:8800. Máy chủ liên kết cục bộ với 127.0.0.1 và từ chối các yêu cầu ghi khác nguồn.

Nếu giao diện chưa được xây dựng, địa chỉ này sẽ hiển thị một trang ngắn chứa lệnh build. API và WebSocket trực tiếp vẫn khả dụng.

Cấu hình mô hình và thông tin xác thực

Chọn Kairos hoặc Jev bằng CTB_MODEL_PROVIDER trong .env:

CTB_MODEL_PROVIDER=kairos
KAIROS_API_KEY=your_kairos_key

Với Jev, sử dụng:

CTB_MODEL_PROVIDER=jev
TYPESAFE_API_KEY=your_typesafe_key
CTB_JEV_MODEL=jev-1.14.0

Mô hình Jev được tài liệu hóa và cố định ở jev-1.14.0, mặc dù CTB_JEV_MODEL có thể ghi đè giá trị này. Thông tin xác thực Kairos phải thuộc một nhóm Minara Cloud đã bật Kairos.

Thêm thông tin xác thực Bybit testnet bằng tên biến được cung cấp trong .env.example. Không bao giờ commit .env hoặc các tệp trong data/.

Trước tiên chạy ở chế độ chỉ quan sát

Bot khởi động mà không đặt lệnh. Ở chế độ này, bot tiếp tục thu thập dữ liệu thị trường, gọi mô hình đã chọn, ghi lại các quyết định và gắn nhãn cho các dự báo. Đây là điểm khởi đầu được khuyến nghị vì cho phép bạn xác minh kết nối và nghiên cứu hành vi của mô hình mà không mở các vị thế trên testnet.

  1. Khởi động dịch vụ Python.
  2. Mở terminal tại 127.0.0.1:8800.
  3. Xác nhận dữ liệu thị trường và các quyết định của mô hình xuất hiện.
  4. Kiểm tra lỗi và độ trễ trên màn hình LOG và EVAL.
  5. Chỉ bật AUTO-TRADE khi hệ thống đã hoạt động chính xác.

Sử dụng terminal

Các màn hình chính

  • MON, F1: Hiển thị danh sách theo dõi, biểu đồ, dấu mốc của mô hình, tài khoản, vị thế, bản đồ thị trường, sổ lệnh, tin tức, phái sinh, dữ liệu dòng tiền và sổ quyết định.
  • EVAL, F2: Hiển thị hiệu chỉnh, phát hiện, xếp hạng EV, điểm câu hỏi, các phép kiểm tra tính nhất quán, chỉ số vận hành, P&L và chất lượng khớp lệnh. Có thể lọc kết quả theo mô hình, lượt chạy, mã, bộ câu hỏi và khung thời gian.
  • TRADES, F3: Liệt kê từng lượt chạy và giao dịch, bao gồm giá tham chiếu, lệnh khớp, trượt giá và R chính xác.
  • NEWS, F4: Hiển thị tiêu đề và các dự báo news_return của Kairos. Dự báo lợi nhuận từ tin tức chỉ khả dụng với Kairos.
  • LOG, F5: Hiển thị các sự kiện và lỗi hệ thống.

Ví dụ dòng lệnh

Nhấn / để mở dòng lệnh terminal. Các lệnh thường dùng gồm:

  • BTC hoặc ETH để tải một mã.
  • ASK hoặc PRB để truy vấn mô hình ngay lập tức và chạy các phép kiểm tra tính nhất quán.
  • 1M đến 4H để thay đổi khung thời gian biểu đồ.
  • TF 5M để đặt khung thời gian giao dịch.
  • UNIV để chọn tập mã.
  • POS 10 để đặt số vị thế tối đa.
  • KEYS để quản lý thông tin xác thực.
  • HELP để hiển thị trợ giúp terminal.

Bạn có thể chuyển đổi giữa Kairos và Jev thông qua MODEL trên thanh phím chức năng. Bot phải không có vị thế trước khi chuyển đổi.

Bật giao dịch testnet một cách thận trọng

Sau khi quan sát các quyết định và xác thực thiết lập, hãy dùng AUTO-TRADE trên thanh lệnh để cho phép đặt lệnh testnet. Chế độ nghiêm ngặt chỉ giao dịch khi các dự đoán đã hiệu chỉnh vượt qua tất cả điều kiện được cấu hình, bao gồm giá trị kỳ vọng tối thiểu, chất lượng thiết lập, sự đồng thuận về hướng, sự đồng thuận của phân phối lợi nhuận, độ lệch của sàn, trạng thái vị thế và quyền giao dịch phía bán.

Chế độ thăm dò mặc định bị tắt. Đặt CTB_EXPLORATION=1 cho phép hệ thống giao dịch theo phía được mô hình ưu tiên với rủi ro thấp hơn khi các điều kiện nghiêm ngặt chặn giao dịch. Mục đích của chế độ này là thu thập dữ liệu thực tế về khớp lệnh, không phải hàm ý rằng chính sách nghiêm ngặt đã tìm thấy lợi thế dương.

Thanh khoản testnet có thể cực kỳ mỏng và có thể hoạt động khác với mainnet. Các thử nghiệm tiến tới ban đầu của dự án cho thấy chất lượng khớp lệnh có thể chi phối P&L trên testnet. Hãy xem kết quả testnet là dữ liệu nghiên cứu thay vì bằng chứng về khả năng sinh lời trong tương lai.

Sử dụng công tắc dừng khẩn cấp

Nút KILL trên terminal đóng các vị thế của bot, hủy lệnh và dừng hệ thống. Có thể kích hoạt cùng hành động từ thư mục dự án:

touch KILL

Các vị thế được mở thủ công trên testnet thường được hiển thị nhưng không do bot quản lý. Công tắc dừng khẩn cấp là ngoại lệ được tài liệu hóa.

Chạy kiểm thử và kiểm tra nhanh

Chạy các kiểm thử đơn vị mà không cần truy cập mạng:

.venv/bin/python -m pytest -q tests

Gửi một yêu cầu thực đến mô hình đang hoạt động và xác thực phản hồi:

.venv/bin/python scripts/kairos_smoke.py SOLUSDT

Chỉ định Jev:

.venv/bin/python scripts/kairos_smoke.py SOLUSDT --model jev

Kiểm thử quy trình khớp lệnh testnet với kích thước tối thiểu bằng cách mở một vị thế mua, xác minh mức dừng rồi đóng vị thế:

.venv/bin/python scripts/testnet_smoke.py SOLUSDT long

Các tập lệnh kiểm tra nhanh này gửi yêu cầu thực đến các dịch vụ bên ngoài, vì vậy hãy xác minh mã đã chọn và thông tin xác thực trước khi chạy.

Tìm hiểu các tùy chọn cấu hình quan trọng

Thời điểm quyết định và các mức lệnh

  • CTB_DECISION_TF mặc định là 5, nghĩa là các quyết định được đưa ra trên những nến năm phút đã đóng.
  • CTB_HORIZON_BARS mặc định là 24, tạo ra khoảng thời gian dự báo hai giờ ở khung thời gian mặc định.
  • CTB_ATR_TF mặc định là 15 để xác định kích thước lệnh dừng.
  • CTB_SL_ATR và CTB_TP_ATR mặc định lần lượt là 1.5 và 2.5 ATR.
  • CTB_MIN_SL_BP và CTB_MAX_SL_BP mặc định giới hạn khoảng cách lệnh dừng trong phạm vi 40–300 điểm cơ bản.

Cổng Chính sách Nghiêm ngặt

  • CTB_MIN_EDGE_R=0.15 đặt mức lợi thế tối thiểu đã hiệu chuẩn theo mặc định.
  • CTB_MIN_SETUP_QUALITY=1.5 kiểm soát ngưỡng chất lượng thiết lập.
  • CTB_MIN_DIRECTION_MARGIN=0.03 yêu cầu hướng đã hiệu chuẩn phù hợp với phía được đề xuất theo biên độ đã chỉ định.

Giới hạn Rủi ro

  • CTB_RISK_PER_TRADE_PCT=0.5 xác định tỷ lệ vốn dự kiến bị mất nếu lệnh dừng được kích hoạt.
  • CTB_MAX_POSITIONS, CTB_MAX_SAME_SIDE và CTB_MAX_OPEN_RISK_PCT giới hạn mức phơi nhiễm của danh mục.
  • CTB_MAX_LEVERAGE=3 và CTB_MAX_NOTIONAL_USDT=5000 mặc định cung cấp các mức giới hạn cứng.
  • CTB_DAILY_LOSS_LIMIT_PCT=3 đặt giới hạn thua lỗ hằng ngày theo mặc định.

Chi phí và Khớp lệnh

  • CTB_TAKER_FEE_BP=5.5 và CTB_SLIPPAGE_BP=2 cung cấp dữ liệu cho mô hình chi phí dùng để tính giá trị kỳ vọng và nhãn.
  • CTB_MAX_ENTRY_SLIP_BP=10 đặt giới hạn giá vào lệnh theo mặc định.
  • CTB_EXIT_MODE=managed bật quy trình thoát lệnh có quản lý được tài liệu hóa.

Thay đổi từng nhóm thiết lập một lần và bắt đầu một lần chạy mới khi so sánh các chính sách. Mỗi lần chạy lưu ảnh chụp cấu hình, giúp phân tích sau này dễ dàng hơn.

Mẹo Đánh giá Nâng cao

So sánh Mô hình với các Mốc chuẩn

Một dự đoán có vẻ sinh lời không tự động trở nên hữu ích. Hãy xem xét liệu mô hình có vượt qua dự đoán theo xu hướng chung và các tỷ lệ cơ sở lịch sử chính xác được đưa vào đầu vào hay không. Lớp hiệu chuẩn sẽ giảm ảnh hưởng của mô hình khi các kết quả đã gắn nhãn cho thấy mô hình cung cấp ít thông tin bổ sung.

Tách Kỹ năng Dự báo khỏi Kết quả Giao dịch

Dùng EVAL để kiểm tra tất cả quyết định đã gắn nhãn, không chỉ các giao dịch. Các chỉ số dự báo đo lường kỹ năng xác suất của mô hình, trong khi P&L trên testnet đo lường tác động tổng hợp của mô hình, chính sách, chi phí, quy mô rủi ro và khớp lệnh.

Tính đến các Quyết định Chồng lấn

Nhãn bắt đầu từ nến một phút đầu tiên sau mỗi quyết định, nhằm ngăn việc nhìn trước dữ liệu. Nếu một nến chạm cả mục tiêu và lệnh dừng, nhãn sẽ tính đó là lệnh dừng. Tuy nhiên, các quyết định liên tiếp có thể có khoảng thời gian dự báo chồng lấn, vì vậy số lượng mẫu thô có thể đánh giá quá cao tính độc lập về mặt thống kê. README khuyến nghị chờ vài trăm quyết định đã gắn nhãn cho mỗi mã trước khi đưa ra kết luận.

Kiểm tra Tính Nhất quán

Dùng các phép thử lặp lại để đo tính xác định và các phép thử đối xứng để xác định liệu việc đảo ngược các đặc trưng thị trường tăng và giảm có làm thay đổi câu trả lời của mô hình theo cách phù hợp hay không. Đồng thời, hãy xem xét tính nhất quán giữa vị thế mua và bán thay vì chỉ dựa vào một chỉ số riêng lẻ.

Xuất Báo cáo

Từ EVAL, dùng EXPORT MINARA REPORT để ghi một báo cáo Markdown chứa kết quả đánh giá. Hãy lọc theo mô hình, lần chạy, mã, bộ câu hỏi hoặc khung thời gian trước khi diễn giải các so sánh.

Quản lý Mã và Lần chạy

Lệnh UNIV liệt kê tối đa 100 hợp đồng vĩnh cửu USDT hàng đầu theo doanh thu, đồng thời có niêm yết trên testnet. Lệnh này bao gồm thông tin về độ sâu và chênh lệch giá, đồng thời đánh dấu các sổ lệnh thanh khoản thấp và các hợp đồng vĩnh cửu cổ phiếu hoặc hàng hóa. Bạn có thể chọn tối đa 30 mã, tùy thuộc vào ngân sách yêu cầu của mô hình. Dịch vụ sẽ tự khởi động lại để áp dụng thay đổi danh sách thị trường.

Mỗi quyết định và giao dịch được gán cho một lần chạy đang hoạt động. Để tạo một lần chạy bằng chương trình, gửi POST /api/runs/start khi không có giao dịch bot nào đang mở. Việc bắt đầu các lần chạy riêng biệt hữu ích khi thay đổi mô hình, câu hỏi, quy tắc rủi ro hoặc thiết lập khớp lệnh.

Làm việc trên Giao diện

Sau khi kéo các thay đổi hoặc chỉnh sửa frontend, hãy xây dựng lại bản xuất tĩnh:

cd web-next && npm run build

Sau đó tải lại trình duyệt; máy chủ Python không cần khởi động lại.

Để phát triển với tính năng tải lại trực tiếp, hãy giữ máy chủ Python đang chạy và khởi động Next.js riêng:

cd web-next && npm run dev

Mở http://localhost:3000. Giao diện phát triển giao tiếp với API và WebSocket tại 127.0.0.1:8800.

Kiểm tra kiểu của frontend bằng:

cd web-next && npx tsc --noEmit

Thực hành An toàn và Vận hành

  • Xác nhận máy chủ vẫn là api-testnet.bybit.com; dự án cố ý không cung cấp công tắc giao dịch mainnet.
  • Bắt đầu ở chế độ chỉ quan sát và xem xét các lỗi của mô hình trước khi bật lệnh testnet.
  • Sử dụng thông tin xác thực Bybit không có quyền rút tiền.
  • Đưa .env và thư mục data/ ra ngoài hệ thống kiểm soát phiên bản.
  • Theo dõi độ lệch so với sàn, tỷ lệ khớp, độ trễ, trượt giá và lý do thoát lệnh thay vì chỉ xem xét P&L.
  • Đảm bảo quy trình ngắt khẩn cấp luôn sẵn sàng trước khi kiểm thử khớp lệnh.
  • Chạy các bài kiểm thử Python và kiểm tra kiểu frontend trước khi gửi thay đổi.

Kết luận

Calibrain Harness cung cấp một phương pháp có cấu trúc để xác định liệu mô hình phân loại nhanh có bổ sung thông tin đo lường được cho các dự báo thị trường hợp đồng vĩnh cửu hay không. Công cụ kết hợp các câu hỏi khách quan, tỷ lệ cơ sở lịch sử, hiệu chuẩn xác suất, kiểm định nghiêm ngặt, khớp lệnh trên testnet và đánh giá chi tiết trong một terminal cục bộ.

Bắt đầu bằng cách cài đặt dịch vụ, cấu hình Kairos hoặc Jev, rồi thu thập các quyết định chỉ để quan sát. Khi quy trình dữ liệu và mô hình đã ổn định, hãy thận trọng thử nghiệm thực thi trên testnet Bybit, giữ các lần chạy riêng biệt và đánh giá mô hình so với các đường cơ sở bằng một mẫu đủ lớn thay vì dựa vào P&L ngắn hạn.