Nội dung này chỉ nhằm mục đích giáo dục, không phải lời khuyên đầu tư, định giá hay khuyến nghị mua bán chứng khoán.

Trả lời ngắn: AI Trading cho chứng khoán dùng dữ liệu và model để hỗ trợ quyết định về cổ phiếu. Hệ thống đúng phải biết dữ liệu nào thực sự có tại thời điểm đó, xử lý lịch sàn, báo cáo doanh nghiệp, cổ tức, chia tách, thay đổi rổ và trading halt trước khi cho phép hành động.

Đọc xong, bạn sẽ hiểu:

  • Vì sao dữ liệu “đúng hôm nay” có thể làm backtest quá đẹp trong quá khứ.
  • Cách xây Point-in-Time Map cho cổ phiếu.
  • Khi nào model phải đứng ngoài vì market state hoặc dữ liệu doanh nghiệp.

1. Chứng khoán khác ở issuer, lịch và vòng đời dữ liệu

a. Mỗi mã gắn với một doanh nghiệp

Giá cổ phiếu không đứng một mình. Nó liên quan báo cáo tài chính, công bố bất thường, cổ tức, chia tách, phát hành, sáp nhập và thay đổi niêm yết. Các sự kiện này có ngày công bố, ngày hiệu lực và đôi khi ngày dữ liệu được nhà cung cấp sửa lại. Model phải biết mình được phép nhìn phiên bản nào.

Point-in-time data là dữ liệu đúng như hệ thống có thể biết tại một thời điểm lịch sử. Ví dụ, báo cáo mang kỳ kết thúc 31/12 nhưng được công bố ngày 25/3. Backtest ngày 15/1 không được dùng con số đó chỉ vì database hiện nay gắn nó với năm trước.

b. Lịch sàn có trạng thái rõ

Không giống Crypto 24/7, cổ phiếu hoạt động theo calendar, pre-open, continuous trading, auction, nghỉ trưa hoặc after-hours tùy thị trường. Ngày lễ, phiên rút ngắn và daylight saving phải nằm trong calendar machine-readable. “Thứ Hai” không đảm bảo là ngày giao dịch.

c. Symbol không phải định danh vĩnh viễn

Ticker có thể đổi, tái sử dụng hoặc biến mất sau delisting/merger. Data layer nên có security ID ổn định, mapping symbol theo khoảng thời gian, listing venue và currency. Nếu join toàn bộ lịch sử chỉ bằng ticker hiện tại, dữ liệu có thể nối nhầm doanh nghiệp.

2. Equity Point-in-Time Map gồm sáu lớp

Hình 1 — Mọi feature phải mang dấu thời gian “available at”; model không được du hành thời gian bằng dữ liệu sửa lại sau này.

Lớp 1 — Security master và universe

Security master giữ ID, ticker lịch sử, exchange, currency, sector, listing/delisting date. Universe là tập mã đủ điều kiện nghiên cứu ở mỗi ngày. Universe hôm nay không được áp ngược về quá khứ vì sẽ loại công ty thất bại và tạo survivorship bias.

Lớp 2 — Market data và session

Lưu trade, quote, auction, volume, halt flag, event time và receive time. Giá close phải gắn đúng session. Pre-market, regular và after-hours không nên trộn nếu policy execution khác nhau.

Lớp 3 — Corporate action

Split, reverse split, dividend, rights issue, spin-off và merger thay đổi giá, số lượng hoặc quyền của cổ đông. Investor.gov giải thích cổ đông phân đoạn vẫn có thể tham gia dividend và stock split theo tỷ lệ sở hữu (Investor.gov — Fractional Share Investing). Với pipeline, cần effective date, factor, cash amount, currency và provenance.

Lớp 4 — Filing và fundamentals

Mỗi record cần period end, filing/publication timestamp, version và restatement flag. Feature tại ngày T chỉ được chọn bản có available_at <= T. Khi công ty nộp bản sửa, live system dùng bản mới; backtest lịch sử phải giữ được snapshot cũ.

Lớp 5 — Exchange/broker state

Gồm halt, auction imbalance, tick size, price band, short-sale restriction, order type, fill và reject. FINRA mô tả trading halt có thể diễn ra để thị trường tiếp nhận thông tin quan trọng hoặc xử lý mất cân bằng lệnh; khi halt có hiệu lực, giao dịch bị dừng theo quy tắc liên quan (FINRA — Trading Halts, Delays and Suspensions).

Lớp 6 — Portfolio và risk

Exposure được gom theo mã, sector, factor, currency và event. Risk engine còn kiểm concentration, liquidity budget, borrow availability và pending corporate action. Model score không được ghi đè những limit này.

3. Không du hành thời gian trong backtest

Hình 2 — Period end nói dữ liệu thuộc kỳ nào; publication time mới nói hệ thống được phép biết từ lúc nào.

Ví dụ filing giả lập

Công ty ABC có kỳ báo cáo kết thúc 31/12. Bản đầu được công bố 25/3 lúc 08:10, sau đó restate ngày 12/5. Model chạy ngày 10/2 chỉ có dữ liệu quý trước. Model ngày 1/4 được dùng bản 25/3. Model ngày 20/5 có thể dùng bản restated, nhưng backtest của ngày 1/4 vẫn phải giữ phiên bản ban đầu.

Nếu warehouse chỉ lưu “giá trị mới nhất”, toàn bộ lịch sử sẽ nhìn thấy bản 12/5. Đây là look-ahead bias: vô tình dùng thông tin tương lai. Kết quả thường đẹp và ổn định giả tạo.

Ví dụ corporate action

Một cổ phiếu split 2:1. Raw price giảm gần một nửa vì đơn vị cổ phiếu thay đổi, không nhất thiết vì giá trị doanh nghiệp giảm một nửa. Adjusted series hữu ích cho return research, nhưng order simulation phải dùng raw tradable price, tick size và số lượng thực tế của ngày đó.

Nên giữ song song raw_price, adjustment_factoradjusted_price, kèm phiên bản factor. Đừng ghi đè raw history. Một thay đổi corporate action muộn cần tạo revision có audit trail.

4. Ví dụ: score cao nhưng mã đang halt

Lúc 09:31, model cho mã ABC score 0,81 dựa trên momentum và filing mới. Feed giá mới 200 ms, portfolio còn risk budget. Nhưng primary exchange phát HALT_NEWS_PENDING; broker còn một order ở trạng thái PENDING_CANCEL.

Decision engine phải trả STAY_OUT_HALT. Không được đổi market order thành loại khác để “vượt qua” gate. Sau khi halt kết thúc, giá có thể mở lại bằng auction với gap và order imbalance. Hệ thống cần chờ trạng thái resumption, quote hợp lệ, auction policy và reconciliation của order cũ.

Hình 3 — Score chỉ là một ô; halt, filing freshness, corporate action và order state cùng quyết định eligibility.

Báo cáo của SEC về algorithmic trading mô tả thị trường cổ phiếu có nhiều exchange, ATS, order type và kết nối dữ liệu phức tạp (SEC — Staff Report on Algorithmic Trading). Bài học cho người mới: execution không phải hàm buy() đơn giản sau model.

a. Một decision record tối thiểu

Để biết hệ thống đã dùng đúng dữ liệu tại đúng thời điểm hay chưa, mỗi quyết định nên để lại một record có thể phát lại:

Trường Ví dụ Câu hỏi kiểm toán
security_id ID nội bộ của ABC Ticker hôm đó ánh xạ tới công ty nào?
decision_at 09:31:02 Khi ra quyết định, thị trường ở trạng thái gì?
data_as_of 09:31:01.700 Quote và feature mới tới đâu?
filing_version bản công bố 25/03 Có vô tình dùng restatement tương lai không?
universe_snapshot universe ngày T Mã đã đủ điều kiện ở đúng ngày đó chưa?
model_version equity-v3 Có phát lại được đúng model không?
risk_result DENY_HALT Gate nào đã chặn và theo rule nào?
order_state PENDING_CANCEL Local state đã đối chiếu broker chưa?

Nếu chỉ lưu score và giá, nhóm vận hành không thể phân biệt model sai với data join sai, lịch sàn sai hoặc broker state sai. Decision record cũng giúp khoanh vùng những backtest phải chạy lại khi một nguồn dữ liệu được sửa.

b. Vì sao không thể bê nguyên hệ Crypto hoặc Forex sang chứng khoán?

Ba thị trường đều có thể dùng model dự báo, nhưng hợp đồng dữ liệu và execution khác nhau. Crypto thường chạy 24/7, có nhiều venue và thêm on-chain state. Forex xoay quanh cặp tiền, phiên giao dịch, spread, rollover và trạng thái broker. Chứng khoán gắn với issuer, lịch sàn, corporate action, filing, universe lịch sử và trading halt.

Vì thế, đổi tên cột BTCUSDT thành một ticker cổ phiếu không biến pipeline crypto thành hệ thống equity. Trước khi tái sử dụng model, cần viết lại ít nhất:

  1. Security master và quy tắc mapping ticker theo ngày.
  2. Market calendar, auction, halt và price-band gate.
  3. Point-in-time join cho filing, fundamentals và corporate action.
  4. Universe lịch sử có cả mã delist.
  5. Mô phỏng order theo tick size, lot, thanh khoản và loại lệnh thực tế.

Đọc AI Trading cho CryptoAI Trading cho Forex để so sánh đúng những hợp đồng khác nhau này. Mục tiêu không phải chọn thị trường “dễ” hơn, mà là tránh dùng một giả định vận hành sai cho tài sản khác.

5. Sai lầm và checklist trước production

Năm sai lầm phổ biến

  1. Dùng universe hiện tại cho toàn bộ lịch sử.
  2. Join fundamentals bằng period end thay vì available time.
  3. Dùng adjusted close để mô phỏng giá order.
  4. Bỏ qua delisted symbols và mã đổi ticker.
  5. Xem timeout/halt như tín hiệu retry ngay.

Checklist chín mục

  • Security ID ổn định, mapping ticker có hiệu lực theo ngày.
  • Calendar và session state lấy từ nguồn chính thức/được đối chiếu.
  • Universe snapshot tồn tại cho từng ngày nghiên cứu.
  • Filing có publication time, version và restatement flag.
  • Corporate action có effective date, factor, cash/currency và provenance.
  • Raw price không bị ghi đè; adjusted series được tạo có version.
  • Halt/auction/price-band là eligibility gate.
  • Order timeout chuyển UNKNOWN và phải reconcile.
  • Portfolio limit gom theo sector/factor/liquidity, không chỉ từng mã.

Nếu thiếu một trong các record trọng yếu, hệ thống nên STAY_OUT_DATA thay vì tự điền bằng dữ liệu hiện tại. “Không hành động” là output hợp lệ.

Checklist này cần trở thành gate chạy tự động, không chỉ là tài liệu để đọc. Mỗi lần tạo feature, pipeline nên lưu security ID, thời điểm truy vấn, phiên bản filing, phiên bản adjustment factor và universe snapshot vào lineage record. Khi một nguồn được sửa, nhóm vận hành có thể xác định những feature, backtest và quyết định nào bị ảnh hưởng thay vì xây lại toàn bộ bằng dữ liệu mới nhất.

Một phép thử hữu ích là “as-of replay”: chọn ngẫu nhiên ngày lịch sử, khóa đồng hồ hệ thống tại ngày đó và yêu cầu pipeline tái tạo đúng input đã có lúc ấy. Sau đó cố tình đưa một restatement tương lai hoặc ticker mới vào kho dữ liệu. Gate phải từ chối record. Nếu test vẫn pass, point-in-time contract chưa đủ chặt. Cách thử này đơn giản nhưng bắt được lỗi mà accuracy của model không thể phát hiện.

6. Bắt đầu từ đâu: Point-in-Time Card 15 phút

Chọn một công ty giả lập, không cần tài khoản giao dịch. Trên giấy hoặc Sheet, điền:

  1. Security ID, ticker, exchange và currency tại ngày T.
  2. Session state và halt flag.
  3. Filing gần nhất có available_at <= T.
  4. Corporate action đã công bố và ngày hiệu lực.
  5. Raw/adjusted price cùng factor.
  6. Universe membership tại T.
  7. Order state, portfolio exposure và quyết định cuối.

Mẫu đối chiếu tham khảo

Trường Giá trị giả lập Kết luận
Ngày T 01/04 Không dùng restatement 12/05
Filing Published 25/03 Hợp lệ tại T
Corporate action Split effective 15/04 Chưa áp vào raw 01/04
Universe Thành viên tại T Không dùng danh sách hôm nay
Exchange HALT_NEWS_PENDING Không action
Order PENDING_CANCEL Reconcile
Decision STAY_OUT_HALT Reason code rõ

Muốn nối dữ liệu vào pipeline, đọc Kiến trúc dữ liệu AI Trading. Muốn thiết kế limit trước execution, đọc Risk Management trong AI Trading.

7. Tổng kết

Năm ý chính

  • Dữ liệu cổ phiếu phải đúng theo thời điểm hệ thống thực sự biết.
  • Security master và universe lịch sử ngăn ticker lỗi, survivorship bias.
  • Filing và corporate action cần version, available time và audit trail.
  • Halt, auction và broker state có quyền chặn model.
  • Raw price dùng cho execution; adjusted series dùng có chủ đích cho research.

Câu hỏi tự kiểm tra

  • Point-in-time data là gì?
  • Vì sao universe hôm nay gây bias?
  • Period end khác publication time thế nào?
  • Khi split, raw và adjusted price dùng vào việc gì?
  • Model score cao nhưng mã halt thì hệ thống làm gì?

Gợi ý đáp án

Câu 1Dữ liệu đúng như hệ thống có thể biết tại thời điểm lịch sử. Xem lại mục 1.
Câu 2Nó loại công ty đã thất bại hoặc delist khỏi quá khứ. Xem lại mục 2.
Câu 3Period end là kỳ; publication time là lúc được phép biết. Xem lại mục 3.
Câu 4Raw mô phỏng execution; adjusted hỗ trợ return research. Xem lại mục 3.
Câu 5Trả STAY_OUT_HALT và đợi resumption/reconciliation. Xem lại mục 4.

Thuật ngữ cần nhớ

Thuật ngữ Nghĩa ngắn
Point-in-time Dữ liệu có thể biết tại đúng thời điểm.
Available time Lúc record được phép vào feature.
Corporate action Sự kiện thay đổi quyền, giá hoặc số cổ phiếu.
Adjustment factor Hệ số tạo chuỗi giá đã điều chỉnh.
Universe Tập mã đủ điều kiện tại một ngày.
Survivorship bias Bias do chỉ giữ đối tượng sống sót.
Trading halt Trạng thái tạm dừng giao dịch.
Reconciliation Đối chiếu local state với nguồn có thẩm quyền.

Nguồn tham khảo

Đọc tiếp bài cuối của cụm: Tương lai AI Trading — từ bot tới hệ thống đa tác nhân.

Chọn đúng bài trong lộ trình

Bài này tập trung vào AI Trading chứng khoán — ứng dụng point-in-time, corporate action và halt. Nếu bạn cần bức tranh chung trước khi đi sâu, hãy bắt đầu từ AI Trading là gì? Hướng dẫn từ nền tảng đến kiểm định. Các bước liên quan trực tiếp là Data Leakage và Look-ahead Bias, Risk Management trong AI TradingQuy trình xây một hệ thống AI Trading.

Nội dung chỉ nhằm mục đích giáo dục, không phải lời khuyên đầu tư.