Vì sao matplotlib quan trọng trong quant trading (không phải để “đẹp”)

23/02/2026

153 lượt đọc

Trong quant trading, đọc dữ liệu bằng bảng số thường làm người ta… tự lừa mình. Một backtest nhìn “đẹp” có thể chỉ là do bạn chưa nhìn thấy những thứ quan trọng: vùng sideway kéo dài, cú gap, giai đoạn thanh khoản yếu, hoặc drawdown âm ỉ nhưng rất dai. Chart là cách nhanh nhất để bóc lớp “ảo giác” đó.

Chương về matplotlib trong sách có một ý rất thực tế: trước khi nghĩ đến chiến lược, hãy vẽ chart. Vì chiến lược nào cũng cần “đúng môi trường”. Trend-following không hợp tài sản đi ngang; mean-reversion dễ chết trong giai đoạn breakout; intraday thì cực nhạy với biến động/khối lượng. Và chart là cách bạn nhìn thấy “regime” của thị trường trong vài giây.

Tư duy “figure + subplots” để đánh giá chiến lược như một hệ thống

Nhiều người mới làm quant hay mắc lỗi: chỉ vẽ price hoặc chỉ vẽ equity curve. Nhưng một hệ thống giao dịch phải được nhìn tối thiểu qua 3–4 góc: giá, tín hiệu, equity, drawdown, thậm chí thêm rolling volatility. Điểm hay của matplotlib là bạn tạo một “canvas” (figure) rồi chia nó thành nhiều cửa sổ (subplot) để nhìn được toàn cảnh cùng lúc.

Ví dụ workflow thực tế:

  1. Subplot 1: giá + tín hiệu (entry/exit)
  2. Subplot 2: equity curve (giá trị tài khoản theo thời gian)
  3. Subplot 3: drawdown (đo mức đau thật sự)
  4. Subplot 4: rolling volatility hoặc rolling Sharpe (để biết regime đổi chưa)

Nếu chỉ nhìn equity curve, bạn có thể bị “đánh lừa” bởi vài trade thắng lớn. Nhưng khi thêm drawdown, bạn sẽ thấy ngay chiến lược có đoạn “hấp hối” dài hay không. Đây là chỗ mà chương sách nói rất đúng: không có gì thay thế được một chart được thiết kế tử tế.

Dưới đây là khung code tối giản nhưng đúng tinh thần “xây hệ thống” (không chỉ vẽ cho vui). Bạn có thể thay dữ liệu giả bằng dữ liệu thật của VN30/VNINDEX/1 cổ phiếu bất kỳ.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# giả lập price (thay bằng dữ liệu thật của bạn)
np.random.seed(42)
n = 500
price = 100 + np.cumsum(np.random.randn(n)) # random walk
df = pd.DataFrame({"price": price})
df["ret"] = df["price"].pct_change().fillna(0)

# tín hiệu ví dụ: moving average crossover
fast = 10
slow = 30
df["ma_fast"] = df["price"].rolling(fast).mean()
df["ma_slow"] = df["price"].rolling(slow).mean()
df["signal"] = (df["ma_fast"] > df["ma_slow"]).astype(int) # 1 khi fast > slow
df["pos"] = df["signal"].shift(1).fillna(0)

# equity curve (giả sử không tính phí/slippage ở đây để minh họa)
df["strategy_ret"] = df["pos"] * df["ret"]
df["equity"] = (1 + df["strategy_ret"]).cumprod()

# drawdown
df["peak"] = df["equity"].cummax()
df["dd"] = df["equity"]/df["peak"] - 1

# vẽ 3 subplot chia sẻ trục x
fig, axes = plt.subplots(3, 1, figsize=(12, 10), sharex=True)

# 1) price + MA
axes[0].plot(df["price"], label="price")
axes[0].plot(df["ma_fast"], label=f"MA{fast}")
axes[0].plot(df["ma_slow"], label=f"MA{slow}")
axes[0].legend(loc="best")
axes[0].set_title("price và tín hiệu (moving average)")

# 2) equity curve
axes[1].plot(df["equity"], label="equity")
axes[1].legend(loc="best")
axes[1].set_title("equity curve")

# 3) drawdown
axes[2].plot(df["dd"], label="drawdown")
axes[2].legend(loc="best")
axes[2].set_title("drawdown")

plt.tight_layout()
plt.show()

Điểm quan trọng không phải “MA crossover” (cái này chỉ là ví dụ), mà là cách bạn đóng gói chiến lược thành một hệ thống có thể nhìn và kiểm tra. Khi bạn nhìn 3 biểu đồ cùng lúc, bạn trả lời được ngay những câu cực thực tế:

  1. equity tăng nhờ đều hay nhờ vài cú ăn may?
  2. drawdown sâu nhất là bao nhiêu? kéo dài bao lâu?
  3. giai đoạn sideway thì hệ thống bị bào mòn không?
  4. khi regime đổi (volatility tăng/giảm) thì performance có đổi không?

Đó mới là “giá trị” của matplotlib trong quant.

Trong thực tế, equity curve nên vẽ log nếu bạn nhìn dài hạn hoặc muốn so tăng trưởng theo % thay vì theo điểm. Vì tăng từ 1 lên 2 là +100%, tăng từ 100 lên 101 chỉ +1%. Nếu bạn không dùng log trong một số trường hợp, mắt bạn sẽ bị đánh lừa.

fig, ax = plt.subplots(figsize=(12, 4))
ax.plot(df["equity"])
ax.set_yscale("log")
ax.set_title("equity curve (log scale)")
plt.show()

Còn annotate thì cực hợp để “đóng đinh” các điểm quan trọng: cú rơi mạnh nhất, ngày equity lập đỉnh, hoặc điểm tín hiệu đảo chiều. Ví dụ bạn đánh dấu đáy drawdown:

dd_min_idx = df["dd"].idxmin()
fig, ax = plt.subplots(figsize=(12, 4))
ax.plot(df["dd"])
ax.annotate("max drawdown",
xy=(dd_min_idx, df.loc[dd_min_idx, "dd"]),
xytext=(dd_min_idx + 20, df["dd"].min()/2),
arrowprops=dict(facecolor="black", shrink=0.05))
ax.set_title("đánh dấu max drawdown")
plt.show()

fig.savefig("strategy_report.png", dpi=200)

Kết luận

Một chiến lược có thể có Sharpe đẹp, winrate cao, nhưng equity đi kiểu “leo dốc rồi rơi thẳng đứng” thì đó là chiến lược có tail risk. Ngược lại, một chiến lược return không quá ấn tượng nhưng drawdown kiểm soát tốt lại là thứ sống lâu. Matplotlib không tạo ra edge, nhưng nó giúp bạn nhìn thấy sự thật của hệ thống: nó kiếm tiền như thế nào, đau ở đâu, và có chịu nổi thị trường xấu không.

Nếu muốn làm bài post này “đúng vibe facebook” hơn nữa (ngắn hơn nhưng vẫn chất), nói mình sẽ rút lại thành 8–10 câu, giữ nguyên insight và ví dụ code quan trọng nhất.

Chia sẻ bài viết

Đánh giá

Hãy là người đầu tiên nhận xét bài viết này!

Đăng ký nhận tin

Nhập Email để nhận được bản tin mới nhất từ QM Capital.

Bài viết liên quan

Hướng dẫn tìm mới Hỗ trợ và Kháng cự của cổ phiếu bằng Python
23/02/2026
9 lượt đọc

Hướng dẫn tìm mới Hỗ trợ và Kháng cự của cổ phiếu bằng Python C

Một trong những khái niệm cơ bản và quan trọng nhất trong phân tích kỹ thuật là mức hỗ trợ và kháng cự. Hỗ trợ và kháng cự không chỉ đơn giản là những đường kẻ trên biểu đồ, mà là những điểm giá nơi thị trường đã chứng tỏ rằng có một sự thay đổi lớn trong cung và cầu. Hỗ trợ là mức giá mà tại đó lực cầu (demand) đủ mạnh để ngừng đà giảm của giá cổ phiếu, trong khi kháng cự là mức giá mà lực cung (supply) đủ mạnh để ngừng đà tăng của giá cổ phiếu. Việc xác định chính xác những mức này có thể giúp nhà giao dịch đưa ra quyết định chính xác hơn, tối ưu hóa lợi nhuận và giảm thiểu rủi ro.

5 Cuốn sách Quant Finance nên đọc để bắt đầu năm 2026
19/02/2026
132 lượt đọc

5 Cuốn sách Quant Finance nên đọc để bắt đầu năm 2026 C

Nếu bạn đang có kế hoạch bước vào lĩnh vực Tài chính Định lượng (Quant Finance) trong năm 2026 – dù mục tiêu là thi MFE, làm quant research, xây dựng hệ thống giao dịch thuật toán hay phát triển mô hình rủi ro – thì việc xây dựng nền tảng đúng ngay từ đầu là điều cực kỳ quan trọng. Quant không phải là lĩnh vực có thể học “mẹo” hay “chiêu thức ngắn hạn”. Đây là một con đường đòi hỏi nền tảng toán học vững chắc, tư duy mô hình hóa rõ ràng và khả năng hiểu sâu bản chất rủi ro của thị trường.

PAMM vs Copy Trading: Nhà đầu tư Việt Nam nên hiểu gì trước khi “gửi niềm tin” cho một người giao dịch hộ?
15/02/2026
117 lượt đọc

PAMM vs Copy Trading: Nhà đầu tư Việt Nam nên hiểu gì trước khi “gửi niềm tin” cho một người giao dịch hộ? C

Với nhà đầu tư Việt Nam, PAMM và Copy Trading thường được quảng bá chung một nhóm: “đầu tư thụ động”, “không cần biết phân tích”, “chỉ cần chọn người giỏi”. Nhưng nếu nhìn kỹ, hai mô hình này khác nhau ngay ở điểm nền tảng nhất: PAMM là bạn ủy quyền cho người khác giao dịch trên một tài khoản chung, còn Copy Trading là bạn vẫn giữ tài khoản của mình và chỉ sao chép lệnh. Nghe thì giống nhau, nhưng trong thực tế nó tạo ra hai cảm giác hoàn toàn khác: PAMM giống như “gửi tiền cho người khác lái xe hộ”, còn Copy Trading giống “ngồi xe của mình nhưng bật chế độ chạy theo xe dẫn đường”. Một khi bạn hiểu sự khác nhau về quyền kiểm soát, bạn sẽ thấy phần lớn câu chuyện “an toàn hơn” hay “nguy hiểm hơn” đều xoay quanh đúng điểm này.

Cổ phiếu “penny” ở Việt Nam 2026: Cơ hội thật, bẫy thật và cách tiếp cận thực tế để không biến mình thành “thanh khoản cho người khác”
15/02/2026
132 lượt đọc

Cổ phiếu “penny” ở Việt Nam 2026: Cơ hội thật, bẫy thật và cách tiếp cận thực tế để không biến mình thành “thanh khoản cho người khác” C

Ở Việt Nam, khái niệm “penny stock” thường không được định nghĩa theo kiểu một mốc giá cứng như trong vài thị trường khác, nhưng trong thực tế nhà đầu tư vẫn hiểu khá giống nhau: đó là nhóm cổ phiếu giá thấp, thường thuộc doanh nghiệp vốn hóa nhỏ, thanh khoản có thể “lúc có lúc không”, và biến động giá thường mạnh hơn phần còn lại của thị trường. Có những mã giá thấp vì doanh nghiệp thật sự yếu, kết quả kinh doanh xấu kéo dài, bị suy giảm niềm tin nên giá bị “đè” xuống. Nhưng cũng có những mã giá thấp vì giai đoạn thị trường xấu làm định giá co lại, hoặc doanh nghiệp nhỏ nhưng đang trong quá trình tái cấu trúc, có câu chuyện hồi phục. Chính sự lẫn lộn giữa hai nhóm này tạo ra cảm giác “đi tìm vàng trong cát”, khiến penny trở thành thứ cực kỳ hấp dẫn với nhà đầu tư thích cảm giác “mua rẻ”.

Xu hướng Algorithmic Trading 2026
11/02/2026
138 lượt đọc

Xu hướng Algorithmic Trading 2026 C

Nếu nhìn lại 3–5 năm gần đây, algorithmic trading đã thay đổi rất nhiều. Trước đây, chỉ cần một chiến lược có equity curve đẹp trên backtest là đủ để nhiều người tin rằng mình đã tìm ra “công thức in tiền”. Nhưng bước sang 2026, môi trường thị trường buộc người làm algo phải trưởng thành hơn. Biến động cao hơn, dòng tiền luân chuyển nhanh hơn, và sự cạnh tranh cũng dày đặc hơn. Điều này khiến lợi thế không còn nằm ở việc bạn có một mô hình phức tạp hay không, mà nằm ở việc hệ thống của bạn có thực sự sống sót được trong điều kiện xấu hay không.

Tâm Lý Tài Chính: Hiểu Các Thiên Kiến Trong Giao Dịch và Ứng Dụng Thực Tế Tại Thị Trường Việt Nam
10/02/2026
153 lượt đọc

Tâm Lý Tài Chính: Hiểu Các Thiên Kiến Trong Giao Dịch và Ứng Dụng Thực Tế Tại Thị Trường Việt Nam C

Tâm lý tài chính (Behavioral Finance) là một lĩnh vực nghiên cứu tâm lý học và kinh tế học, giúp giải thích tại sao những nhà đầu tư, dù có kỹ năng hay kiến thức, vẫn thường xuyên đưa ra các quyết định tài chính không hợp lý. Đặc biệt, tâm lý tài chính không đồng ý với giả thuyết của lý thuyết tài chính truyền thống, cho rằng mọi quyết định trong thị trường đều được đưa ra một cách hợp lý và tối ưu. Trái lại, tâm lý tài chính nhìn nhận rằng con người thường xuyên bị chi phối bởi cảm xúc, và điều này có thể dẫn đến những sai lầm trong giao dịch.

video-image

Truy Cập Miễn Phí Thư Viện Bot Tín Hiệu Giao Dịch Tự Động

Được nghiên cứu và phát triển bởi các chuyên gia từ QMTrade và cộng đồng nhà đầu tư chuyên nghiệp.

Truy cập ngay!