Almgren-Chriss моделі түсінікті тілмен: бір түскі уақытта іске асыруға болатын оңтайлы орындау
Almgren мен Chriss (2001), "Optimal execution of portfolio transactions" (Journal of Risk 3(2), 5–39) — орындауды зерттеу саласындағы ең көп сілтеме жасалатын мақала әрі дұрыс іске асырылуы ең сирек кездесетін мақалалардың бірі. Интернеттегі "Almgren-Chriss" кодтарының басым бөлігі — түсіндірме блогы бар қарапайым TWAP жоспарлаушысы ғана. Бұл тақырыпқа арналған блог жазбаларының көбі шығарылымды айналып өтіп, sinh функциясын жайдан-жай айтып қана қояды, ал өндірісте нақты маңызы бар нәрсеге — параметрлер қайдан алынатынына — мүлде тоқталмайды.
Бұл мақала бәрін толық қамтиды: адал түрде тұжырымдалған модель болжамдары; болжам ретінде емес, шығарылған түрдегі жабық түрдегі траектория; тиімді шекара және тәуекелге жанашырлық параметрін таңдау тәсілі; сондай-ақ уақытша әсер , тұрақты әсер және құбылмалылық — үш кірмелі шаманы Binance ордер кітабы мен сауда деректерінен калибрлеу, жұмыс істейтін Python коды және неге сәйкестеу нәтижесі шулы болатыны туралы адал талқылаумен қоса. Бұл — орындау саласындағы бүкіл ілімнің интеллектуалдық өзегі: TWAP, VWAP және POV — осы модельдің дербес жағдайлары немесе эвристикалық туыстары ғана (TWAP, VWAP, POV: барлығы қолданатын орындау алгоритмдері мақаласын қараңыз), ал заманауи ML тәсілдері — күшейтілген оқыту жоспарлаушылары мен нейрондық әсер модельдері — дәл біз төменде жазатын болжамдарды жеңілдетуге деген талпыныстар.
Бастапқы қойылым: модель нақты нені болжайды
Сізде бірлік актив бар делік (мысалы, 100 BTC) және оны уақытына дейін толық сатып бітіру керек. аралығын ұзындығы болатын интервалға бөліңіз. Шешім қабылданатын айнымалы — активтегі қалдық траекториясы , ал интервалында орындалатын сауда мөлшері .
Модельдің тұтас негізін үш болжам көтеріп тұр:
1. Арифметикалық кездейсоқ жүріс. Сыртқы әсерсіз баға мына түрде өзгереді:
мұндағы — тәуелсіз бірдей үлестірілген стандартты қалыпты кездейсоқ шамалар, ал — абсолютті құбылмалылық (доллар/уақыт бірлігінің, пайызбен емес). Геометриялық емес, дәл арифметикалық жүріс алынды — бірнеше сағат ішінде айырмашылық елеусіз, ал арифметикалық жүріс алгебраны сызықтық-квадраттық күйде сақтайды. Тренд жоқ: Almgren мен Chriss тренд мүшесін талқылайды, бірақ күн ішіндегі ликвидация үшін 4 сағаттық альфа бағаңыз әдетте тек шу болып шығады, сондықтан оны нөлге теңеу — адал әдепкі таңдау.
2. Сызықтық тұрақты әсер. : қарқынымен сауда жасау бағаны тұрақты түрде, пропорционалды түрде ығыстырады және бұл ығысу ешқашан жойылмайды. Сатқан әрбір бірлік мид-бағаны мәңгілікке шамасына төмендетеді. Бұл қарабайыр көрінгенімен, оны сызықтық күйінде қалдырудың терең себебі бар: Huberman мен Stanzl (2004) сауда мөлшеріне қатысты сызықтық емес тұрақты әсердің оң күтілетін пайдасы бар айналымдық стратегияларға — яғни бағаны манипуляциялауға — жол беретінін дәлелдеген. Сызықтық тұрақты әсер — бұл ыңғайлылық үшін қабылданған жеңілдету емес, бұл осы кластағы модельдердегі арбитражсыз жалғыз таңдау.
3. Сызықтық уақытша әсер. интервалында нақты алатын баға:
— сатып алу-сату спрэдінің жартысы мен комиссияларды қамтиды; — қарқынымен ликвидтілік талап етудің шекті құнының көлбеуі. Уақытша әсер тек сіздің өз орындалуыңызға әсер етеді және лезде жоғалады — кітап сіздің келесі дербес ордеріңізге дейін толық қалпына келеді. "Сызықтық", "лезде" және "толық" деген үш сөздің әрқайсысы нақты нарықтарда дұрыс емес, соңғы бөлім дәл осы қаншалықты дұрыс еместікке арналған. Бірақ алдымен — осыларды қабылдағаннан алатын пайда.
Траекторияның шығыны мен дисперсиясы
Орындалуларды қосып, бастапқы белгіден азайтсаңыз, орындау шығынын (implementation shortfall) аласыз. Оның шуы бойынша күтілетін мәні мен дисперсиясы:
мұндағы — кезінде жойылатын дискреттеу түзетуі.
Көптеген іске асырулар байқамайтын екі бақылау:
- Тұрақты шығын траекторияға тәуелді емес. Сызықтық, ыдырамайтын тұрақты әсер болған жағдайда, сіз қалай жоспарласаңыз да бірдей тұрақты алымды төлейсіз. Оңтайландыру толықтай уақытша шығын мүшесі (баяу, біркелкі саудаға ұмтылады — минимумы , яғни TWAP) мен дисперсия мүшесінің (активіңізді дереу тарату) арасындағы күреске тіреледі.
- Дисперсия мүшесі сауда бойынша емес, қалдық бойынша салмақталған. Тәуекел сіз сатқан нәрсеге емес, әлі иеленіп отырған шамасына жиналады. Дәл осы себепті шұғылдық кестені басынан тығыздайды.
Жабық түрдегі шешім: sinh, cosh және шұғылдық параметрі
Almgren-Chriss орта-дисперсия мақсат функциясын минимумдайды:
мұндағы — доллардың кері бірлігіндегі тәуекелге жанашырлық. Ішкі нүктелер үшін теңдейік. Уақытша мүше -тің екінші айырымдарын, ал дисперсия мүшесі -тің өзін береді, нәтижесінде екінші ретті сызықтық айырымдық теңдеу шығады:
Бұл — теңдеуінің дискретті аналогы, және , шекаралық шарттарымен шешім гиперболалық түрде болады:
мұндағы теңдеуін қанағаттандырады, ал шағын үшін бұл жай ғана .

Стратегия туралы барлық ақпарат бір санда шоғырланған:
— шұғылдық. Оның кері мәні — мәміленің сипаттамалық уақыты: әсер шығынын үнемдеу үшін активті ұстап тұрудың тәуекеліне бару тиімді болатын уақыт масштабы. нені тәуелсіз екеніне назар аударыңыз: ол ордер көлемі -ке және мерзім -ге тәуелді емес. Мәміленіңіздің ішкі уақыт масштабы 20 минут па, әлде 6 сағат па — бұл тек тәуекелге жанашырлыққа, құбылмалылыққа және ликвидтілікке байланысты анықталады. Егер болса, мерзіміңіз маңызды емес — модель өз кестесі бойынша ликвидация жасайды және горизонттың қалған бөлігі пайдаланылмайды. Егер болса, мерзім шектеуші фактор болады және сіз іс жүзінде TWAP жасайсыз.
Тәуекелге бейтарап шектік жағдай — бұл TWAP: TWAP осылай пайда болды
алайық, сонда . Онда және
Оңтайлы траектория түзу сызыққа айналады: тең уақыт аралықтарында тең көлемдер. TWAP кездейсоқ жұмыс істейтін эвристика емес — ол сызықтық әсері бар тәуекелге бейтарап трейдер үшін Almgren-Chriss моделінің дәл оңтайлы шешімі. Кез келген адам TWAP жасаған сайын ол жасырын түрде деп мәлімдейді: "Менің шығынымның дисперсиясы емес, тек орташа мәні маңызды". Бұл шағын ордерлер мен қысқа горизонттар үшін негізделген позиция. Бірақ күнделікті құбылмалылығы 4% болатын активте 8 сағат ішінде күндік көлемнің 5%-ын ликвидациялау кезінде бұл — таңқаларлық позиция, дегенмен адамдар оны дәл осындай жағдайда қолданады. Қарама-қарсы шектік жағдай барлық үшін береді: бәрін бірінші интервалда лақтырып жіберу, қанша тұрса да төлеу. Осы екі шеттің арасында интерполяциялайды: TWAP-тан әрең ажыратылады, агрессивті түрде алдын-ала жүктелген.
Орындаудың тиімді шекарасы
Әрбір үшін бір траектория, бір күтілетін шығын және бір дисперсия аласыз. бойынша сүзу жазықтығында қисық сызады — Markowitz моделіне тікелей аналогиямен, орындаудың тиімді шекарасы. Ол дөңес әрі кемиді: дисперсияның азаюы әрқашан күтілетін шығынның артуымен төленеді, әрі қайтарым тез азаяды. Берілген таңдаған шекара нүктесінде тәуекелге жанашырлық жанама сызықтың (теріс) көлбеуіне тең: .

Шекара " дегеніміз не?" деген сұрақты (оған ешкім интроспективті түрде жауап бере алмайды) "мен қандай шығын/тәуекел қатынасын қалаймын?" деген сұраққа айналдырады — ал бұған кез келген дилинг-бөлме нақты жауап бере алады. Нүктені таңдаудың үш практикалық жолы:
- Шекті шығын пайымдауы. Шекара бойымен жүріп, сұраңыз: "осы нүктеден келесіге жылжу үшін мен шығын стандартты ауытқуының долларын жою үшін доллар күтілетін шығын төлеймін — бұл мәмілеге барам ба?" Шекараның "тізе" нүктесі әдетте екі есе дәлдікпен айқын көрінеді, әрі осы дәлдікте траектория -ға сезімтал емес.
- Тәуекел бюджеті. Максималды рұқсат етілген шығын стандартты ауытқуын бекітіңіз (мысалы, "қалдық позицияның бір күндік 1-сигмасы номиналдың 15 базистік пунктінен аспауы керек") және осы шартты қанағаттандыратын ең арзан траекторияны алыңыз. Бұл — Лагранж көбейткіші болатын шектелген есеп.
- Сипаттамалық уақытты мақсаттау. шамасын тікелей таңдаңыз ("бұл ордердің жартылай өмірі 90 минут болуы керек") және шамасын кері есептеңіз. Практиктердің көбі "шұғылдық" сырғытпасын орнатқанда жасырын түрде дәл осыны жасайды.
Калибрлеу бөлімінде негіздейтін сандармен жасалған мысал. S_0 = \100{,}000X = 100T = 4\sigma = $600\sqrt{\text{сағ}}\eta = 1.0\ $\cdot\text{сағ}/\text{BTC}\lambda = 10^{-6}\ $^{-1}$. Онда
Оңтайлы кесте бірінші сағатта 46.2 BTC сатады (TWAP: 25). Уақытша шығын: \eta \int_0^T v(t)^2 dt \approx \3{,}290$2{,}500$53{,}000$69{,}30010 млн номиналдың қосымша 0.8 базистік пункт күтілетін шығыны үшін шығын тәуекелін 23%-ға қысқартасыз. Модельдің бүкіл мазмұны бір сөйлемде: ол сақтандыруды бағалайды және оны сатып алу-алмауды сізге қалдырады.
Траекторияның өзі — небәрі он жол 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}")
lam мәнін np.logspace(-8, -4, 50) бойынша сүзіп, мен графигін салыңыз — бұл сіздің шекараңыз, әрі бүкіл шешім беті тәуекел комитетіне көрсетуге болатын бір графикке сияды.
Калибрлеу: Binance деректерінен , ,
Іске асырулардың 90%-ы дәл осы жерде үнсіз құриды. Траектория формуласы қарапайым, ал параметрлер олай емес. Үш шама — үш түрлі бағалау есебі.

: ең оңайы
Мид-баға қайтарымдары бойынша, түбір-сағатқа шаққандағы абсолютті құбылмалылық. 1 минуттық барларды пайдаланып масштабтаңыз; неғұрлым нәзік дискреттеу кезінде микроқұрылымдық шу (сатып алу-сату бағасының секіруі) іске асырылған дисперсияны жоғары қарай бұрмалайды. Бұл баға сенімді — құбылмалылық сіз дұрыс аласыз деген жалғыз параметр.
: кітап пен сауда деректерінен уақытша әсер
Екі толықтырушы жол бар. A жолы — L2 кітабын аралау. Тереңдік снапшоттарынан көлеміндегі гипотетикалық маркет-ордер сатылымының шығынын есептеңіз: тұтынылған деңгейлердің VWAP-і минус мид-баға. теңдеуін сәйкестеу BTC-ке шаққандағы лездік әсерді береді. Модельдің қарқынға негізделген -на айналдыру үшін кітаптың қалпына келу уақыты (BTCUSDT үшін шамамен 10–60 секунд) деген болжам қажет: қарқынымен сауда әр жаңарту циклінде жұтады, сондықтан . Дәл осы болжам — лезде, толық қалпына келу тұрақты сағат бойынша — Obizhaeva-Wang моделінің кіретін тесігі; төменде толығырақ. B жолы — іске асырылған сырғанауды қатысу қарқынына регрессиялау. Агрессивті (тейкер) ағынды 1 минуттық бинге топтастырыңыз; әр бин үшін тейкер жағының VWAP минус ашылу мид-бағасын тейкер көлем қарқынына регрессиялаңыз. B жолы нарықтың агрессорлардан нақты алған ақысын өлшейді; A жолы қазіргі уақытта тұрған кітаптың алатын ақысын өлшейді. Олар 3 еседен көп айырмашылықта болса, деңгей үшін B-ге, күн ішіндегі форма үшін A-ға сенген жөн.
: Kyle стиліндегі регрессия арқылы тұрақты әсер
Мид-баға өзгерісін 5 минуттық терезелердегі таза тейкер ағынына регрессиялаңыз:
Содан кейін әсер бір терезеден кейін кайта оралмағанын тексеріңіз — қайтпайтын компонент сіздің сауда уақыт масштабыңызда "тұрақты" болып саналады. Бұл — үшеуінің ішінде ең шулысы, айтарлықтай айырмашылықпен.
Тек ашық Binance REST соңғы нүктелерін пайдаланатын жұмыс істейтін код:
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")
Өндірістік қолдану үшін бір ғана aggTrades бетінің орнына тарихи дампілердің бірнеше күнін алып, регрессиясын бірер мыңдаған бинде жүргізіңіз, бірнеше ғана бин емес.
Неге криптодағы калибрлеу шулы, және онымен не істеу керек
регрессиясын нақты деректерде жүргізсеңіз, бірнеше пайыздық мен күн сайын 2–5 есе өзгеретін коэффициент аласыз. Бұл кодыңыздағы қате емес. Себептері құрылымдық сипатта:
- Эндогенділік. Ағын бағаға қаншалықты әсер етсе, баға да ағынға соншалықты әсер етеді. Импульс трейдерлері баға көтерілгендіктен сатып алады; қайтарымдарды ағынға қарапайым OLS регрессиялау олардың реакциясын тіркеп, оны әсер деп қате қабылдайды. Таза шешім — өз орындалуларыңызды пайдалану (олар табиғатынан экзогенді) — бірақ бұл сізде бір уақыт сауда жасағаннан кейін ғана пайда болады.
- Ойыстық (concavity). Нақты әсер көлемге қатысты ойыс — эмпирикалық түрде квадрат түбірге жақын (Almgren, Thum, Hauptmann және Li, 2005, "Direct estimation of equity market impact" мақаласында дәреже көрсеткіші шамамен 0.6 екенін тапты; дәл осындай ойыстық криптода да тұрақты байқалады). Ойыс функцияға түзу сызық сәйкестеу мен -ның таңдама көлем диапазонына тәуелді болуына әкеледі. Нақты сауда жасайтын қатысу қарқындарында калибрлеңіз.
- Фрагментация және туынды құралдардың жетекшілігі. Binance-тегі BTCUSDT спот нарығы — көптеген алаңдардың біреуі ғана, ал баға түзілу жиі перп фьючерстерінде орын алады. Сіз көрмейтін ағын регрессиялап отырған бағаны қозғайды, бұл шу мүшесін ұлғайтады.
- Режимге тәуелділік. Азия сессиясында өлшенген АҚШ ашылуын сипаттамайды; құбылмалылық екі есе артқанда әсер де шамамен екі есе артады. Сессия бойынша калибрлеңіз және кемінде апта сайын қайта сәйкестеңіз.
Құтқарушы жайт: траектория кешірімді. , сондықтан -дағы екі есе қате -ны тек есе ғана жылжытады, ал шығын функциясы оптимум маңында тегіс. -ны екі еседей дәлдікпен, ал -ны шамалар ретімен дұрыс алу TWAP-қа қарағанда қолжетімді жақсартудың басым бөлігін қамтиды. Дәлдік сауда алдындағы шығынды бағалау үшін маңызды; тұрақтылық жоспарлау үшін жеткілікті.
Модель қайда бұзылады, және қандай мақалалар оны түзетеді
Almgren-Chriss — бір қаңқа, әрі қай арқалық жүк көтеретінін дәл білу қай кеңейтуге жүгіну керегін көрсетеді.
Сызықтық емес әсер — Almgren (2003). "Optimal execution with nonlinear impact functions and trading-enhanced risk" (Applied Mathematical Finance 10, 1–18) бағдарламаны дәрежелік заңды уақытша әсермен қайта жасайды. Эмпирикалық түрде қолдау тапқан үшін — квадрат түбір заңы — оңтайлы траекториялардың сипаты өзгереді: ойыс әсер жарылысты сызықтық әсерге қарағанда азырақ жазалайды, сондықтан дәл сол кезінде оңтайлы кестелер алдын-ала көбірек жүктеледі. Сапалық құрылым (шұғылдық параметрі, тиімді шекара) сақталады, бірақ sinh формуласы сақталмайды.
Тұрақтылық және LOB — Obizhaeva және Wang (2013). "Optimal trading strategy and supply/demand dynamics" (Journal of Financial Markets 16(1), 1–32; жұмыс нұсқасы 2005 жылдан бастап таралды) уақытша/тұрақты дихотомияны шектеулі тереңдігі бар және экспоненциалды түрде ыдырайтын әсері бар лимиттік ордер кітабымен ауыстырады: сауда кітапты жұтады, ал кітап тұрақтылық қарқынымен қалпына келеді. AC-тың "уақытша әсер лезде жойылады" деген болжамы — шегі. Оңтайлы стратегия түбегейлі өзгереді: басында блок сауда, соңында блок сауда, ал ортасында тұрақты сауда қарқыны — блоктар кітаптың қалпына келуін пайдаланады. Егер сіздің дербес ордер интервалыңыз алаңның қалпына келу уақытына жуық болса (криптода бұл секундтан минутқа дейін — жиі солай болады), сіз Almgren-Chriss емес, Obizhaeva-Wang аймағында тұрсыз, ал жоғарыдағы калибрлеудегі болжамы — сіздің ескерту белгіңіз.
Динамикалық арбитраждың жоқтығы — Gatheral (2010). "No-dynamic-arbitrage and market impact" (Quantitative Finance 10(7), 749–759) лездік әсер функциясы мен ыдырау ядросы -нің қандай тіркестері ішкі түрде үйлесімді екенін, яғни теріс күтілетін шығыны бар айналымдық стратегияға жол бермейтінін сұрайды. Нәтижелер айқын: экспоненциалды ыдырау тек сызықтық әсермен үйлесімді — экспоненциалды ыдырауды квадрат түбір әсерімен біріктірсеңіз, модельді тербелмелі сауда тізбегімен "сорып алуға" болады; сызықтық емес әсер дәрежелік ыдырауды талап етеді, екі көрсеткішті байланыстыратын теңсіздікпен (әсер және ыдырау үшін шамамен ). Бұл — әсер моделіңізге тартымды ыдырау ядросын бекітпес бұрын оқитын мақала: көптеген еркін тіркестер жасырын түрде арбитраждалатын болып шығады, бұл іс жүзінде сіздің оптимизаторыңыз арбитражды тауып, оғаш тербелмелі кестелер жасайтынын білдіреді. Егер сіздің "оңтайлы" траекторияңыз таза ликвидация кезінде сатып алу мен сатуды кезектестірсе, сіз Gatheral шартын бұзғансыз, альфа таппағансыз.
ML жалғасы. Осы серияда екі бағыт тікелей осы қаңқаға негізделеді. Біріншісі — күшейтілген оқыту арқылы орындау: әсердің сызықтық емес, күйге тәуелді және жартылай бақыланатын екенін мойындасаңыз, жабық түрдегі шешім жоғалады, ал RL (Nevmyvaka, Feng және Kearns-тің 2006 жылғы Q-оқыту мақаласынан бастап) траектория кеңістігін іздестірудің табиғи жолы — бірақ әрбір байыпты RL орындау агенті AC шешімімен салыстырылады, әрі жиі одан бастама алады. Екіншісі — нейрондық баға-әсер модельдері: функциясын ордер кітабы күйінің үйренілген функционалымен ауыстыру, орта-дисперсия жоспарлау логикасын үстінде сақтай отырып. Екі жалғасы да сызықтық-Гаусс базалық сызбаның нақты не екенін және неге дәл осындай пішінде екенін білмей мағынасы болмайды.
Не есте сақтау керек
Модель — үш болжам, бір айырымдық теңдеу және бір сан. Сызықтық тұрақты әсер (манипуляциясыздық талап еткен), сызықтық уақытша әсер (айналасында калибрленетін жуықтау), арифметикалық броундық шу. Оптимум активтегі қалдық дисперсиясы мен әсер шығынын теңестіреді, бүкіл стратегия шұғылдық санына жиналады, ал TWAP деп аталатын шектік жағдай ретінде шығады — модельдегі ең пайдалы факт, себебі ол "мұны TWAP-пен жасау керек пе?" деген сұрақты әдетке емес, тәуекелге жанашырлық туралы тексерілетін тұжырымға айналдырады. Калибрлеу — нақты жұмыс: оңай, екі еседей дәлдіктің ойыны, бір зерттеу жобасы, ал траектория үшеуін де кешіреді. Оны бір түскі уақытта іске асырыңыз, ал айдың қалғанын регрессия диагностикасына жұмсаңыз.
Дереккөздер
- 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.
Authors
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.