Chuyển đến nội dung
Tất cả chiến lược

Chiến lược

Danh mục tiếp diễn sau nến xung lực trong ngày được đa dạng hóa trên các mã lớn (long-short, Binance USD-M, 1H, lệnh vào rời rạc theo sự kiện, giới hạn mỗi vị thế + tổng mức phơi nhiễm, mục tiêu ATR vượt phí)

Kết quả: Đã hủy bỏ

DiversifiedImpulseBarContinuationPortfolioLS1H

Đã thực sự khắc phục vấn đề giao dịch thưa và tập trung vào một sự kiện: 13,644 giao dịch trên 10 mã lấp đầy mọi cửa sổ, với lệnh vào rời rạc an toàn cho bộ máy và giới hạn mỗi vị thế/tổng mức phơi nhiễm (không có sai…

Giả thuyết

Chiến lược LONG-SHORT, MULTI-INSTRUMENT CONTINUATION trong ngày vận hành EXPLICITLY-SANCTIONED của nhà máy, khái quát tín hiệu tiếp diễn sau nến xung lực thành danh mục DIVERSIFIED PORTFOLIO trên khoảng 10 mã Binance USD-M có lịch sử dữ liệu dài (BTC, ETH, SOL, BNB, XRP, ADA, DOGE, AVAX, LINK, LTC), với nến 1-HOUR. Từng tài sản được theo dõi độc lập; khi một tài sản xuất hiện cú đẩy định hướng có khối lượng cao, lớn bất thường (nến xung lực), chiến lược mở một vị thế riêng theo hướng đó để nắm bắt đà tiếp diễn……Xem thêmThu gọn

Chiến lược LONG-SHORT, MULTI-INSTRUMENT CONTINUATION trong ngày vận hành EXPLICITLY-SANCTIONED của nhà máy, khái quát tín hiệu tiếp diễn sau nến xung lực thành danh mục DIVERSIFIED PORTFOLIO trên khoảng 10 mã Binance USD-M có lịch sử dữ liệu dài (BTC, ETH, SOL, BNB, XRP, ADA, DOGE, AVAX, LINK, LTC), với nến 1-HOUR. Từng tài sản được theo dõi độc lập; khi một tài sản xuất hiện cú đẩy định hướng có khối lượng cao, lớn bất thường (nến xung lực), chiến lược mở một vị thế riêng theo hướng đó để nắm bắt đà tiếp diễn trong thời gian ngắn. Đây là hướng đổi mới được chuyên gia phân tích ủng hộ (nhóm tiếp diễn xung lực nhiều lần được đánh dấu là “khái quát hóa”; đã có các trường hợp đơn tài sản ETH-1H, SOL-1H và BTC-1H-HL), được mở rộng thành PORTFOLIO nhằm khắc phục hai nguyên nhân khiến hầu hết thử nghiệm gần đây bị loại bỏ: (1) LOW BREADTH / tập trung vào một sự kiện (danh mục 3 mã HL đạt 68% DD do beta đòn bẩy; các cú phá vỡ đơn mã tập trung vào 2021) — được khắc phục vì sự kiện xung lực xảy ra vào các thời điểm khác nhau trên những mã tương quan không hoàn hảo, giúp đa dạng hóa TRADE STREAM thay vì chồng chất beta định hướng tương quan; và (2) TRADE-SPARSITY (giao dịch Donchian CoinM với 26 lệnh không đủ dữ liệu cho kiểm thử cuốn chiếu; các cửa sổ OOS bị trống) — được khắc phục vì khoảng 10 mã × xung lực 1H thường xuyên tạo ra hàng trăm giao dịch mỗi năm, lấp đầy mọi cửa sổ kiểm thử cuốn chiếu/giữ lại. Đây NOT phải là biến thể tinh chỉnh rổ động lượng bị cấm (nhóm tín hiệu khác: tiếp diễn sau cú đẩy riêng biệt trong ngày, không phải trạng thái xu hướng SMA/lợi nhuận quá khứ), NOT trường hợp TSM đơn tài sản (đã thất bại), NOT phá vỡ chậm (hỏng theo chế độ thị trường), NOT hồi quy về trung bình (đã thất bại), NOT quyền chọn/giao ngay (bị chặn). Thiết kế an toàn với engine: vào lệnh theo sự kiện riêng biệt, chỉ vào/thoát một lần, tối đa một vị thế mỗi tài sản, giới hạn giá trị danh nghĩa mỗi vị thế và giới hạn mức phơi nhiễm GROSS của danh mục — không bao giờ điều chỉnh quy mô liên tục theo biến động/đảo vị thế ròng (cấu trúc từng gây ra sai lệch phóng đại giá trị danh nghĩa). Tỷ lệ mục tiêu rộng/dừng lỗ hẹp (TP >= SL) để tránh bẫy tỷ lệ lợi nhuận:rủi ro do giá bật lại sau cú rơi. Ba tham số cốt lõi.

Lần lặp 4 khắc phục lỗi hết thời gian kiểm thử sơ bộ của 300s Layer-3, không WITHOUT thay đổi logic giao dịch. Phiên bản trước tính lại ATR, khối lượng trung bình và lực đẩy từ các lát cắt danh sách nến (có cấp phát mảng numpy và nhiều lời gọi .as_double() FFI) cho cả 10 công cụ trên mỗi nến EVERY — một thao tác nặng trên mỗi nến, nhân lên qua hàng trăm nghìn nến 1H trong lịch sử dài. Đường xử lý nóng hiện có độ phức tạp O(1) mỗi nến: TR cuộn và SUMS khối lượng được duy trì tăng dần trong các deque có giới hạn,……Xem thêmThu gọn

Lần lặp 4 khắc phục lỗi hết thời gian kiểm thử sơ bộ của 300s Layer-3, không WITHOUT thay đổi logic giao dịch. Phiên bản trước tính lại ATR, khối lượng trung bình và lực đẩy từ các lát cắt danh sách nến (có cấp phát mảng numpy và nhiều lời gọi .as_double() FFI) cho cả 10 công cụ trên mỗi nến EVERY — một thao tác nặng trên mỗi nến, nhân lên qua hàng trăm nghìn nến 1H trong lịch sử dài. Đường xử lý nóng hiện có độ phức tạp O(1) mỗi nến: TR cuộn và SUMS khối lượng được duy trì tăng dần trong các deque có giới hạn, cập nhật đúng một lần trên mỗi nến mới của từng tài sản trong _roll_update (loại trùng theo dấu thời gian); phần quản lý đọc trực tiếp _atr_of/_avg_vol_of/_thrust_of từ các tổng đang chạy này. numpy đã bị loại khỏi đường xử lý nóng (dùng phép toán thuần Python). Tín hiệu RETURNED của tài sản chính giữ nguyên phép tính dựa trên các nến trước đó (_thrust_direct), nên tín hiệu liên tục, biến thiên đã vượt qua Layers 1-2 vẫn giữ nguyên hành vi đến từng byte; cập nhật _touch không qua cổng cũng giữ tín hiệu hoạt động trong proxy Layer-2, nơi không có order_factory/bộ nhớ đệm. ATR cuộn == trung bình của cùng các TR và khối lượng trung bình cuộn == trung bình của cùng các khối lượng, vì vậy lệnh vào/thoát và số giao dịch không đổi — chỉ chi phí mỗi nến giảm từ O(cửa sổ x công cụ) xuống O(công cụ), với hằng số nhỏ hơn nhiều.

Danh mục đa dạng hóa theo động lượng tiếp diễn trong ngày là khoản lỗ ròng rõ rệt, có lợi thế thấp hơn chi phí giao dịch — không đáng dành 2 giờ tối ưu hóa. Qua 13,644 giao dịch: total_return -95.05%, CAGR -45.6%, max_drawdown 96.24% (CI đến 100%, vượt ngưỡng dừng cứng L19, nhóm chế độ bình lặng -100%), profit_factor 0.87, kỳ vọng -$7.20/giao dịch, avg_trade_return_pct 0.045% (thấp hơn mức phí sàn Binance 0.15% USD-M, L22, hoa hồng chiếm 12.4% tổng lãi gộp). Sharpe là -0.088 (CI [-1.02, 0.61] khoảng tin cậy cắt……Xem thêmThu gọn

Danh mục đa dạng hóa theo động lượng tiếp diễn trong ngày là khoản lỗ ròng rõ rệt, có lợi thế thấp hơn chi phí giao dịch — không đáng dành 2 giờ tối ưu hóa. Qua 13,644 giao dịch: total_return -95.05%, CAGR -45.6%, max_drawdown 96.24% (CI đến 100%, vượt ngưỡng dừng cứng L19, nhóm chế độ bình lặng -100%), profit_factor 0.87, kỳ vọng -$7.20/giao dịch, avg_trade_return_pct 0.045% (thấp hơn mức phí sàn Binance 0.15% USD-M, L22, hoa hồng chiếm 12.4% tổng lãi gộp). Sharpe là -0.088 (CI [-1.02, 0.61] khoảng tin cậy cắt qua mức không), PSR 0.41, và thua lỗ trong 6 trên 7 năm (chỉ 2022 năm có lãi). Thiết kế danh mục DID khắc phục hai dạng thất bại nhắm đến — giao dịch thưa (hàng trăm giao dịch/năm) và tập trung vào một sự kiện; các lệnh vào rời rạc an toàn với bộ máy, không có thanh lý — nhưng đa dạng hóa không kiềm chế được rủi ro đuôi (độ nhọn 246, biến động hàng tháng +365%/-78%/-50%, 37 khoản lỗ liên tiếp) và quan trọng là không tạo được lợi thế ròng dương trên mỗi giao dịch. Đây là nhóm tiếp diễn định hướng thuần L30/L63 OHLCV (0 trường hợp sống sót); khái quát hóa tín hiệu động lượng của một mã đơn lẻ sang 10 mã làm tăng số giao dịch, nhưng lợi thế mỗi giao dịch vẫn thấp hơn phí. Không cách tinh chỉnh hệ số động lượng/dừng/chốt lời nào nâng được lợi thế mỗi giao dịch 0.045% vượt mức phí hay khắc phục mức sụt giảm 96%. Mẫu hình thất bại: tiếp diễn đa công cụ fee_edge/no_edge OHLCV với >50% DD.

Triển khai

Chiến lược tiếp diễn nến xung lực long-short trong ngày, vận hành như danh mục đa dạng hóa trên 10 mã Binance USD-M chủ chốt có dữ liệu lịch sử dài, với nến 1H. Theo dõi riêng từng tài sản; khi lực đẩy có hướng và khối lượng cao (|thân nến|/ATR >= impulse_atr_mult AND khối lượng >= vol_mult x trung bình), mở một vị thế rời rạc theo hướng lực đẩy, thoát bằng mức dừng ATR hẹp, mục tiêu ATR rộng hơn hoặc giới hạn thời gian nắm giữ tối đa. Giới hạn giá trị danh nghĩa mỗi vị thế cùng giới hạn tổng mức phơi nhiễm gộp của danh mục; tối đa một vị thế trên mỗi tài sản.

Kết quả xác minh

CLEAN RESTART 2026-09-04 — lịch sử kết luận và hồ sơ học tập của lượt chạy này đã bị xóa, và lượt chạy được khởi động lại từ bước xác minh. Lần từ bỏ trước bắt nguồn từ quy trình, không phải thị trường: bộ kiểm thử Layer-2 gán sai các hàm trợ giúp @staticmethod (đã sửa), QA đưa ra kết luận hiệu suất cuối cùng dựa trên kiểm thử sơ bộ chưa tối ưu (đã bỏ — QA hiện chỉ đánh giá tính đúng đắn), và các lần hết thời gian trong môi trường sandbox do thiếu lượt chạy kiểm thử lịch sử (đã sửa). Giả thuyết và mã chiến lược không thay đổi. Hãy đánh giá mã dựa trên chính nó; hiệu suất sẽ được xác định sau bằng kiểm thử lịch sử đầy đủ và bộ tối ưu hóa.

Đánh giá backtest

Sharpe
-0.09
Tổng lợi nhuận
-95.05%
Sụt giảm tối đa
96.24%
Tổng số lệnh
13644
Tỷ lệ thắng
38.6%
Hệ số lợi nhuận
0.87

Đã thực sự khắc phục vấn đề giao dịch thưa và tập trung vào một sự kiện: 13,644 giao dịch trên 10 mã lấp đầy mọi cửa sổ, với lệnh vào rời rạc an toàn cho bộ máy và giới hạn mỗi vị thế/tổng mức phơi nhiễm (không có sai lệch thổi phồng giá trị danh nghĩa, không bị thanh lý)

Lỗ ròng: total_return -95.05%, CAGR -45.6%, max_drawdown 96.24% (CI đến 100%) — vượt ngưỡng dừng cứng 50% (L19)

Lợi thế thấp hơn phí: avg_trade_return_pct 0.045% (dưới ngưỡng phí 0.15%, L22), profit_factor 0.87, kỳ vọng -$7.20/giao dịch, phí hoa hồng chiếm 12.4% tổng lợi nhuận gộp

Không có lợi thế đáng kể sau điều chỉnh rủi ro: Sharpe -0.088 (CI [-1.02, 0.61] khoảng tin cậy cắt qua mức không), PSR 0.41; thua lỗ trong 6 trên 7 năm (chỉ 2022 năm có lãi).

Đa dạng hóa không làm giảm rủi ro đuôi: độ nhọn 246, biến động hàng tháng +365%/-78%/-50%, 37 lệnh thua liên tiếp — bị chi phối bởi ngoại lệ, không có lợi thế ổn định

L30/L63 thuộc lớp tiếp diễn định hướng thuần OHLCV (0 sống sót); khả năng khái quát hóa danh mục làm tăng số giao dịch nhưng không cải thiện lợi thế mỗi giao dịch

Lịch sử vòng lặp

Xác minh thất bại (Layer 2 — kịch bản tổng hợp): Tham số đã dùng: ['assets', 'vol_mult', 'atr_period', 'vol_window', 'tp_atr_mult', 'min_notional', 'max_hold_bars', 'qty_precision', 'stop_atr_mult', 'gross_cap_frac', 'impulse_atr_mult', 'per_position_frac', 'default_qty_precision'] Kiểm tra __init__ có thiết lập mọi thuộc tính từ self.parameters.get() hay không. - steady_uptrend: TypeError: super(type, obj): obj phải là một thực thể hoặc kiểu con của kiểu đó (dấu thời gian nến: 1735689600000) - steady_downtrend:……Xem thêmThu gọn

Xác minh thất bại (Layer 2 — kịch bản tổng hợp): Tham số đã dùng: ['assets', 'vol_mult', 'atr_period', 'vol_window', 'tp_atr_mult', 'min_notional', 'max_hold_bars', 'qty_precision', 'stop_atr_mult', 'gross_cap_frac', 'impulse_atr_mult', 'per_position_frac', 'default_qty_precision'] Kiểm tra __init__ có thiết lập mọi thuộc tính từ self.parameters.get() hay không. - steady_uptrend: TypeError: super(type, obj): obj phải là một thực thể hoặc kiểu con của kiểu đó (dấu thời gian nến: 1735689600000) - steady_downtrend: TypeError: super(type, obj): obj phải là một thực thể hoặc kiểu con của kiểu đó (dấu thời gian nến: 1735689600000) - flat_ranging: TypeError: super(type, obj): obj phải là một thực thể hoặc kiểu con của kiểu đó (dấu thời gian nến: 1735689600000) - volatility_spike: TypeError: super(type, obj): obj phải là một thực thể hoặc kiểu con của kiểu đó (dấu thời gian nến: 1735689600000) - zero_volume: TypeError: super(type, obj): obj phải là một thực thể hoặc kiểu con của kiểu đó (dấu thời gian nến: 1735689600000) - price_gap: TypeError: super(type, obj): obj phải là một thực thể hoặc kiểu con của kiểu đó (dấu thời gian nến: 1735689600000)

Xác minh thất bại (Layer 3 — kiểm thử lịch sử trong sandbox): kiểm thử sơ bộ vượt quá giới hạn thời gian thực 300s. Điều này gần như luôn có nghĩa là công việc trên mỗi nến tăng theo độ dài lịch sử — ví dụ quét lại toàn bộ chuỗi funding/dữ liệu bổ sung, hoặc dựng lại danh sách rồi gọi min()/sorted() bên trong calculate_signal()/on_bar() ở mỗi nến. Tính trước các mảng dấu thời gian đã sắp xếp ONCE trong __init__ và dùng bisect, hoặc lưu kết quả tra cứu theo dấu thời gian, để chi phí mỗi nến là O(log n) thay vì O(n).

Xác minh thất bại (Layer 2 — kịch bản tổng hợp): Tham số đã dùng: ['assets', 'vol_mult', 'atr_period', 'vol_window', 'tp_atr_mult', 'min_notional', 'max_hold_bars', 'qty_precision', 'stop_atr_mult', 'gross_cap_frac', 'impulse_atr_mult', 'per_position_frac', 'default_qty_precision'] Kiểm tra __init__ có thiết lập mọi thuộc tính từ self.parameters.get() hay không. - steady_uptrend: TypeError: DiversifiedImpulseBarContinuationPortfolioLS1H._bar_ts() nhận 1 đối số vị trí nhưng được truyền 2 đối số (dấu thời gian nến:……Xem thêmThu gọn

Xác minh thất bại (Layer 2 — kịch bản tổng hợp): Tham số đã dùng: ['assets', 'vol_mult', 'atr_period', 'vol_window', 'tp_atr_mult', 'min_notional', 'max_hold_bars', 'qty_precision', 'stop_atr_mult', 'gross_cap_frac', 'impulse_atr_mult', 'per_position_frac', 'default_qty_precision'] Kiểm tra __init__ có thiết lập mọi thuộc tính từ self.parameters.get() hay không. - steady_uptrend: TypeError: DiversifiedImpulseBarContinuationPortfolioLS1H._bar_ts() nhận 1 đối số vị trí nhưng được truyền 2 đối số (dấu thời gian nến: 1735689600000) - steady_downtrend: TypeError: DiversifiedImpulseBarContinuationPortfolioLS1H._bar_ts() nhận 1 đối số vị trí nhưng được truyền 2 đối số (dấu thời gian nến: 1735689600000) - flat_ranging: TypeError: DiversifiedImpulseBarContinuationPortfolioLS1H._bar_ts() nhận 1 đối số vị trí nhưng được truyền 2 đối số (dấu thời gian nến: 1735689600000) - volatility_spike: TypeError: DiversifiedImpulseBarContinuationPortfolioLS1H._bar_ts() nhận 1 đối số vị trí nhưng được truyền 2 đối số (dấu thời gian nến: 1735689600000) - zero_volume: TypeError: DiversifiedImpulseBarContinuationPortfolioLS1H._bar_ts() nhận 1 đối số vị trí nhưng được truyền 2 đối số (dấu thời gian nến: 1735689600000) - price_gap: TypeError: DiversifiedImpulseBarContinuationPortfolioLS1H._bar_ts() nhận 1 đối số vị trí nhưng được truyền 2 đối số (dấu thời gian nến: 1735689600000)

Stratmill là công cụ nghiên cứu và giao dịch thử nghiệm (paper trading), không phải lời khuyên tài chính hay một nhà môi giới. Kết quả kiểm thử ngược và giao dịch thử nghiệm chỉ mang tính giả định. Giao dịch tiềm ẩn rủi ro thua lỗ.