Kronos: Mô hình nền tảng cho ngôn ngữ của thị trường tài chính
TL;DR
- Giải pháp: Tokenizer cho OHLCV và mô hình autoregressive để dự báo chuỗi K-line.
- Cách dùng nhanh:
pip install -r requirements.txt→ tải tokenizer + model từ Hugging Face →KronosPredictor.predict(). - Phù hợp cho: researcher, kỹ sư lượng tử, PoC backtest.
- Một bước nhanh: chạy
examples/prediction_example.pyđể lấy dự báo 120 bước. - Lưu ý: Finetune cần chuẩn bị dữ liệu bằng Qlib; production cần đo và tối ưu latency.
Cảnh mở
Mở một thư mục chứa CSV nến từ nhiều sàn, timestamp lộn xộn, bạn cần một chuỗi dự báo để chạy backtest. Kronos làm nhiệm vụ đọc K-line như một “ngôn ngữ” - tokenizer rời rạc hóa OHLCV, model sinh chuỗi dự báo autoregressive.
So sánh: hãy tưởng tượng K-line như những câu chuyện ngắn trên báo tài chính; tokenizer là thư ký ghi chép, còn Kronos là bản đồ thời tiết dự báo các đoạn tiếp theo.
Cách bắt tay làm (Quickstart)
- Tạo virtualenv Python 3.10+.
- Cài phụ thuộc:
pip install -r requirements.txt
- Ví dụ tối thiểu:
from model import Kronos, KronosTokenizer, KronosPredictor
tokenizer = KronosTokenizer.from_pretrained("NeoQuasar/Kronos-Tokenizer-base")
model = Kronos.from_pretrained("NeoQuasar/Kronos-small")
predictor = KronosPredictor(model, tokenizer, max_context=512)
pred_df = predictor.predict(df=x_df, x_timestamp=x_ts, y_timestamp=y_ts, pred_len=120)
print(pred_df.head())
Ví dụ output (pred_df.head()):
# index open high low close volume
2024-01-01 00:00:00 100.50 101.20 100.10 100.90 12345
2024-01-02 00:00:00 100.90 102.00 100.50 101.80 15000
2024-01-03 00:00:00 101.80 103.30 101.50 102.90 14000
2024-01-04 00:00:00 102.90 104.10 102.30 103.70 13000
2024-01-05 00:00:00 103.70 104.00 103.20 103.50 12500
Kết quả: predictor trả về một DataFrame pandas đánh chỉ số theo timestamp tương lai chứa các cột OHLC (và tùy chọn volume/amount). Ví dụ trên minh họa cấu trúc và kiểu dữ liệu đầu ra.
Minh họa (Markdy scene)
Các API chính
KronosTokenizer.from_pretrained()- tải tokenizer từ HF.Kronos.from_pretrained()- tải checkpoint mô hình.KronosPredictor.predict()- trả về DataFrame chứa dự báo OHLC (có thể có volume/amount).KronosPredictor.predict_batch()- xử lý nhiều series cùng lúc (yêu cầu cùng lookback/pred_len).
Tính năng đáng chú ý
- Model zoo:
Kronos-mini,Kronos-small,Kronos-base(mini ~4.1M, small ~24.7M, base ~102.3M). max_contextmặc định cho small/base là 512.- Hỗ trợ finetune bằng Qlib; ví dụ
finetune/train_predictor.pydùngtorchruncho multi-GPU.
Ẩn dụ: coi Kronos như một tòa soạn dự báo - nó đọc các “câu” giá gần nhất rồi viết vài dòng tiếp theo. Tokenizer giống thư ký, model giống biên tập viên chốt tiêu đề.
Những điểm cần lưu ý
predict_batchcần các series có cùng lookback/pred_len - không tiện khi dữ liệu không đều.- Finetune đòi hỏi pipeline data prep (Qlib) và cấu hình
finetune/config.py. - Kiểm tra checksum và ưu tiên
safetensorsnếu có checkpoint.
💡 Tip: ưu tiên safetensors và chạy thử trên tập dữ liệu nhỏ trước khi finetune toàn bộ để bắt mismatch sớm.
⚠️ Cảnh báo: Tải trọng số/tokenizer từ Hugging Face cần mạng và ổ cứng; kiểm tra checksum và dùng model ID đáng tin cậy khi chạy trên môi trường production.
Ví dụ nhanh (trước / sau)
Trước: baseline rolling mean.
naive = df['close'].rolling(20).mean().iloc[-1]
Sau: dùng Kronos để sinh chuỗi dự báo:
pred_df = predictor.predict(df=x_df, x_timestamp=x_ts, y_timestamp=y_ts, pred_len=120)
Checklist triển khai
- Python 3.10+ virtualenv
pip install -r requirements.txtpython examples/prediction_example.py- Nếu finetune: chuẩn bị Qlib data →
torchrun --nproc_per_node=NUM_GPUS finetune/train_predictor.py
Kết
Kronos biến K-line thành ngôn ngữ mà mô hình có thể hiểu và sinh tiếp. Với 19k sao và mô hình sẵn có trên Hugging Face, repo này là một điểm bắt đầu mạnh cho PoC dự báo chuỗi thời gian tài chính.
shiyu-coder/Kronos · MIT · 19079
Hoang Yell
Một nhà phát triển phần mềm và là người kể chuyện kỹ thuật. Tôi dành thời gian để khám phá những repository mã nguồn mở thú vị nhất trên GitHub và trình bày chúng dưới dạng những câu chuyện dễ hiểu cho mọi người.