Almgren-Chriss không màu mè: Thực thi tối ưu bạn có thể triển khai trong một buổi chiều
Almgren và Chriss (2001), "Optimal execution of portfolio transactions" (Journal of Risk 3(2), 5–39), có lẽ là bài báo được trích dẫn nhiều nhất trong nghiên cứu về thực thi lệnh và cũng là một trong những bài bị triển khai sai nhiều nhất. Phần lớn code "Almgren-Chriss" trôi nổi ngoài kia thực chất chỉ là một bộ lập lịch TWAP kèm vài dòng comment. Phần lớn bài blog về nó bỏ qua phần suy diễn, vẫy tay qua loa về hàm sinh, và chưa bao giờ chạm tới phần thực sự quan trọng trong production: các tham số đến từ đâu.
Bài viết này làm trọn vẹn cả quá trình. Các giả định của mô hình, được trình bày trung thực. Quỹ đạo dạng đóng, được suy diễn chứ không chỉ khẳng định. Đường biên hiệu quả và cách chọn tham số ngại rủi ro. Và việc hiệu chỉnh ba đầu vào — impact tạm thời , impact vĩnh viễn , độ biến động — từ dữ liệu order book và trade của Binance, kèm code Python chạy được và một thảo luận thẳng thắn về lý do vì sao việc fit lại nhiễu đến vậy. Đây là xương sống tư duy của mọi thứ khác trong lĩnh vực thực thi lệnh: TWAP, VWAP, và POV là các trường hợp đặc biệt hoặc các biến thể heuristic (xem TWAP, VWAP, POV: các thuật toán thực thi mà ai cũng dùng), còn các phương pháp ML hiện đại — bộ lập lịch reinforcement learning và mô hình impact bằng neural network — là những nỗ lực nới lỏng chính xác các giả định mà chúng ta sắp viết ra dưới đây.
Bối cảnh: mô hình thực sự giả định điều gì
Bạn đang nắm giữ đơn vị tài sản (ví dụ 100 BTC) và phải thanh lý hoàn toàn trước thời điểm . Chia thành khoảng có độ dài . Biến quyết định của bạn là quỹ đạo tồn kho , với các lệnh trade được thực thi trong khoảng .
Ba giả định gánh toàn bộ mô hình:
1. Bước ngẫu nhiên số học (arithmetic random walk). Giá không bị nhiễu loạn tuân theo
trong đó là các biến chuẩn hóa độc lập cùng phân phối, và là độ biến động tuyệt đối (đô-la trên mỗi đơn vị thời gian mũ , không phải phần trăm). Số học, không phải hình học — trong vài giờ, sự khác biệt là không đáng kể, và bước đi số học giữ cho đại số vẫn tuyến tính-bậc hai. Không có drift: Almgren và Chriss có bàn tới thành phần drift, nhưng đối với một lệnh thanh lý trong ngày, ước lượng alpha của bạn trong 4 giờ gần như luôn chỉ là nhiễu, và việc đặt nó bằng không là lựa chọn mặc định trung thực nhất.
2. Impact vĩnh viễn tuyến tính. : giao dịch với tốc độ dịch chuyển giá một cách vĩnh viễn, tỷ lệ thuận, và sự dịch chuyển đó không bao giờ suy giảm. Mỗi đơn vị bạn bán đẩy giá mid xuống thêm mãi mãi. Điều này trông có vẻ thô sơ, nhưng có một lý do sâu xa để giữ nó tuyến tính: Huberman và Stanzl (2004) đã chứng minh rằng impact vĩnh viễn phi tuyến theo kích thước lệnh sẽ cho phép tồn tại các chiến lược round-trip có lợi nhuận kỳ vọng dương — tức thao túng giá. Impact vĩnh viễn tuyến tính không phải là một sự đơn giản hóa cho tiện; đó là lựa chọn duy nhất không có arbitrage trong lớp mô hình này.
3. Impact tạm thời tuyến tính. Giá mà bạn thực sự nhận được trong khoảng là
nắm bắt một nửa spread bid-ask cộng với phí; là độ dốc của chi phí biên khi đòi hỏi thanh khoản với tốc độ . Impact tạm thời chỉ ảnh hưởng đến fill của chính bạn và biến mất ngay lập tức — sổ lệnh được bù đắp đầy đủ trước khi child order tiếp theo của bạn được gửi đi. Cả ba từ "tuyến tính", "ngay lập tức", "đầy đủ" đều sai trong thị trường thực, và phần cuối bài viết sẽ nói về mức độ sai đó. Nhưng trước hết, hãy xem cái lợi khi chấp nhận chúng.
Chi phí và phương sai của một quỹ đạo
Cộng dồn các fill, trừ đi từ mức giá đánh dấu ban đầu , ta thu được implementation shortfall. Kỳ vọng và phương sai của nó theo nhiễu là:
với (một hiệu chỉnh rời rạc hóa biến mất khi ).
Hai điểm quan sát mà đa số triển khai bỏ sót:
- Chi phí vĩnh viễn không phụ thuộc vào quỹ đạo. Với impact vĩnh viễn tuyến tính, không suy giảm, bạn phải trả cùng một khoản phí vĩnh viễn bất kể lập lịch thế nào. Việc tối ưu hóa hoàn toàn là cuộc đấu giữa thành phần chi phí tạm thời (muốn giao dịch chậm, đều — được tối thiểu hóa bởi , tức TWAP) và thành phần phương sai (muốn tồn kho của bạn biến mất càng sớm càng tốt — được tối thiểu hóa bằng thanh lý ngay lập tức).
- Thành phần phương sai được trọng số theo tồn kho, không theo lượng giao dịch. Rủi ro tích lũy trên những gì bạn vẫn còn nắm giữ, , chứ không phải trên những gì bạn giao dịch. Đây là lý do vì sao tính khẩn cấp làm lịch trình dồn về phía đầu.
Dạng đóng: sinh, cosh, và tham số khẩn cấp
Almgren-Chriss tối thiểu hóa hàm mục tiêu mean-variance
trong đó là mức ngại rủi ro tính theo đơn vị 1/đô-la. Đặt cho các điểm nội bộ. Thành phần tạm thời đóng góp sai phân bậc hai của , thành phần phương sai đóng góp chính , và ta thu được một phương trình sai phân tuyến tính bậc hai:
Đây là tương tự rời rạc của , và với điều kiện biên , , nghiệm có dạng hyperbolic:
trong đó nghiệm của , mà với nhỏ chỉ đơn giản là .

Toàn bộ chiến lược được nén lại thành một con số duy nhất:
chính là mức khẩn cấp. Nghịch đảo của nó là thời gian đặc trưng của lệnh: khung thời gian mà việc giữ rủi ro tồn kho để tiết kiệm chi phí impact là đáng giá. Lưu ý rằng không phụ thuộc vào: kích thước lệnh và hạn chót . Việc khung thời gian nội tại của lệnh của bạn là 20 phút hay 6 giờ được quyết định hoàn toàn bởi mức ngại rủi ro, độ biến động và thanh khoản. Nếu , hạn chót của bạn không còn quan trọng — mô hình sẽ tự thanh lý theo lịch trình riêng của nó và phần đuôi của khung thời gian không được dùng đến. Nếu , hạn chót trở thành ràng buộc chính và bạn thực chất đang chạy TWAP.
Giới hạn trung lập rủi ro chính là TWAP — đây là lý do TWAP tồn tại
Cho , khi đó . Rồi và
Quỹ đạo tối ưu suy biến thành đường thẳng: lượng bằng nhau trong các khoảng thời gian bằng nhau. TWAP không phải là một heuristic tình cờ hiệu quả; nó chính là nghiệm tối ưu chính xác của mô hình Almgren-Chriss cho một trader trung lập rủi ro với impact tuyến tính. Mỗi khi ai đó chạy TWAP, họ đang ngầm khẳng định : "Tôi không quan tâm đến phương sai của shortfall, chỉ quan tâm đến giá trị kỳ vọng của nó." Đó là một lập trường có thể biện hộ được cho các lệnh nhỏ và khung thời gian ngắn. Nhưng nó là một lập trường kỳ lạ khi thanh lý 5% khối lượng giao dịch hàng ngày trong 8 giờ đối với một tài sản có độ biến động hàng ngày 4%, mà đó lại chính xác là trường hợp người ta vẫn hay chạy TWAP. Giới hạn ngược lại cho với mọi : xả hết toàn bộ trong khoảng đầu tiên, trả bất kể giá nào. Giữa hai thái cực này, nội suy: gần như không phân biệt được với TWAP, là dồn tải mạnh về phía đầu.
Đường biên hiệu quả của thực thi
Với mỗi , bạn thu được một quỹ đạo, một chi phí kỳ vọng , và một phương sai . Quét vẽ nên một đường cong trên mặt phẳng — đường biên hiệu quả của thực thi, tương tự trực tiếp với Markowitz. Nó lồi và giảm dần: phương sai thấp hơn luôn đồng nghĩa với chi phí shortfall kỳ vọng cao hơn, với lợi ích biên giảm dần rõ rệt. Tại điểm trên đường biên được chọn bởi một cho trước, mức ngại rủi ro chính là độ dốc (âm) của tiếp tuyến: .

Đường biên này định hình lại câu hỏi " là bao nhiêu?" — mà không ai có thể trả lời bằng trực giác nội tâm — thành "tôi muốn đánh đổi chi phí/rủi ro theo tỷ lệ nào?", một câu mà một desk giao dịch thực sự có thể trả lời được. Ba cách thực tế để chọn điểm đó:
- Lập luận theo chi phí biên. Đi dọc đường biên và tự hỏi: "chuyển từ điểm này sang điểm kế tiếp, tôi trả thêm đô-la chi phí kỳ vọng để giảm đô-la độ lệch chuẩn của shortfall — tôi có chấp nhận đánh đổi đó không?" Điểm gấp khúc của đường biên thường rõ ràng trong khoảng sai số hệ số 2, và quỹ đạo không nhạy với ở độ phân giải đó.
- Ngân sách rủi ro. Cố định một độ lệch chuẩn shortfall tối đa chấp nhận được (ví dụ "1-sigma một ngày của vị thế còn lại phải nằm dưới 15 bps của giá trị notional") và chọn quỹ đạo rẻ nhất thỏa mãn điều kiện đó. Đây là một bài toán có ràng buộc mà nhân tử Lagrange của nó chính là .
- Nhắm mục tiêu theo thời gian đặc trưng. Chọn trực tiếp ("lệnh này nên có half-life 90 phút") rồi suy ngược ra . Đây là điều mà đa số practitioner ngầm làm khi họ chỉnh thanh trượt "mức khẩn cấp".
Một ví dụ tính toán cụ thể với các con số ta sẽ biện minh trong phần hiệu chỉnh. Bán BTC ở S_0 = \100{,}000T = 4\sigma = $600\sqrt{\text{giờ}}\eta = 1.0\ $\cdot\text{giờ}/\text{BTC}\lambda = 10^{-6}\ $^{-1}$. Khi đó
Lịch trình tối ưu bán 46.2 BTC trong giờ đầu tiên (TWAP: 25). Chi phí tạm thời: \eta \int_0^T v(t)^2 dt \approx \3{,}290$2{,}500$53{,}000$69{,}300undefined10 triệu, bạn cắt giảm rủi ro shortfall đi 23%. Đó chính là toàn bộ nội dung của mô hình trong một câu: nó định giá bảo hiểm, và để bạn quyết định có mua hay không.
Bản thân quỹ đạo chỉ gọn trong mười dòng Python:
import numpy as np
def almgren_chriss(X, T, N, sigma, eta, gamma, lam):
"""Optimal liquidation trajectory (discrete AC 2001)."""
tau = T / N
eta_t = eta - 0.5 * gamma * tau # tilde-eta
kappa_t2 = lam * sigma**2 / eta_t # tilde-kappa^2
kappa = np.arccosh(0.5 * kappa_t2 * tau**2 + 1) / tau
t = np.arange(N + 1) * tau
x = X * np.sinh(kappa * (T - t)) / np.sinh(kappa * T)
n = x[:-1] - x[1:] # child order sizes
E = 0.5 * gamma * X**2 + (eta_t / tau) * np.sum(n**2)
V = sigma**2 * tau * np.sum(x[1:]**2)
return x, n, E, V
x, n, E, V = almgren_chriss(X=100, T=4, N=48, sigma=600,
eta=1.0, gamma=0.3, lam=1e-6)
print(f"first-hour qty: {n[:12].sum():.1f} BTC, "
f"E=${E:,.0f}, std=${np.sqrt(V):,.0f}")
Quét lam trên np.logspace(-8, -4, 50) và vẽ theo — đó chính là đường biên của bạn, và toàn bộ bề mặt quyết định gói gọn trong một biểu đồ có thể đưa cho một ủy ban rủi ro xem.
Hiệu chỉnh: , , từ dữ liệu Binance
Đây là chỗ 90% các triển khai âm thầm chết yểu. Công thức quỹ đạo là tầm thường; các tham số thì không. Ba đại lượng, ba bài toán ước lượng khác nhau.

: cái dễ
Độ biến động tuyệt đối trên căn bậc hai của giờ, từ lợi suất giá mid. Dùng nến 1 phút và scale lên; ở tần suất lấy mẫu mịn hơn, nhiễu vi cấu trúc (bid-ask bounce) làm phương sai thực hiện bị lệch lên trên. Ước lượng này khá vững — vol là tham số duy nhất bạn sẽ làm đúng.
: impact tạm thời từ sổ lệnh và từ các trade
Hai hướng bổ trợ nhau. Hướng A — đi qua sổ lệnh L2. Từ các snapshot độ sâu, tính chi phí của một cú quét marketable giả định với kích thước : VWAP của các mức bị tiêu thụ trừ đi mid. Fit cho ra impact tức thời trên mỗi BTC. Để chuyển sang theo tốc độ của mô hình, bạn phải giả định một thời gian bù đắp sổ lệnh (thường vào khoảng 10–60 giây với BTCUSDT): giao dịch với tốc độ tiêu thụ mỗi chu kỳ làm mới, vậy nên . Chính giả định đó — bù đắp tức thời, đầy đủ theo một đồng hồ cố định — là kẽ hở mà Obizhaeva-Wang chui vào; sẽ nói thêm bên dưới. Hướng B — hồi quy slippage thực hiện theo tỷ lệ tham gia. Chia dòng lệnh chủ động (taker) thành các bin 1 phút; với mỗi bin, hồi quy VWAP phía taker trừ mid mở đầu theo tốc độ khối lượng taker. Hướng B đo lường những gì thị trường thực sự tính phí đối với các aggressor; Hướng A đo lường những gì sổ lệnh nghỉ sẽ tính phí ngay lúc này. Khi hai kết quả chênh nhau tới hệ số 3, hãy tin B cho mức chi phí và A cho hình dạng trong ngày.
: impact vĩnh viễn qua hồi quy kiểu Kyle
Hồi quy thay đổi giá mid theo dòng lệnh taker ròng có dấu qua các cửa sổ 5 phút:
Sau đó kiểm tra xem impact có bị đảo ngược một cửa sổ sau đó không — thành phần không đảo ngược mới là "vĩnh viễn" ở khung thời gian giao dịch của bạn. Đây là thứ nhiễu nhất trong ba tham số, bỏ xa hai cái kia.
Code chạy được, chỉ dùng các endpoint REST công khai của Binance:
import requests, numpy as np, pandas as pd
B = "https://api.binance.com/api/v3"
sym = "BTCUSDT"
kl = requests.get(f"{B}/klines", params=dict(
symbol=sym, interval="1m", limit=1000)).json()
close = np.array([float(k[4]) for k in kl])
sigma = np.diff(close).std() * np.sqrt(60) # $/sqrt(h)
d = requests.get(f"{B}/depth",
params=dict(symbol=sym, limit=5000)).json()
bids = np.array(d["bids"], dtype=float) # [price, qty]
mid = (bids[0, 0] + float(d["asks"][0][0])) / 2
cq = np.cumsum(bids[:, 1]) # cum qty
cn = np.cumsum(bids[:, 0] * bids[:, 1]) # cum notional
sizes = np.linspace(0.5, 50, 40) # BTC probes
cost = [mid - np.interp(q, cq, cn) / q for q in sizes]
eps, eta_inst = np.polyfit(sizes, cost, 1)[::-1] # cost ~ eps + k*q
eta = eta_inst * (30 / 3600) # 30s refresh -> $*h/BTC
tr = requests.get(f"{B}/aggTrades",
params=dict(symbol=sym, limit=1000)).json()
df = pd.DataFrame(dict(
t=[t["T"] for t in tr],
p=[float(t["p"]) for t in tr],
q=[float(t["q"]) * (-1 if t["m"] else 1) for t in tr]))
df["bin"] = df.t // 300_000 # 5-min bins
g = df.groupby("bin").agg(dp=("p", lambda s: s.iloc[-1] - s.iloc[0]),
qn=("q", "sum"))
gamma = np.polyfit(g.qn, g.dp, 1)[0] # $/BTC
print(f"sigma={sigma:.0f} $/sqrt(h) eta={eta:.2f} $*h/BTC "
f"gamma={gamma:.3f} $/BTC")
Đối với production, thay trang aggTrades đơn lẻ bằng vài ngày dữ liệu từ historical dumps và chạy hồi quy trên hàng nghìn bin, chứ không phải vài chục.
Vì sao hiệu chỉnh trên crypto lại nhiễu, và nên làm gì với điều đó
Chạy hồi quy trên dữ liệu thực và bạn sẽ nhận được chỉ vài phần trăm và một hệ số dao động theo hệ số 2–5 giữa các ngày. Đây không phải lỗi trong code của bạn. Các lý do mang tính cấu trúc:
- Nội sinh (endogeneity). Dòng lệnh phản ứng với giá cũng nhiều như giá phản ứng với dòng lệnh. Các trader theo momentum mua vì giá đã tăng; một hồi quy OLS ngây thơ của lợi suất theo dòng lệnh sẽ bắt được phản ứng của họ và gán nhầm nó cho impact. Cách khắc phục sạch sẽ là dùng chính các fill của bạn (ngoại sinh theo cấu trúc) — thứ mà bạn chỉ có sau khi đã giao dịch một thời gian.
- Tính lõm (concavity). Impact thực tế là hàm lõm theo kích thước — thực nghiệm cho thấy gần với căn bậc hai (Almgren, Thum, Hauptmann và Li, 2005, "Direct estimation of equity market impact", tìm ra số mũ gần 0.6; tính lõm tương tự cũng vững chắc trong crypto). Fit một đường thẳng cho một hàm lõm nghĩa là và của bạn phụ thuộc vào khoảng kích thước trong mẫu. Hãy hiệu chỉnh ở đúng các tỷ lệ tham gia mà bạn thực sự sẽ giao dịch.
- Phân mảnh và vai trò dẫn dắt của phái sinh. BTCUSDT spot trên Binance chỉ là một trong nhiều venue, và price discovery thường xuyên diễn ra trên hợp đồng perpetual. Dòng lệnh mà bạn không bao giờ nhìn thấy vẫn di chuyển giá mà bạn đang hồi quy, làm phồng lên thành phần nhiễu.
- Phụ thuộc chế độ thị trường. đo được trong phiên Á không mô tả phiên mở cửa Mỹ; impact tăng gần gấp đôi khi độ biến động tăng gấp đôi. Hãy hiệu chỉnh theo từng phiên, và fit lại ít nhất mỗi tuần một lần.
Điểm cứu vãn: quỹ đạo rất khoan dung. , nên một sai số hệ số 2 trong chỉ dịch chuyển đi , và hàm chi phí phẳng gần điểm tối ưu. Có được đúng trong khoảng sai số hệ số 2 và đúng trong khoảng một bậc độ lớn đã nắm bắt được phần lớn cải thiện khả dụng so với TWAP. Độ chính xác quan trọng cho ước lượng chi phí trước giao dịch; độ vững chắc là đủ cho việc lập lịch.
Mô hình gãy ở đâu, và những bài báo khắc phục nó
Almgren-Chriss là một khung sườn, và biết chính xác thanh dầm nào chịu lực sẽ cho bạn biết nên vươn tới phần mở rộng nào.
Impact phi tuyến — Almgren (2003). "Optimal execution with nonlinear impact functions and trading-enhanced risk" (Applied Mathematical Finance 10, 1–18) làm lại toàn bộ chương trình với impact tạm thời dạng lũy thừa . Với được ưa chuộng bởi thực nghiệm — quy luật căn bậc hai — các quỹ đạo tối ưu thay đổi bản chất: impact lõm trừng phạt các đợt bùng nổ ít hơn so với impact tuyến tính, nên các lịch trình tối ưu trở nên dồn tải mạnh hơn về phía đầu ở cùng một . Cấu trúc định tính (tham số khẩn cấp, đường biên hiệu quả) vẫn tồn tại; công thức sinh thì không.
Độ đàn hồi và LOB — Obizhaeva và Wang (2013). "Optimal trading strategy and supply/demand dynamics" (Journal of Financial Markets 16(1), 1–32; working paper lưu hành từ 2005) thay thế phép nhị phân tạm thời/vĩnh viễn bằng một limit order book có độ sâu hữu hạn và impact suy giảm theo hàm mũ: lệnh của bạn ăn vào sổ lệnh, và sổ lệnh được nạp lại ở tốc độ đàn hồi . Giả định "impact tạm thời biến mất ngay lập tức" của AC chính là giới hạn . Chiến lược tối ưu thay đổi hình dạng một cách kịch tính: một khối lệnh lớn ở đầu, một khối lệnh lớn ở cuối, và một tốc độ giao dịch không đổi ở giữa — các khối lệnh này khai thác sự phục hồi của sổ lệnh. Nếu khoảng thời gian child-order của bạn tương đương với thời gian bù đắp của venue (trên crypto, vài giây đến một phút — thường đúng như vậy), bạn đang ở lãnh địa Obizhaeva-Wang, không phải lãnh địa Almgren-Chriss, và cách xử lý tạm bợ trong phần hiệu chỉnh ở trên chính là dấu hiệu cảnh báo của bạn.
Không-arbitrage-động — Gatheral (2010). "No-dynamic-arbitrage and market impact" (Quantitative Finance 10(7), 749–759) đặt câu hỏi tổ hợp nào của hàm impact tức thời và kernel suy giảm là nhất quán nội tại, tức không cho phép chiến lược round-trip nào có chi phí kỳ vọng âm. Kết quả rất sắc bén: suy giảm theo hàm mũ chỉ tương thích với impact tuyến tính — kết hợp suy giảm hàm mũ với impact căn bậc hai và mô hình có thể bị bơm tiền bởi một chuỗi giao dịch dao động; impact phi tuyến đòi hỏi suy giảm dạng lũy thừa, với một bất đẳng thức liên kết hai số mũ (với impact và suy giảm , xấp xỉ ). Đây là bài báo cần đọc trước khi bạn gắn một kernel suy giảm phức tạp vào mô hình impact của mình: phần lớn các tổ hợp tùy tiện đều bí mật có thể bị arbitrage, mà trong thực tế nghĩa là bộ tối ưu của bạn sẽ phát hiện ra khe hở arbitrage đó và tạo ra các lịch trình dao động phi lý. Nếu quỹ đạo "tối ưu" của bạn luân phiên mua và bán trong một lần thanh lý thuần túy, bạn đã vi phạm Gatheral, chứ không phải phát hiện ra alpha.
Các phần tiếp theo bằng ML. Hai mạch trong loạt bài này xây dựng trực tiếp trên khung sườn này. Thứ nhất, thực thi bằng reinforcement learning: một khi bạn chấp nhận rằng impact là phi tuyến, phụ thuộc trạng thái, và chỉ quan sát được một phần, dạng đóng biến mất, và RL (từ bài báo Q-learning năm 2006 của Nevmyvaka, Feng và Kearns trở đi) là một cách tự nhiên để tìm kiếm trong không gian quỹ đạo — nhưng mọi agent thực thi RL nghiêm túc đều được benchmark với, và thường được khởi tạo từ, nghiệm AC. Thứ hai, mô hình neural price-impact: thay bằng một hàm học được từ trạng thái order book, trong khi vẫn giữ logic lập lịch mean-variance ở trên cùng. Không phần tiếp theo nào có ý nghĩa nếu không biết chính xác baseline tuyến tính-Gaussian là gì và tại sao nó có dạng như vậy.
Điều cần ghi nhớ
Mô hình là ba giả định, một phương trình sai phân, và một con số. Impact vĩnh viễn tuyến tính (bị ép buộc bởi nguyên tắc không-thao-túng), impact tạm thời tuyến tính (một xấp xỉ mà bạn hiệu chỉnh xung quanh), nhiễu Brownian số học. Điểm tối ưu đánh đổi phương sai tồn kho với chi phí impact, toàn bộ chiến lược sụp gọn thành mức khẩn cấp , và TWAP rơi ra như trường hợp suy biến — đây là sự thật hữu ích nhất trong toàn bộ mô hình, bởi nó biến câu hỏi "chúng ta có nên TWAP lệnh này không?" từ một thói quen thành một khẳng định có thể kiểm chứng được về mức ngại rủi ro. Hiệu chỉnh mới là công việc thực sự: dễ, là trò chơi sai số hệ số 2, là một dự án nghiên cứu, và quỹ đạo thì khoan dung với cả ba. Triển khai nó trong một buổi chiều; dành phần còn lại của tháng cho các chẩn đoán hồi quy.
Tài liệu tham khảo
- Almgren, R., Chriss, N. (2001). "Optimal execution of portfolio transactions." Journal of Risk, 3(2), 5–39.
- Almgren, R. (2003). "Optimal execution with nonlinear impact functions and trading-enhanced risk." Applied Mathematical Finance, 10(1), 1–18.
- Almgren, R., Thum, C., Hauptmann, E., Li, H. (2005). "Direct estimation of equity market impact." Risk, 18(7), 58–62.
- Huberman, G., Stanzl, W. (2004). "Price manipulation and quasi-arbitrage." Econometrica, 72(4), 1247–1275.
- Obizhaeva, A., Wang, J. (2013). "Optimal trading strategy and supply/demand dynamics." Journal of Financial Markets, 16(1), 1–32.
- Gatheral, J. (2010). "No-dynamic-arbitrage and market impact." Quantitative Finance, 10(7), 749–759.
- Nevmyvaka, Y., Feng, Y., Kearns, M. (2006). "Reinforcement learning for optimized trade execution." ICML 2006.
Tác Giả
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.