Cách học giao dịch định lượng: lỗi hay gặp khi ôn thi
Cách học giao dịch định lượng cho kỳ thi: lỗi hay gặp với dữ liệu tài chính, kiểm định ngược, cách chia giờ ôn và tài liệu song ngữ 376 trang giá 132.000đ.
Cách học giao dịch định lượng: lỗi hay gặp khi ôn thi
Hình dung một buổi bảo vệ bài tập lớn. Sinh viên chiếu đường vốn đi lên gần như thẳng tắp: lãi 38% một năm, mức sụt giảm tối đa chỉ 6%. Thầy hỏi đúng một câu: "Em chuẩn hóa dữ liệu trên cả năm năm, hay chỉ trên phần huấn luyện?" Cả phòng im. Đường vốn đẹp kia tan ngay tại câu hỏi đó.
Tình huống này là giả định, nhưng lỗi trong đó thì rất thật. Người học môn này hiếm khi thua vì không biết công thức. Họ thua vì để thông tin của tương lai lọt vào quá khứ mà không biết. Bài này đi qua những chỗ như vậy, theo thứ tự các mảng kiến thức thường gặp trong học phần, rồi mới nói đến chuyện ôn thế nào cho kịp.
Môn này khó ở đâu
Khó không nằm ở toán. Đại số tuyến tính và xác suất ở mức năm hai là đủ để đọc hầu hết công thức. Khó ở chỗ môn này ghép ba thứ vào một: tài chính (lợi suất, rủi ro, chi phí), thống kê (ước lượng, kiểm định, sai số) và lập trình (Python, thường là pandas, numpy, scikit-learn). Thiếu một chân là nghiêng.
Có một điều khó chịu nữa mà giáo trình ít nói thẳng: dữ liệu tài chính nhiễu nặng và ít. Năm năm dữ liệu ngày chỉ cho khoảng 1.260 quan sát, nghe thì nhiều, nhưng với một mô hình học máy có vài chục đặc trưng thì rất mỏng. Nên trong đề thi, câu "vì sao mô hình này có thể sai" thường đáng điểm hơn câu "mô hình này tính thế nào".
Vì vậy cách học giao dịch định lượng hiệu quả là học theo cặp: mỗi kỹ thuật đi kèm một câu hỏi "nó hỏng khi nào". Phần dưới làm đúng như vậy.
Lợi suất chứ không phải giá
Giá cổ phiếu trôi theo thời gian, không có mức trung bình cố định để quay về. Thống kê gọi là chuỗi không dừng. Lợi suất thì ổn định hơn nhiều, nên hầu như mô hình nào cũng bắt đầu bằng việc đổi giá thành lợi suất.
Có hai cách tính, và đề thi hay hỏi chỗ khác nhau. Giá từ 20.000 lên 25.000 đồng cho lợi suất đơn 25%, còn lợi suất log là ln(1,25) ≈ 0,2231. Lợi suất log cộng được theo thời gian, lợi suất đơn thì không. Thử một ví dụ nhỏ: giá 100, ngày một tăng 10% lên 110, ngày hai giảm 10% xuống 99. Cộng hai lợi suất đơn ra 0%, nhưng bạn đã mất 1%. Cộng lợi suất log: 0,0953 + (−0,1054) = −0,0101, khớp với mức mất 1%.
Mấy đặc điểm của dữ liệu tài chính nên thuộc như thuộc tên mình:
- Đuôi dày. Giả sử độ lệch chuẩn ngày là 1% và lợi suất tuân theo phân phối chuẩn. Ngày giảm 5% khi đó là biến cố 5 sigma, xác suất cỡ 3 phần chục triệu, tức vài triệu ngày giao dịch mới gặp một lần. Thị trường thật gặp những ngày như thế thường xuyên hơn hẳn.
- Biến động tụ lại. Ngày dữ dội thường kéo theo ngày dữ dội.
- Lợi suất ít tự tương quan, nhưng bình phương lợi suất thì có. Chỗ này sinh viên hay lẫn.
Nếu một bài tự luận hỏi "vì sao giả định chuẩn gây hại cho quản trị rủi ro", ba ý trên là xương sống của dàn ý.
Ma trận hiệp phương sai và chuyện N lớn hơn T
Đây là chỗ mình thấy nhiều người học thuộc công thức mà không hiểu hậu quả.
Danh mục 100 tài sản cần ước lượng ma trận hiệp phương sai 100 × 100, tức 100 × 101 / 2 = 5.050 tham số độc lập. Bạn có 250 ngày dữ liệu, khoảng một năm giao dịch. Ước lượng ra được, nhưng nhiễu rất lớn. Nếu danh mục có 300 tài sản mà chỉ có 250 ngày, ma trận mẫu suy biến: hạng tối đa chỉ 249, không nghịch đảo được. Mà tối ưu danh mục kiểu Markowitz cần chính phép nghịch đảo đó.
Hai lối thoát xuất hiện trong chương ba của đề cương môn này, và cũng trong hầu hết giáo trình:
Một là co rút (shrinkage): trộn ma trận mẫu S với một ma trận mục tiêu đơn giản F theo tỉ lệ δ, kết quả δF + (1 − δ)S. Thêm chút thiên lệch để đổi lấy phương sai thấp hơn nhiều.
Hai là mô hình nhân tố. Với 100 tài sản và 3 nhân tố, số tham số là 100 × 3 = 300 hệ số tải, thêm 6 tham số cho hiệp phương sai nhân tố, thêm 100 phương sai phần dư: khoảng 406 so với 5.050. Ít hơn mười hai lần.
Khi ôn, đừng chỉ ghi "co rút giúp ổn định". Hãy ghi được con số 5.050 và lý do nó khiến ước lượng hỏng. Giảng viên dễ cho điểm tối đa với câu trả lời có con số hơn là câu chung chung.
Dự báo lợi suất bằng học máy: chia dữ liệu theo thời gian
Sinh viên đã học học máy thường mang nguyên thói quen cũ sang: xáo trộn dữ liệu, chia 80/20, chạy cross-validation ngẫu nhiên. Với chuỗi thời gian tài chính, cách đó làm rò rỉ thông tin. Mô hình được "học" từ ngày 15 rồi được "kiểm tra" trên ngày 14.
Cách chia đúng giữ nguyên thứ tự. Với 1.260 quan sát, một cách chia hợp lý: 756 ngày đầu (3 năm) để huấn luyện, 252 ngày kế (1 năm) để chọn siêu tham số, 252 ngày cuối để thử một lần duy nhất. Hoặc chạy walk-forward: huấn luyện trên cửa sổ trượt, dự báo bước kế, trượt tiếp. Chậm hơn, nhưng gần với cách mô hình sẽ được dùng thật.
Ba lỗi còn lại hay xuất hiện trong bài tập:
- Chuẩn hóa (trừ trung bình, chia độ lệch chuẩn) trên toàn bộ dữ liệu trước khi chia. Đây chính là lỗi trong buổi bảo vệ ở đầu bài.
- Dùng đặc trưng tính đến cuối ngày t để dự báo lợi suất ngày t.
- Nhìn điểm R² ngoài mẫu mà không biết nên kỳ vọng bao nhiêu. Lợi suất ngày rất khó dự báo, và R² ngoài mẫu vài phần nghìn đã đáng bàn. Nếu mô hình của bạn cho 30%, hãy nghi code của mình trước khi mừng.
Danh mục: từ Markowitz đến ngang bằng rủi ro
Lý thuyết danh mục hiện đại dễ học và dễ quên chỗ yếu. Tối ưu trung bình-phương sai nhạy với dữ liệu đầu vào: đổi lợi suất kỳ vọng của một tài sản đi nửa điểm phần trăm, trọng số tối ưu có thể nhảy hẳn. Đề thi tự luận thích hỏi đúng điểm này.
Phần nâng cao đổi thước đo rủi ro hoặc đổi cách phân bổ. Rủi ro phía dưới chỉ phạt độ lệch xuống, không phạt độ lệch lên, vì nhà đầu tư không phàn nàn khi lãi hơn dự kiến. Ngang bằng rủi ro (risk parity) bỏ hẳn lợi suất kỳ vọng và chia sao cho mỗi tài sản đóng góp rủi ro như nhau.
Một ví dụ tính tay được trong phòng thi. Hai tài sản, biến động năm lần lượt 10% và 20%, giả sử không tương quan. Trọng số tỉ lệ nghịch với biến động: 2/3 và 1/3. Đóng góp rủi ro: 0,667 × 10 = 6,67 và 0,333 × 20 = 6,67, bằng nhau. Biến động danh mục √(6,67² + 6,67²) ≈ 9,43%. Khi có tương quan khác không thì phải dùng cả ma trận hiệp phương sai và giải bằng số, nhưng cách nghĩ vẫn vậy.
Các chủ đề như theo dõi chỉ số, danh mục vững (robust) và học sâu cho danh mục đều xoay quanh cùng một mối lo: đầu vào nhiễu thì đầu ra tối ưu cũng nhiễu. Học theo hướng đó thì ba chủ đề này liền nhau chứ không rời rạc.
Giao dịch cặp: con số z và lúc nó hết đúng
Giao dịch cặp (pairs trading) là phần dễ lấy điểm nhất nếu hiểu logic, và dễ mất điểm nhất nếu nhầm tương quan với đồng tích hợp.
Logic: tìm hai tài sản có chênh lệch (spread) quay về mức trung bình. Khi spread lệch quá xa thì mua bên rẻ, bán bên đắt, chờ nó co lại. Ví dụ, spread có trung bình lịch sử 0,8 và độ lệch chuẩn 0,3. Hôm nay nó là 1,5. Điểm z = (1,5 − 0,8) / 0,3 ≈ 2,33. Nếu quy tắc vào lệnh là |z| > 2 thì đây là tín hiệu vào lệnh, thoát khi z gần 0.
Chỗ dễ sai: hai cổ phiếu có tương quan lợi suất 0,9 chưa chắc có spread quay về trung bình. Tương quan nói về hướng đi chung, đồng tích hợp nói về khoảng cách giữa hai chuỗi giá có bị níu lại hay không. Hai chuỗi có thể cùng đi lên mà cách nhau mỗi lúc một xa.
Và chỗ khó chịu thật sự: quan hệ đồng tích hợp tìm được trong quá khứ có thể gãy trong tương lai, nhất là khi một công ty đổi mô hình kinh doanh hoặc có tin riêng. Vì vậy cần cắt lỗ. Bài tập hay cho thêm ngưỡng dừng, ví dụ |z| > 3,5, để kiểm tra bạn có nghĩ đến kịch bản đó không.
Kiểm định ngược và chi phí giao dịch
Kiểm định ngược (backtest) là nơi mọi sai sót ở trên cộng dồn.
Thử hình dung chiến lược có Sharpe năm hóa bằng trung bình ngày chia độ lệch chuẩn ngày, nhân √252. Trung bình ngày 0,05%, độ lệch chuẩn ngày 1%: Sharpe = 0,05 × 15,87 ≈ 0,79. Nghe ổn. Giờ trừ chi phí giao dịch. Nếu chiến lược đổi vị thế mỗi ngày và chi phí quy ra 0,03% mỗi ngày, lợi suất ròng còn 0,02% và Sharpe tụt xuống khoảng 0,32. Gần như chẳng còn gì. Chiến lược quay vòng nhanh luôn nguy hiểm theo cách này.
Chỗ thứ hai: quá khớp do thử nhiều lần. Giả sử bạn thử 20 bộ tham số, không bộ nào thật sự có lợi thế. Với ngưỡng ý nghĩa 5% một phía, xác suất ít nhất một bộ trông có ý nghĩa là 1 − 0,95²⁰ ≈ 64%. Chọn bộ đẹp nhất rồi báo cáo như thể chỉ thử một lần là cách tự lừa mình phổ biến nhất của môn này.
Phần triển khai và quản trị hệ thống giao dịch AI ở chương cuối thường bị bỏ qua khi ôn gấp, vì nó không có công thức. Nhưng đề tự luận hay chọn đúng chỗ đó: giám sát mô hình sau khi chạy thật, khi nào dừng, ai chịu trách nhiệm. Dành cho nó một buổi, đừng đọc lướt.
Chia giờ ôn cho mười chương
Giả sử bạn có khoảng ba tuần và 36 giờ thật sự ngồi học. Gợi ý dưới đây dồn thời gian vào những phần có nhiều bài tính và nhiều bẫy.
| Chương | Giờ | Nên làm gì |
|---|---|---|
| 1–2: tổng quan, dữ liệu tài chính | 5 | Tự tính lợi suất log, liệt kê đặc điểm dữ liệu |
| 3–4: ước lượng, nhân tố, chuỗi thời gian | 7 | Làm tay ví dụ co rút, chạy lại mã mô hình chuỗi thời gian |
| 5: dự báo lợi suất bằng học máy | 5 | Viết lại đoạn chia dữ liệu theo thời gian từ đầu |
| 6–7: danh mục cơ bản và nâng cao | 8 | Tính tay ngang bằng rủi ro hai tài sản, so rủi ro phía dưới với phương sai |
| 8: theo dõi chỉ số, danh mục vững, học sâu | 4 | Nắm ý tưởng, đừng sa vào chi tiết kiến trúc |
| 9: giao dịch cặp | 3 | Tính điểm z, phân biệt tương quan và đồng tích hợp |
| 10: kiểm định ngược, triển khai, quản trị | 4 | Tập trả lời tự luận theo dàn ý |
Con số này là gợi ý, không phải công thức. Nếu trường bạn chấm nặng tự luận thì rút bớt giờ chạy code, ngược lại nếu có bài thực hành thì tăng giờ cho Python. Mẹo nhỏ: mỗi buổi kết thúc bằng 10 phút tự giải thích lại bài hôm nay cho một người không học môn này. Chỗ nào ấp úng là chỗ chưa hiểu.
Tài liệu 376 trang dùng thế nào, và không dùng được vào việc gì
Nếu bạn muốn một bộ khung để ôn, Đề cương ôn tập Trí tuệ nhân tạo trong giao dịch định lượng — Việt/Anh gồm 376 trang song ngữ Việt-Anh, chia mười chương đúng theo mạch ở trên: từ tổng quan giao dịch định lượng và học máy tài chính, dữ liệu, ước lượng, chuỗi thời gian, dự báo lợi suất, hai chương danh mục, theo dõi chỉ số, giao dịch cặp, cho tới kiểm định ngược và quản trị hệ thống. Tài liệu viết cho sinh viên đại học ngành công nghệ tài chính và tài chính – ngân hàng cần ôn thi học phần.
Mỗi phần có bài tập kèm lời giải, câu tự luận có dàn ý, trắc nghiệm có đáp án và mã Python chạy thật. Với người học song ngữ, thuật ngữ như overfitting, look-ahead bias hay shrinkage đi kèm tiếng Việt, đỡ mất thời gian tra khi đọc tài liệu tiếng Anh.
Nói thẳng về giới hạn. Đây là tài liệu ôn tập, không thay được giáo trình hay đề cương chính thức của trường, và thứ tự chương của giảng viên bạn có thể khác. Tài liệu cũng không có bài giảng video, nên phần nào bạn chưa nghe giảng lần nào thì sẽ đọc chậm. Mã Python thì phải tự chạy trên máy mình mới có tác dụng; chỉ đọc thì không nhớ được lâu.
Về mua bán, vì sản phẩm là file nên bạn nên xem trước cho chắc: có 5 trang xem trước miễn phí trước khi quyết định. Giá 132.000đ, thanh toán bằng chuyển khoản trong nước, và file được gửi trong vòng 24h.
Muốn đọc thử vài trang đầu trước khi chuyển khoản, bạn có thể vào trang tài liệu Đề cương ôn tập Trí tuệ nhân tạo trong giao dịch định lượng.