Слиппаж туруктуулары эмес, слиппаж ийри сызыктары: жандуу соода менен беттешип аман калган чыгым моделдери
Кобунчо backtest'терде эн кымбат сап — бул slippage_bps = 5. 5 туура эмес сан болгондуктан эмес — бир жылдык толтуруулар боюнча орточолонуп алганда ал туура да болушу мумкун — а туруктуу сан шарттуу турдо туура эмес болгондуктан, ал эми сиздин стратегия тандоо процессинниз так ушул шарттуу каталарды таап, пайдаланган машина. Слиппаж — бул заказдын колему, спред, кубулмалуулук жана жеткиликтуу ликвиддуулуктун функциясы. Туруктуу сан — бул ошол функциянын бир чекитте эсептелген жана баары жерге, анын ичинде тан 3тогу ликвидация каскадына чейин экстраполяцияланган мааниси, качан сиздин орточого кайтуу сигналыныз эн куч менен иштеп, ал эми стакан анын кадимки терендигинин ондон бир болугуно тушуп калат. Backtest ал жерге да 5 bps алат. Жандуу соода албайт.
Бул макала backtest циклинин ичиндеги чыгым модели жонундо: ар бир симуляцияланган соодадон кемитилуучу cost(size, market_state) функциясы жонундо. Ал атайылап эле аткарууну пландаштыруу учун таасирди алдын ала болжолдоо жонундо эмес — бул шериктеш маселе, ал моделдин жагынан баа таасирин моделдоо макаласында жана оптималдуу пландаштыруу жагынан Almgren-Chriss макаласында каралат. Бул жерде суроо тарыраак жана backtest боюнча стратегия тандаган ар бир адам учун шашылыштуураак: сиздин туруктуу саныныздын ордунда кайсы функция турушу керек, аны сизде чындап бар маалыматтан кантип тууралайсыз жана жооп сиз кайсы стратегияны иштетээриниздин канчалык озгортот. Акыркы болук эмпирикалык курч жоопко ээ: бир стратегия уй-булосунун 20 вариантын торт чыгым моделинин алдында кайра рейтингдеп, рейтингдин озгоргонун байканыз.
Чыгым моделинин тепкичи

Толтуруу симуляциясынын тепкичи сыяктуу эле, чыгым моделдери тактык тепкичин тузот, анда ар бир тепкич копурок маалыматты талап кылат жана бир так системалык жантайууну жоет. Тепкичтер жыйындыланма: ар бири озунун астындагы мучолорду сактайт жана бирди кошот.
M0: туруктуу bps
Бир сан, ар бир соодага колдонулат. Уч кыйроо режими, зыяндын осушу боюнча:
- Колемго сокур. 5M энелик заказ бирдей толойт. Сыйымдуулук денгээлдери боюнча каалагандай стратегия салыштыруусу маанисиз.
- Режимге сокур. Тынч шейшемби тушту жана FTX кыйроосу бирдей толойт. Ката — шов эмес; ал так окуяга багытталган стратегиялар оздорунун соодасын топтогон абалдар менен антикорреляцияланган.
- Тандоо учун уулуу. 200 параметр айкалышын иргеп чыкканыныздa, оптимизатор жалпак чыгымдын алдында реалдуулукка салыштырмалуу айланма арзан экенин таап, буткул издоону жогорку жыштыктагы варианттарга жылдырат. Чыгым катасы PnL боюнча симметриялуу куч эмес, модель тандоого багытталган куч болуп калат.
M1: спредге пропорционалдуу
Чечим убакыт белгисиндеги олчонгон жарым-спредди алыныз (плюс комиссия, ал детерминдешкен жана дайыма озунчо сап болушу керек). Бул рынокко жалпы жооп берген биринчи модель: спреддер жанылыктарда, сессия ачылыштарында, жука альткоиндерде кенейет, ошондуктан чыгым эми жок дегенде бир ликвиддуулук озгормосу менен бирге кыймылдайт. Ал дагы эле бир нерсени откоруп жиберет: спред стакандын устундогу бир клиптин толтурулушун баалайт. Андан чондураак болгону стакан боюнча журот, ал эми ал журуу учун корунбойт.
M2: кубулмалуулукка масштабдалган
Кыска мооноттук кубулмалуулукка пропорционалдуу мучону кошуныз. Негиздеме эмпирикалык да, структуралык да: спреддер жана терендик рынок мейкиндиктерини (market maker'лер) тарабынан коюлат, алардын терс тандоо жана инвентардык тобокелдиги менен масштабдалат (тескери иштетилген Avellaneda-Stoikov котировка логикасы), ошондуктан ликвиддуулукту талап кылуунун чыгымы табигый турдо кубулмалуулуктун бирдиктеринде белгиленет. Стакан маалыматы такыр жок болгондо — кундук барлар, узун тарых — (мында кундук кубулмалуулуктун 0.05–0.1 аймагында) каалагандай туруктуу санга караганда кескин жакшыраак модель, анткени ал жок дегенде режим менен дем алат.
M3: катышуу боюнча квадрат тамыр
Колем мучосу. — сиздин заказ колеминиз, — тиешелуу терезедеги рынок колему, — ошол эле терезедеги кубулмалуулук. Бул функционалдык форма ынгайлуулук эмес; ал рынок микроструктурасында эн коп кайталанган эмпирикалык натыйжалардын бири, ошондуктан анын кайдан келгенин так айтуу маанилуу.
Теориялык баштапкы чекит — Kyle (1985), "Continuous auctions and insider trading" (Econometrica 53(6), 1315–1335). Kyle'дин моделинде рынок мейкиндиги бааны таза заказ агымынын сызыктуу функциясы катары коет, , мында
— агымдын бир бирдигине таасир шов-соода колемино салыштырмалуу баа белгисиздигине пропорционалдуу. Kyle'дин ламбдасы тармакка ликвиддуулук бирдигин ( терендик) жана анын биринчи текшериле турган ырастоосун берди: соодаланган ар бир долларга чыгым туруктуу санга эмес, маалыматтын ликвиддуулукко катышына коз каранды. Бирок модель колем боюнча сызыктуу, ал эми маалыматтар башкача айтат.
Маалыматтар ойдун (концав) деп айтат. Almgren, Thum, Hauptmann and Li (2005), "Direct estimation of equity market impact" (Risk, July 2005), Citigroup сооданын столдорунан болжол менен 700,000 АКШ акциясынын заказын тууралап, убактылуу таасир катышуунун даражасында осконун тапты — алар сызыктуу да, таза квадрат тамырды да ачык текшерип, четке кагып, пайдасына чечим кылышты — ал эми туруктуу таасир болуп чыкты, статистикалык жактан сызыктуудан айырмаланбайт (бул тынчтандыруучу, анткени Huberman and Stanzl (2004) сызыктуу эмес туруктуу таасир манипуляцияга жол берерин корсоткон). Tóth et al. (2011), "Anomalous price impact and the critical nature of liquidity in financial markets" (Physical Review X 1, 021006), Capital Fund Management'тин фьючерс рынокторундагы дээрлик 500,000 метазаказын пайдаланып, тапты, мында бирдин катарында — жана азыр стандартка айланган тушундурмону берди: корунуучу стакан жашыруун ликвиддуулуктун абдан кичине болугу, ал орточонун айланасында баа боюнча жергиликтуу сызыктуу, ошондуктан аны жеп отуунун чыгымы квадрат тамыр катары масштабдалат. Кийинки эмгектер четтерди тактайт: Zarinelli, Treccani, Farmer and Lillo (2015), "Beyond the square root" (Market Microstructure and Liquidity 1(2)), жети миллион ANcerno институционалдык метазаказында квадрат тамыр заказ колемунун болжол менен эки декадасында жакшы туура келерин, бирок логарифмдик форма беш декада боюнча созулаарын корсотту; Bucci et al. (2019, Physical Review Letters 122, 108302) абдан кичине катышууда сызыктуу (Kyle сыяктуу) таасирден анын устундогу квадрат тамырга откуучу озгорууну документтештирди. Ал эми Frazzini, Israel and Moskowitz (2018), "Trading Costs" (SSRN 3229719), AQR'дин 19 жылдын ичиндеги $1.7 триллиондук жандуу аткарууларын пайдаланып, ишке ашкан чыгымдарды мурунку академиялык баалоолордон бир тартипте кичине тапты — бул башка урreferент менен, башка маалымат мазмуну менен башкалардын агымына тууралаган коэффициенттер сизге откорулбос жонундо эскертуу.
Backtest цикли учун практикалык корутунду — уч ырастоо. Таасир кубулмалуулук менен масштабдалат. Таасир колем боюнча ойду (концав), даражасы менен, аны оз маалыматыныз пайдасына далил бермейинче деп кароо керек. Префактор бирдин катарында, бирок мейкиндик, актив жана — эн маанилуу — сиздин оз соода стилиниз боюнча озгорот, ошондуктан кийинки болук аны коочуруп алуу эмес, тууралоо жонундо. Терен калибрлоо (ажыроо ядролору, убактылуу жана туруктуу ажыратуу, кайчылаш таасир) таасирди моделдоо макаласына тиешелуу; backtest'ке жалаган гана ийри сызык керек.
Иштелип чыккан сан, чоолуктарды бекитуу учун. BTC перп, кундук кубулмалуулук bps, мейкиндиктин кундук колему V_d = \6Y = 0.75\delta = 0.5$:
| Заказ колему | Таасир мучосу | + жарым-спред (0.5 bp) | ||
|---|---|---|---|---|
| $50k | 0.0008% | 0.0029 | 0.5 bp | 1.0 bp |
| $500k | 0.008% | 0.0091 | 1.7 bp | 2.2 bp |
| $5M | 0.083% | 0.0289 | 5.4 bp | 5.9 bp |
| $50M | 0.83% | 0.0913 | 17.1 bp | 17.6 bp |
Колемдо уч тартиптеги озгоруу чыгымда ~18 эсе айырманы камтыйт. Эч бир туруктуу сан ал таблицаны жаппайт, ал эми slippage_bps бекитилген бойдон позиция колемун озгортуучу ар бир стратегия салыштыруусу тынч эле 5M'дагы апельсин менен салыштырат.
Ийри сызыкты тууралоо: сиздин толтурууларыныз же эч кимдики
Оз толтурууларыныздан
Туура маалымат — бул сиздин оз TCA жазууныз: энелик заказ башталышындагы орточо, ишке ашкан толтуруу VWAP, заказ колему жана чечим убагындагы рынок абалы боюнча ар бир энелик заказ учун бир сап — так ишке ашыруу тартыштыгын олчоо кошумча продукт катары чыгарган маалымат топтому. Башталышка каршы bps'теги, ошол эле убактагы кубулмалуулукка нормалдаштырылган тартыштык катышууга регрессияланганда, сизге жана тикелей берет.
Тузак — бул шов. Жеке заказдын тартыштыгы — бул аткаруу терезесиндеги таасир плюс баа шову, ал эми шов устомдук кылат: 250 bps кундук кубулмалуулукта 10 мунотток аткаруу учун шов мучосу bps, а таасир сигналы болжол менен 3 bps болушу мумкун. Ар бир байкоого 0.15 сигнал-шов катышы — Almgren et al. эмне учун 700k заказды талап кылганынын жана эмне учун сиз чийки чекиттерге эмес, ар дайым чака (bucket) медианаларына тууралашыныз керек болгонунун себеби:
import numpy as np
import pandas as pd
def fit_sqrt_curve(orders: pd.DataFrame) -> tuple[float, float]:
"""orders: one row per parent order.
is_bps -- implementation shortfall vs arrival mid, bps, cost-positive
sigma_bps -- volatility at arrival (same window used at simulation time)
q_over_v -- parent size / market volume over the execution window
Fits I = Y * sigma * (Q/V)^delta on participation-bucket medians."""
df = orders.query("q_over_v > 0 and sigma_bps > 0").copy()
df["i_norm"] = df.is_bps / df.sigma_bps # impact in vol units
df["bucket"] = pd.qcut(np.log10(df.q_over_v), 12, duplicates="drop")
b = (df.groupby("bucket", observed=True)
.agg(i=("i_norm", "median"), qv=("q_over_v", "median")))
b = b[b.i > 0] # noisy buckets can go negative; drop, don't clip
delta, log_y = np.polyfit(np.log(b.qv), np.log(b.i), 1)
return float(np.exp(log_y)), float(delta)
Бир нече мин крипто энелик заказда бул тууралоо боюнча болжол менен ±30% жана боюнча ±0.1 чейин туруктуу — орой, бирок тууралаган ийри сызык менен божомолдонгон туруктуу сандын ортосундагы айырма 30% эмес, бул буткул форма. Ар чейректе кайра туурала; 'дагы озгоруу озу диагностика (туруктуу катышууда 'дын осушу мейкиндиктин ликвиддуулук режими озгоргонун же сиздин заказ агымыныз копурок маалымат камтыгандай/копурок аныктала турган болуп калганын билдирет).
Муздак старт: азырынча толтуруулар жок
Биринчи жандуу заказга чейин сизде ачык маалымат гана бар жана эки чынчыл вариант.
Стакан боюнча терендикти отуу. Ар бир колемдо L2 снапшоттор боюнча отуунун чыгымын орточолоныз, так толтуруу симулятору ар бир соода учун жасагандай, бирок ийри сызыкка чогултулган. Бул белгилуу белгиси бар томонку чек: снапшот баары башкалардын агымынан аман калган ликвиддуулукту корсотот, толтуруу динамикасы корунбойт, ал эми сиздин мурунку бала заказдарыныз кийинкилери келгенге чейин стаканды жылдырат.
def curve_from_book(snapshots, sizes_usd, safety=1.75):
"""snapshots: iterable of (mid, asks), asks = [(price, qty), ...] best-first.
Depth-walk cost is a LOWER bound on realized cost -- scale it."""
rows = []
for q_usd in sizes_usd:
costs = []
for mid, asks in snapshots:
rem, paid, got = q_usd / mid, 0.0, 0.0
for p, q in asks:
x = min(q, rem)
paid += x * (p - mid); got += x; rem -= x
if rem <= 0:
break
if rem <= 0:
costs.append(paid / got / mid * 1e4)
rows.append((q_usd, safety * float(np.median(costs))))
return pd.DataFrame(rows, columns=["q_usd", "cost_bps"])
Ачык сооданын изин калтыруу. Агрессор соодаларын колему боюнча топко болуп, ар биринен бир нече секунддан кийин орточонун жылышын олчоп, эмпирикалык таасир ийри сызыгын окуп чыгыныз. Бул ойду форманы жана болжол менен туура -масштабдоону калыбына келтирет, бирок денгээл сиз алдын ала белгиси жок багытта жантайган: ачык басмалар — башка соодагерлердин чечими, ошондуктан чон басмалар шарттуу турдо маалыматтуу (сиздин маалыматсыз кайра тендештируугонго салыштырмалуу олчонгон таасирди жогорулатат), ал эми эн ликвиддуулукка сезгич соодагерлер заказдарды так жашыруу учун болуштурушот (аны томондотот). Аны денгээл учун эмес, форма учун колдонуныз.
Кандай болбосун, муздак старт протоколу мындай: ачык-маалымат ийри сызыгын алыныз, 1.5–2 коопсуздук факторун колдонуныз, кичине соодаланыз жана аны алмаштыруучу TCA таблицасын толтура баштаныз. Ачык ийри сызык — жук которуучу дубал эмес, каркас.
Режимге коз карандылык: ошол эле заказ, беш эсе чыгым

'тогу ар бир мучо абалга коз каранды, ал эми кубулмалуулук секирган учурда алардын баары бир эле убакта сизге каршы кыймылдайт. Спреддер кыска мооноттук кубулмалуулукка пропорционалдуу, ошондуктан 5–10 эсе кенейет. таасир мучосуно тикелей кирет. Колем да осот — бул жон эле карасак катышууну азайтат — бирок ал бологучтогу 'га караганда азыраак осот, ал эми бул компенсация жаманыраак эффектти жашырат: орточого жакын котировкаланган терендик соодаланган колемго караганда алда канча тезирээк кыйрайт, ошондуктан ишке ашкан ийри сызык тууралаган формула жалаган гана стресстик киргизуулордон болжолдогондон копурок тик болот.
Конкреттуу, жогорудагы тууралаган ийри сызык менен, $3M BTC заказы:
- Тынч кун: bps, спред 1 bp, V_d = \6= 0.5 + 0.75 \times 150 \times \sqrt{0.0005} = 0.5 + 2.5 = 3.0$ bps.
- Кризис куну (LUNA, FTX денгээлиндеги): bps, спред 6 bps, V_d = \18= 3.0 + 0.75 \times 700 \times \sqrt{0.000167} = 3.0 + 6.8 = 9.8$ bps.
Формула 3.3 эсе дейт. Стресстик кундордогу ишке ашкан TCA дайыма формуладан жогору чыгат — квадрат тамыр мучосу коробогон терендиктин кыйроосу — жана так ушул жерге олчонгон стресс копойткучу тиешелуу. Биздин толтурууларда кризис-чакасынын калдыгы стресстик киргизуу формуласынын устуно 1.4–1.8 эсе журуп, ошол эле заказ учун жалпы стресс чыгымын тынч чыгымдан 4.5–6 эсе жогору кетирет. Бул "ошол эле заказ кубулмалуулук секиргенде 5 эсе кымбат турат" дегендин чынчыл булагы: болжол менен 2 эсе колемго таза 'дан, 2 эсе спредден, а калганы терендиктин колем статистикасы моюнга алгандан тезирээк буулануусунан.
Ишке ашыруу — бул шарттуу чыгым модели: ийри сызыкты ар бир режим чакасы боюнча туураланыз, же эквиваленттуу турдо бир ийри сызыкты жана чечим убагында эсептелген ишке ашкан-кубулмалуулук квантилине байланган копойткуч таблицасын туураланыз (жалаган гана артка калган терезе — толук улгудо эсептелген режим белгиси чыгым модели аркылуу контрабанда менен киргизилген алдыга кароо):
| Режим (артка калган 1с кубулмалуулук квантили) | Жыштык | Спред копойт. | Ийри сызык копойт. (олчонгон) |
|---|---|---|---|
| Тынч (< p25) | 25% | 0.6x | 0.7x |
| Нормалдуу (p25–p75) | 50% | 1.0x | 1.0x |
| Жогорулаган (p75–p95) | 20% | 1.8x | 1.6x |
| Стресс (> p95) | 5% | 5–10x | 3–6x |
Frazzini, Israel and Moskowitz (2018) оздорунун институционалдык маалыматтарында ошол эле кубулушту документтештирет: ишке ашкан чыгымдар ошол эле убактагы кубулмалуулук менен куч менен бирге кыймылдайт, ал эми убакытка коз каранды кубулмалуулук мучосу жок чыгым модели так куйруктарды туура эмес баалайт. Бул таблица анын 5% стресс сабы божомолдогондон копурок маанилуу болушунун себеби — корреляция: стратегиялар бул саптарды бир калыпта иргебейт. Кубулмалуулук чыгуу системасы соодасынын копчулугун эки томонку сапта жасайт. Тынч рынок мейкиндиги устунку сапта табат жана томонкусу аркылуу токтойт. Ар бир стратегиянын соодасын анын озунун режим гистограммасы менен таразалоо — баарына шартсыз орточону алуунун ордуна — окуяга багытталган системалар учун бул буткул беттеги эн чон PnL тузотуусу, тепкичтин каалагандай эки коншу тепкичинин ортосундагы айырмадан копурок баалуу.
Сезгичтик эксперименти: торт чыгым модели, бир кайра аралашкан рейтинг
Эгерде чыгым модели PnL'ди туруктуу жылыш менен озгортсо, тандоо учун булардын эч бири маанилуу болмок эмес — ар бир вариант бирдей жылмак жана argmax аман калмак. Ал андай эмес, анткени чыгым сезгичтиги варианттар боюнча бир тартипте озгорот. Муну конкреттуу кылган эксперимент:
Орнотуу. Бир стратегия уй-булосу — BTC жана ETH перптеринде z-score орточого кайтуу жана Donchian чыгуусу, 1-мунотток барлар, 18 ай — кармоо горизонту (15m / 1h / 4h / 24h) жана кируу босогосу боюнча тор менен: 20 вариант, кунуно бир жактуу айланма 0.4x'тен 11x стаканга чейин, 5 мунотто аткарылган $250k клиптер. Ар бир вариант ар бир чыгым модели учун бир жолудан backtest'телет:
- M0: комиссиялар гана;
- M1: комиссиялар + 5 bps туруктуу;
- M2: комиссиялар + жарым-спред + ;
- M3: комиссиялар + тууралаган ийри сызык , жогорудагы режим копойткуч таблицасы менен.
Ошол эле толтуруулар, ошол эле сигналдар, ошол эле код жолу — чыгым модели backtester'ге конструктор аргументи катары берилет, каалагандай биринчи класстагы параметр берилгендей:
from dataclasses import dataclass
@dataclass(frozen=True)
class SqrtCost:
y: float = 0.75 # fitted impact coefficient
delta: float = 0.5 # fitted exponent
fee_bps: float = 2.5 # taker fee, always separate
def cost_bps(self, q_usd: float, st) -> float:
part = q_usd / st.window_volume_usd
return (self.fee_bps + st.stress_mult *
(st.spread_bps / 2 + self.y * st.sigma_bps * part ** self.delta))
for model in [ZeroCost(), ConstCost(5.0), VolCost(0.08), SqrtCost()]:
for variant in grid:
results[(model, variant)] = backtest(variant, cost_model=model)
Натыйжалар (окулго жараша иштоо; жылдык таза кирешелер):
| Вариант | Айланма/кун | M0 | M1 (5 bp) | M2 | M3 (ийри) | Рейтинг M1 → M3 |
|---|---|---|---|---|---|---|
| MR-15m, z=1.0 | 11.4x | +187% | +61% | +9% | −14% | 1 → 17 |
| MR-15m, z=1.5 | 7.9x | +141% | +52% | +15% | −2% | 2 → 13 |
| BO-1h, k=2 | 3.1x | +74% | +43% | +28% | +19% | 3 → 4 |
| MR-1h, z=2.0 | 2.4x | +58% | +38% | +25% | +21% | 4 → 2 |
| BO-4h, k=3 | 0.9x | +39% | +33% | +29% | +26% | 7 → 1 |

Рейтингдер ортосундагы рейтинг корреляциялары (Kendall ): — туруктуу сан эч нерсени араан кайра иргейт, ал салык, модель эмес. — M1'дин топ ондугунун алтоосу M3'тун алдында топ ондуктан чыгат, ал эми M1'дин чемпиону +61%'тен терске отот. — кубулмалуулук мучосу озу кайра иргоонун копчулугун калыбына келтирет; колем мучосу терезе колемуно салыштырмалуу чон соодалаган варианттар учун иштин калганын аткарат. Механизм — так M0 тепкичиндеги тандоо уулуулугу: жалпак 5 bps чындап 15 bps турган (чон, тез, стресстеги) соодаларды субсидиялайт жана 2 турганды (кичине, чыдамдуу, тынчта) ашык салыктайт, ошондуктан M1 боюнча рейтингдоо чыныгы чыгымдары эн коп томон бааланган варианттарды системалуу турдо жогорулатат. Оптимизатор альфаны тапкан жок; ал сиздин чыгым моделиниздин ката мучосун тапты.
Мына ошондуктан чыгым модели walk-forward болуштуруу же максат функциясы менен бир психикалык категорияга кирет: сиз озгортуучу биринчи класстагы backtest параметри, бир жолу орноткон чойрого-байланган туруктуу эмес. Эгерде вариантдын рейтинги M2 менен M3 боюнча туруктуу болсо, анын устомдугу чыгымдарга салыштырмалуу чыныгы. Эгерде анын рейтинги тепкич боюнча жогору жылганда кыйраса, сиз анын чыгым-модели артефакти экенин билдиниз — так walk-forward оптималдаштырууда улгудон тышкары олгон стратегия менен бирдей эпистемикалык окуя, жана ал ошол эле жоопко татыктуу. Ал эми эгерде сиз M1 боюнча 200 варианттын argmax'ын тандаган болсоныз, дефляцияланган Sharpe логикасы бир кырсык менен колдонулат: сиз тест статистикасынын озу жогорку-айланмалуу кируулордун пайдасына жантайган коп-текшеруу издоосун откордунуз.
Чынчыл чектер: PnL тилке катары
Акыркы тартип чыгым модели тууралагандан кийин да белгисиз экенин моюнга алуудан келип чыгат. 'дын ишеним аралыгы бар, стресс копойткучтору бир аз куйрук кундордон бааланган, ал эми келечек озунун режимдерин тартат. Ошондуктан таза PnL'ди сан катары билдирууну токтотуныз. Аны аталган чыгым сценарийлери боюнча тилке катары билдириниз:
- Оптимисттик: терендик-отуунун томонку чеги, стресс копойткучтору жок. Эч качан жеке билдирбениз; анын жалаган гана иши — эн жакшы учурду чектоо.
- Реалисттик: тууралаган ийри сызык, тууралаган режим копойткучтору — сиздин борбордук баалооныз.
- Пессимисттик: , спред , стресс сабы ар дайым анын p75 маанисинен колдонулат. Болжол менен: ар бир параметрдин ишеним аралыгынын досчул эмес четинде эсептелген тууралаган ийри сызык.
Эки чечим эрежеси тилкени иштетмелуу кылат. Биринчи: пессимисттикке болуштур, реалисттикти билдир. Реалисттик моделде гана аман калган стратегия — бул сиздин чыгым туураманыздын кымбат багытта катасы жок деген коюм — сиз анык коебогон коюм. Экинчи: морттук катышын — тилке кендиги гросс PnL боюнча — байканыз. Жогорудагы эксперименттен: BO-4h 0.9x айланмада гросс +39% корсотот, тилке [+22%, +29%], морттук 0.44. MR-15m 11.4x'те гросс +187% корсотот, тилке [−31%, +34%] — морттук 2.2, ал эми стратегиянын белгиси тилкенин ичинде озгорот. Ал экинчи стратегиянын сиздин учурдагы чыгым билиминиздин абалында аныкталма белгиси жок; чынчыл ырастоолор — "биз билбейбиз" жана "билмейинче айланманы азайт." +34% басып чыгарган жана тилкенин −31% четин откоргон backtest оптимисттик эмес, ал жалганда чыккыс.
Тилке чыгарууга эч нерсе турбайт — азыр кандай болсо да иштетип жаткан чыгым-модель иргоосундо дагы уч жазуу — жана ал сухбоолорду озгортот. "Бул стратегия 20% табат" ишенууго чакырат. "Бул стратегия биздин чыгым сценарийлерибиз боюнча 11–19% табат жана пессимисттиктин алдында он бойдон калат" болуштурууга чакырат.
Мунун кайда туташканы
Backtest кыймылдаткычында чыгым модели толтуруу симулятору аткарылган санды кайра берген жерде так турат: толтуруулар сиз эмне алганынызды аныктайт, чыгым ийри сызыгы сиз ага эмне тологонунузду аныктайт, ал эми ошол тепкичте L2'дон жогору болгон тепкичтер (терендик-отуу, кезек моделдери) чыгым моделин акырындык менен толтуруу моделинин озуно сингирет — ийри сызык сиз стаканды тикелей симуляциялабаган учурда пайдаланган параметрдик орун баскар. Параметрлер сизде болгондо оз TCA жазууныздан жана болбогондо коопсуздукка-масштабдалган ачык маалыматтан келет. Функционалдык форма кырк жылдык теориядан жана олчоодон келет — Kyle (1985) эмне учун ар бир долларга чыгым ликвиддуулукко коз каранды экени учун, Almgren et al. (2005) жана Tóth et al. (2011) ойду (концав) закондун озу учун, ал эми Almgren-Chriss пландаштыруу шериги катары жана нейрондук таасир моделдери болжолдоо чек арасы катары. Бул макала кошуп жаткан нерсе — жумуш агымы: ийри сызыкты туураланыз, аны режимге шарттаныз, аны параметр сыяктуу иргениз жана тилкени билдириниз. Мунун эч бири асыл эмес. Мунун баары slippage_bps = 5'тин кайсы жагында сиздин стратегияныз чындап турганын жандуу турдо табуудан арзаныраак.
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.