Lời nói đầu: Tại sao không làm coin, mà lại làm TradFi?
Những ai từng làm lưới trong giới crypto đều gặp cùng một cơn ác mộng: lưới vừa xây xong, giá lao dốc không phanh, vị thế bị kẹp toàn bộ, phải nạp thêm ký quỹ hoặc trực tiếp bị thanh lý. Sức hấp dẫn của giới crypto nằm ở biên độ tăng giảm không giới hạn, nhưng đó chính là kẻ thù lớn nhất của chiến lược lưới – lưới sinh ra để dành cho thị trường dao động, còn thị trường một chiều sẽ khiến nó thua sạch.
Vậy có loại tài sản nào vừa giữ đủ biến động trong ngày để lưới thường xuyên được kích hoạt, lại vừa không bất chợt lao lên 30%, 50% hoặc giẫm đạp? Câu trả lời là các sản phẩm TradFi.
Các sản phẩm phái sinh TradFi (Tài chính Truyền thống), bao gồm hợp đồng perpetual của S&P 500, Nasdaq, vàng, dầu thô, ngoại hối,... đều có nền tảng cơ bản thực sự đằng sau. Chỉ số cổ phiếu bị ràng buộc bởi lợi nhuận doanh nghiệp và chính sách Fed, hàng hóa chịu ảnh hưởng bởi cung cầu, tỷ giá hối đoái được quyết định bởi mối quan hệ tương đối giữa hai nền kinh tế chủ quyền. Những tài sản này sẽ không tự nhiên tăng gấp 5 lần trong một đêm, cũng không sụp đổ 80% chỉ vì một dòng tweet. Giá của chúng có "trọng lực" – trong ngắn hạn có thể dao động, nhưng trong dài hạn sẽ quay trở lại với nền tảng cơ bản.
Đặc tính này gần như là sự kết hợp hoàn hảo với chiến lược lưới: trong ngày có biến động bình thường từ 1% đến 3%, đủ để các ô lưới liên tục được kích hoạt; trong trường hợp cực đoan cũng không làm thủng lưới hoàn toàn, để lại đủ không gian đệm cho việc cắt lỗ và quản lý vốn. Chiến lược này được xây dựng dựa trên logic đó – tự động quét tất cả các sản phẩm TradFi, tìm ra một vài sản phẩm có biến động mạnh nhất hiện tại, xây dựng lưới tuần hoàn trên chúng, và tự động chuyển đổi sản phẩm khi cấu trúc biến động thay đổi.
Bối cảnh: Các sàn crypto âm thầm niêm yết loạt sản phẩm mới
Trong hai năm gần đây, các sàn crypto hàng đầu như OKX, Bitget đã âm thầm niêm yết một lượng lớn sản phẩm hợp đồng perpetual TradFi, phạm vi từ chỉ số cổ phiếu Mỹ (S&P 500, Nasdaq 100), cổ phiếu đơn lẻ (Apple, Nvidia, Tesla), đến hàng hóa (vàng, dầu thô, khí đốt tự nhiên), và ngoại hối (EUR, JPY). Nói đơn giản, bây giờ bạn có thể trực tiếp giao dịch cổ phiếu Mỹ, vàng, ngoại hối trên các sàn crypto, hoạt động 7×24 giờ liên tục, và có thể sử dụng đòn bẩy.
Điều này có ý nghĩa lớn đối với các nhà giao dịch định lượng. Một mặt, các sản phẩm này kế thừa các thuộc tính cơ bản của tài sản tài chính truyền thống, giá sẽ không tăng vọt hoặc giảm mạnh vô cớ; mặt khác, chúng được niêm yết trên sàn crypto, sử dụng cấu trúc giao dịch hợp đồng perpetual, thanh khoản dồi dào, phí giao dịch minh bạch, API hoàn toàn giống với các đồng coin thông thường, có thể tích hợp liền mạch vào các chiến lược định lượng.
Nói cách khác, nhóm sản phẩm này đã mở ra một không gian chênh lệch giá mới: sử dụng cơ sở hạ tầng giao dịch coin để thực hiện chênh lệch giá dao động trên các tài sản tài chính truyền thống. Chiến lược này được thiết kế riêng cho kịch bản đó – sử dụng chương trình để tự động lọc ra các sản phẩm có biến động mạnh nhất, chạy lưới trên chúng, kiếm lời từ dao động.
I. Logic chọn sản phẩm: Chỉ chọn sản phẩm có biến động lớn nhất
60% thành bại của lưới nằm ở việc chọn sản phẩm. Chọn đúng sản phẩm, các ô lưới được kích hoạt hàng chục lần mỗi ngày, lợi nhuận tự động tích lũy; chọn sai sản phẩm, lưới treo một tuần không động đậy, vốn nằm im mà vẫn chiếm ký quỹ.
Tiêu chuẩn chọn sản phẩm của chiến lược này chỉ có một chiều: biên độ dao động trung bình ngày của N nến ngày gần nhất.
Điểm biến động = Σ [ (High_i − Low_i) / Close_i × 100 ] / N
Mã nguồn được triển khai như sau, logic rất rõ ràng:
python
def score_symbol(info):
bars = exchange.GetRecords(info["sym"], PERIOD_D1, KLINE_COUNT + 2)
if not bars or len(bars) < 3:
return None
bars = bars[-KLINE_COUNT:]
atr_pcts = [(b["High"] - b["Low"]) / b["Close"] * 100 for b in bars if b["Close"] > 0]
avg_atr = sum(atr_pcts) / len(atr_pcts)
# Biên độ trung bình ngày phải ít nhất gấp 1.5 lần khoảng cách lưới, nếu không thì loại bỏ trực tiếp
if avg_atr < GRID_RATIO * 100 * 1.5:
return None
return {"sym": info["sym"], "atr": round(avg_atr, 3), "price": bars[-1]["Close"]}
Chiến lược sẽ định kỳ quét tất cả các sản phẩm TradFi và xếp hạng, chọn ra TOP_N sản phẩm có biên độ lớn nhất để giữ. Thiết kế ngưỡng vào rất quan trọng: biên độ trung bình ngày phải ít nhất gấp 1.5 lần khoảng cách lưới, nếu không giá trong một ngày có thể không vượt qua được một ô lưới, sẽ bị loại bỏ trực tiếp, tránh để vốn nằm trên các sản phẩm không hiệu quả làm hao phí ký quỹ.
Việc nhận dạng sản phẩm cũng cần xử lý đặc biệt. Trên nền tảng FMZ, các sản phẩm TradFi được phân biệt với cryptocurrency thông thường qua trường instCategory:
python
def scan_tradfi():
markets = exchange.GetMarkets()
for sym, mkt in markets.items():
if not sym.endswith("USDT.swap"):
continue
info = mkt.get("Info") or {}
# instCategory != 1 mới là sản phẩm TradFi
if int(info.get("instCategory", 1)) == 1:
continue
result.append({"sym": sym, "base": base, "cat": cat})
II. Cấu trúc lưới: Mua thấp bán cao, chênh lệch tuần hoàn
Trên sản phẩm đã chọn, lấy giá hiện tại làm trung tâm, mở rộng lên trên và xuống dưới một tỷ lệ nhất định, chia thành các ô lưới với khoảng cách cố định theo cấp số nhân. Dưới giá hiện tại, mỗi ô đặt một lệnh mua, chờ giá giảm xuống để khớp.
Mã nguồn chính để xây dựng lưới như sau:
python
def build_grid(sym, price):
low = price * (1 - LOWER_RANGE)
high = price * (1 + LOWER_RANGE)
# Chia ô theo cấp số nhân
grids, p = [], low
while p <= high * 1.001:
grids.append(round(p, g_states[sym]["pp"]))
p = p * (1 + GRID_RATIO)
for i in range(len(grids) - 1):
buy_p, sell_p = grids[i], grids[i + 1]
if buy_p < price:
oid = buy_open(sym, buy_p, GRID_VALUE) # Dưới giá hiện tại, đặt lệnh mua ngay
g["status"] = "pending_buy" if oid else "skip"
else:
g["status"] = "above" # Trên giá hiện tại tạm thời không đặt lệnh, chờ giá giảm
Đồng bộ lưới là vòng lặp cốt lõi của chiến lược, chịu trách nhiệm kiểm tra trạng thái từng ô và phản hồi:
python
def sync(sym):
for g in grids:
if g["status"] == "pending_buy":
s, deal, avgp = check_order(g["buy_oid"])
if s == "filled":
# Lệnh mua khớp → ngay lập tức đặt lệnh chốt lời
oid = sell_close(sym, g["sp"], ct)
g["status"] = "pending_sell"
elif g["status"] == "pending_sell":
s, deal, avgp = check_order(g["sell_oid"])
if s == "filled":
# Lệnh chốt lời khớp → tính lợi nhuận, đặt lại lệnh mua, tuần hoàn
profit = g["ct"] * cv * (avgp - g["fp"])
g_total_profit += profit
oid = buy_open(sym, g["bp"], GRID_VALUE)
g["status"] = "pending_buy"
Logic hoạt động rõ ràng: giá xuyên xuống ô kích hoạt mua, giá xuyên lên ô trên kích hoạt chốt lời, sau khi chốt lời đặt lại lệnh mua tại vị trí cũ, lặp đi lặp lại. Các trường hợp như lệnh bị rút, lệnh chốt lời bất thường đều có cơ chế tự động phát hiện và bổ sung, chiến lược sẽ không bị gián đoạn do các sự cố lệnh ngẫu nhiên.
III. Chuyển đổi thông minh: Luôn giữ vốn trên sản phẩm có biến động mạnh nhất
Nhịp điệu biến động của các sản phẩm TradFi sẽ dịch chuyển theo các sự kiện vĩ mô, mùa báo cáo tài chính, thay đổi chính sách. Có lúc vàng biến động mạnh nhất, nhưng một thời gian sau có thể là dầu thô hoặc hợp đồng tương lai S&P. Cố định một sản phẩm để chạy lưới, sớm muộn sẽ gặp tình trạng sản phẩm đó bước vào giai đoạn biến động thấp, ô lưới cả tuần không nhúc nhích.
Chiến lược này định kỳ (mặc định 48 giờ) đánh giá lại tất cả các sản phẩm TradFi, xác định xem có cần thay thế sản phẩm đang giữ hay không. Để tránh hao phí phí giao dịch do chuyển đổi thường xuyên vì sự khác biệt nhỏ, cơ chế hysteresis được đưa vào:
python
def needs_rebalance(new_selected):
cur_scores = {s["sym"]: s["atr"] for s in g_score_log if s["sym"] in g_active}
for s in new_selected:
if s["sym"] in g_active:
continue
weakest_atr = min(cur_scores.values())
threshold = weakest_atr * (1 + HYSTERESIS) # Phải cao hơn 20% mới kích hoạt hoán đổi
if s["atr"] >= threshold:
Log(f"{s['base']} ATR={s['atr']:.2f}% > ngưỡng={threshold:.2f}%, kích hoạt hoán đổi vị thế")
else:
Log(f"{s['base']} ATR={s['atr']:.2f}% < ngưỡng={threshold:.2f}%, giữ nguyên do trễ")
Chỉ khi biên độ trung bình ngày của ứng viên mới cao hơn 20% so với vị thế yếu nhất hiện tại, mới thực sự kích hoạt hoán đổi vị thế. Quy trình hoán đổi: trước tiên hủy tất cả lệnh treo của vị thế cũ, đóng toàn bộ vị thế, sau đó xây dựng lại lưới hoàn chỉnh trên vị thế mới, toàn bộ quá trình được tự động hóa.
4. Giải thích các tham số chính
-- TOP_N kiểm soát số lượng sản phẩm được nắm giữ đồng thời, mặc định là 3, tức là vốn được phân bổ đồng thời vào 3 sản phẩm có biên động cao nhất.
-- GRID_RATIO là tỷ lệ khoảng cách lưới, mặc định 1.5%, đại diện cho mức chốt lời mỗi ô lưới.
-- GRID_VALUE là số USDT cố định đầu tư cho mỗi ô lưới, mặc định 50, không điều chỉnh theo giá.
-- LOWER_RANGE xác định phạm vi giá mà lưới bao phủ, mặc định ±10% so với giá hiện tại.
-- REBALANCE_HOURS là chu kỳ đánh giá hoán đổi vị thế, mặc định 48 giờ.
-- HYSTERESIS là ngưỡng trễ, mặc định 20%, ngăn chặn hoán đổi quá thường xuyên.
-- LEVERAGE là đòn bẩy, khuyến nghị không quá 3 lần.
-- STOP_LOSS_RATIO là mức dừng lỗ tổng thể, khi tài khoản thua lỗ vượt quá tỷ lệ này sẽ tự động đóng vị thế và dừng, mặc định 30%.
-- KLINE_COUNT là số nến ngày dùng để đánh giá, mặc định lấy 20 nến gần nhất.
-- EXCLUDE_SYMBOLS là danh sách đen, nhập mã sản phẩm không muốn chiến lược chạm vào, nhiều mã cách nhau bằng dấu phẩy.
5. Kiểm soát rủi ro
Dừng lỗ tổng thể là tuyến phòng thủ cuối cùng của chiến lược, khi vốn chủ sở hữu giảm vượt quá tỷ lệ cài đặt so với giá trị ban đầu, tự động hủy lệnh, đóng vị thế và dừng mọi hoạt động tiếp theo:
python
def check_stop():
acc = exchange.GetAccount()
loss = (g_init_equity - acc.Equity) / g_init_equity
if loss >= STOP_LOSS_RATIO:
Log(f"Kích hoạt dừng lỗ! Thua lỗ={loss*100:.1f}% → Đóng toàn bộ vị thế và dừng")
for sym in list(g_active):
close_all(sym)
g_state = "STOP"
Giai đoạn chọn sản phẩm có bộ lọc đầu vào loại bỏ các sản phẩm có biên động thấp, đảm bảo mỗi sản phẩm đi vào chiến lược đều có biên độ trong ngày đủ lớn để vận hành lưới. Cơ chế danh sách đen cho phép loại trừ thủ công các sản phẩm có thanh khoản kém, spread bất thường hoặc hành vi không ổn định. Tất cả giá và khối lượng đặt lệnh đều được căn chỉnh chính xác theo yêu cầu độ chính xác của sàn, loại bỏ từ gốc các vấn đề từ chối lệnh do sai lệch độ chính xác. Vốn được phân bổ đều cho mỗi sản phẩm, tổn thất từ một sản phẩm không ảnh hưởng đến cấu trúc tổng thể danh mục.
6. Điều kiện thị trường phù hợp và lưu ý
Chiến lược này hoạt động tốt nhất trong thị trường dao động trong biên. Khi sản phẩm mục tiêu dao động liên tục trong vùng giá, các ô lưới được kích hoạt thường xuyên, lợi nhuận tích lũy theo thời gian, chiến lược hầu như không cần can thiệp thủ công.
Cần lưu ý, nếu giá tiếp tục giảm một chiều và phá vỡ biên dưới của lưới, tất cả lệnh mua sẽ bị kẹt, cần chờ giá quay lại hoặc kích hoạt dừng lỗ tổng thể. Một số sản phẩm TradFi trong giờ không giao dịch (ví dụ giờ nghỉ của thị trường chứng khoán Mỹ) thanh khoản giảm mạnh, lệnh treo có thể không khớp trong thời gian dài, đó là hiện tượng bình thường. Việc cài đặt GRID_RATIO nên tham khảo biên độ trung bình ngày của sản phẩm mục tiêu, khuyến nghị kiểm soát trong khoảng 1/3 đến 1/2 biên độ trung bình ngày, quá lớn thì tần suất kích hoạt thấp, quá nhỏ thì phí giao dịch ăn mòn lợi nhuận. Đòn bẩy khuyến nghị giữ trong phạm vi 3 lần, đòn bẩy quá cao trong điều kiện thị trường cực đoan sẽ tăng tốc thua lỗ, khó kiểm soát trước khi dừng lỗ được kích hoạt.
Kết luận
Logic cốt lõi của chiến lược này có thể tóm gọn trong một câu: Luôn đặt vốn vào các sản phẩm TradFi có biên động lớn nhất, để lưới trở thành người bạn của thời gian. Bốn mô-đun chọn sản phẩm, xây lưới, hoán đổi vị thế, kiểm soát rủi ro liên kết chặt chẽ với nhau, hoạt động tự động hoàn toàn. Thuộc tính cơ bản của các sản phẩm TradFi cung cấp nền tảng bảo vệ rằng giá không thể dịch chuyển vô hạn, trong khi sàng lọc biến động có lập trình đảm bảo vốn luôn được phân bổ vào các sản phẩm hiệu quả nhất. Khi tham số được cài đặt hợp lý, chiến lược có thể tạo ra lợi nhuận lưới ổn định trong hầu hết các điều kiện thị trường, đồng thời kiểm soát rủi ro giảm trong phạm vi chấp nhận được thông qua cơ chế dừng lỗ và trễ.
Bài viết này là mô tả chiến lược gốc từ nền tảng FMZ Quant, chỉ dành cho mục đích học tập và trao đổi, không cấu thành bất kỳ lời khuyên đầu tư nào.
- 1


