АЛГОтрейдинг | ALKO трейдинг | CRYPDE | HFT
رفتن به کانال در Telegram
Крипта, HFT, ultra-low-latency безумие Контакт - https://t.me/alko_trading?direct
نمایش بیشتر959
مشترکین
+224 ساعت
+117 روز
+2830 روز
آرشیو پست ها
Хроники алко-трейдинга,
или почему я сегодня отвечаю всем плохо.
(я всегда всем плохо отвечаю, но сегодня особенно)
1. В пятницу я запустил новый mm, который пилил последние пару лет:
правильная фильтрация toxic, правильное уравнивание main vs hedge, правильная телеметрия.
2. Конечно, когда еще выкатывать релизы - в пятницу вечером.
Конечно, все пошло не так, я понял что старое хранилище сделок не подходит для нового mm.
3. Исправлять старое хранилище - около 4х часов, запилить новое - около 4х часов.
Ну я и сделал новое.
4. В итоге сделки пишутся в новое хранилище, единороги пукают бабочками,
но системы статистики которая смотрит в хранилище и говорит сколько мы заработали - пока нет.
5. И вот я ударными темпами пишу эту статистику, написал, и она выдает за вчерашний день просто пиздец.
На XMR проскальзывния по 20..100 пунктов.
6. И я такой: бля, это в статистике баг, или действительно день хуйовый.
Оказалось - и то и другое: и баги в хранилище, и в статистике, и день очень хуйовый.
7. И сегодня день очень хуйовый, я поправил статистику, но нарыл второй баг в FSM машине, где по каким-то магическим причинам я не отменяю ордера на whitebit. И похоже, кто-то вчера это просек и как начал меня ебать палками по 50 bps.
В момент публикации этого поста я постратил уже 8+ часов только на составление списка багов, который мне надо исправить срочно. Нет, даже не срочно, а внезапно!
PS: из хороших новостей - новый amm побеждает toxic везде. Не смотря на огромные палки в XMR вчера и сегодня - я успеваю его фильтровать и не резать volume. Пройобываютсь на проскальзываниях, но это поправимо.
#chronicles
Repost from 404
Я щас увидел в видосе что 95% наличных денег в Сомали фальшивые потому что у правительства нет оборудования для производства и их печатает почти любой нигер с принтером.
Рассказываю нда темку 100% профит:
Едем в Сомали, покупаем принтеры и печатаем бабки, за бабки покупаем ресурсы и экспортируем их в развитые страны, на прибыль покупаем еще принтеров
все, они закосили UTA API v1, и по тихому переименовали UTA2 в UTA.
Методы работают, если знать что вызывать.
Утка кукухи заебала
(Перевод на нормальный: kucoin - кукуха, UTA - утка)
1. У кукухи есть два типа аккаунта - classic & unified (UTA).
2. Также есть два API: classic API & pro API.
Classic работает только с Classic-аккаунтами, а Pro работает со всеми аккаунтами - и classic и UTA.
3. Надавно они переименовали Pro API в UTA API, просто переименовали, чтобы всех запутать :)
Теперь UTA API умеет работать с UTA-аккаунтами и Classic-аккантами тоже.
4. Но до недавнего времени не методы были доступы, то есть API разные по своей сути.
5. А еще для Classic API и UTA (Pro) API разные colocation.
А еще есть три разных colocation-домена (похоже в разных az) и некоторые домены не сильно удачные.
Но подключают тебе только один из трех, а за остальные надо платить по штуке баксов в месяц.
6. И сегодня утром они выкатили UTA2 API, которое такое же как UTA, только не совсем.
И похоже оно уже не будет поддерживать classic accounts.
Сукоблять как это все запомнить!
Вызываю помощь зала:
Кто знает какие биржи находятся в HK? (Гонг-Конг)
После того как OKX переехал из HK в TOKYO, у меня осталась дорогущая инфраструктура в HK и линки из Сингапура и Токио. И меня жаба давит разбирать эту инфраструктуру.
Может найдем шо можно поторговать в HK.
PS: LBANK знаю, но это ж LBANK :)
Ваша любимая рубрика - цепочка багов
сегодня у нас на обед ламерский пиздец, два раза
1. Я храню логи в RDS MariaDB. Они собираются через всякие бинарные протоколы, но через минуту-две они попадают в одну базу данных, для того чтобы можно было шутро делать выборки и мерять latency.
Там производительность не сильно играет роль, можно 100 ms и подождать пока MariaDB потупит.
2. Так исторически сложилось (и это не правильно конечно), что метки времени я храню в timestamp(6).
То есть, с точностью до микросекунд.
Обычно биржи выдают все с точностью до ms, а phpшный microtime(true) выдает до 6 знаков после запятой.
3. И вот есть у меня переменная $ts, в которой записано float(1787744920.088982) - то есть тут точность микросекунды (не миллисекунды)
И начинаю я ее вставлять в базу через INSERT ... FROM_UNIXTIME($ts).
Что может пойти не так?
4. Мои поздравления, мы только что потеряли три знака после запятой: округлили точность до миллисекунд и потеряли микросекунды.
Почему? Потому что php по умолчанию имеет precision 14, то есть если мы конвертим float переменную в string - то она округляется автомоматически.
6. В результате в базе все значения округлены, сортировка логов по ts сбита и я ДВА ГОДА дебажил не то.
#bugchain
'p' => 0.0, // tsPush
'e' => 0.0, // tsEvent
'r' => 0.0, // tsReceived
'd' => 0.0, // tsDelivered
Сокращщенно - PERD
#hellcodeНестационарность
Автокорреляция
Гетероскедастичность
Fat Tails
Extreme Value Theory
Bootstrap
Walk-Forward Validation
Purged Cross-Validation
Embargo между выборками
Out-of-Sample Testing
Paper Trading и Shadow Trading
Statistical Significance vs Economic Significance
Реалистичный бэктест
Event-Driven Simulation
Tick-by-Tick Replay
L2/L3-реконструкция стакана
Симуляция matching engine
Моделирование позиции в очереди
Queue Depletion
Partial Fill Simulation
Моделирование cancel/fill race
Latency Model
Feed Latency
Order Entry Latency
Exchange Processing Latency
Реакция других участников
Market Impact Model
Slippage Model
Комиссии и rebates
Минимальный шаг цены
Ограничения типов заявок
Торговые паузы и аукционы
Реальные правила площадки
Delisted и expired инструменты
Point-in-Time Data
Детерминированное воспроизведение
Расхождение backtest, simulation и production
Симуляция не должна «заполнять» заявку только потому, что цена её коснулась
Оценка стратегии
Gross P&L и Net P&L
Realized и Unrealized P&L
Spread Capture
Markout после исполнения
Markout Curves
Fill Rate
Hit Rate
Win Rate
Profit Factor
Sharpe Ratio
Sortino Ratio
Maximum Drawdown
Turnover
Capacity
Capital Efficiency
Margin Usage
Inventory Distribution
Holding Time
P&L Attribution
Alpha P&L
Spread P&L
Inventory P&L
Hedge P&L
Fee и Rebate P&L
Adverse Selection Cost
Latency Cost
Opportunity Cost
P&L по площадкам, инструментам и режимам
Риск
Position Limits
Notional Limits
Exposure Limits
Order Size Limits
Message Rate Limits
Fat-Finger Controls
Price Collars
Kill Switch
Cancel-on-Disconnect
Maximum Loss Limit
Intraday Drawdown Limit
Inventory Limits
Concentration Risk
Basis Risk
Hedge Risk
Residual Delta
Gamma, Vega, Theta и Rho — для опционов
Correlation Risk
Liquidity Risk
Gap Risk
Overnight Risk
Event Risk
Model Risk
Execution Risk
Venue Risk
Counterparty Risk
Clearing Risk
Margin и Liquidation Risk
Stress Testing
Scenario Analysis
Real-Time Greeks
Real-Time P&L
Independent Risk State
Что делать, когда стратегия не знает свою настоящую позицию
Режимы рынка и конкуренция
Volatility Regimes
Liquidity Regimes
Spread Regimes
Trending vs Mean-Reverting Market
Normal vs Stressed Market
Новости и макрособытия
Open, Close и Lunch Effects
Intraday Seasonality
Expiration Effects
Month/Quarter-End Effects
Index Rebalancing
Futures Roll
Earnings и Corporate Events
Поведение конкурирующих маркет-мейкеров
Queue Wars
Quote Stuffing
Spoofing и Layering — понимать, но не заниматься
Стратегическая реакция рынка на собственные заявки
Alpha Decay после запуска
Crowding
Capacity Limits
Инструменты
Акции
Фьючерсы
Опционы
ETF
Облигации
FX
Криптоактивы
Perpetual Futures
Funding Rates
Индексы
Базовый актив и дериватив
Контрактные спецификации
Multiplier
Settlement
Physical vs Cash Settlement
Margin
Initial и Maintenance Margin
Short Locate и Borrow
Dividends
Interest Rates
Carry
Basis
Term Structure
Yield Curve
Volatility Surface
Put-Call Parity
Greeks
Implied Volatility
Посттрейд и реальность
Trade Capture
Clearing
Settlement
Allocations
Give-Ups
Confirmations
Position Reconciliation
Cash Reconciliation
Fee Reconciliation
Exchange Busts и Corrections
Late Trades
Broken Trades
Corporate Actions Processing
Funding и Borrow Costs
Margin Calls
End-of-Day Positions
Books and Records
Audit Trail
Clock и timestamp requirements
Регуляторная отчётность
Market Abuse Surveillance
Ну вы сами попросили:
а теперь давай ещё для трейдинга список. Вот именно для HFT mean reversion моделей. Чтобы прямо совсем от жизни охуелиСтакан заявок (Limit Order Book, LOB) Matching Engine Price-Time Priority Pro-Rata Matching FIFO и альтернативные правила матчивания Bid, Ask и Mid Price Bid-Ask Spread Tick Size Lot Size Глубина рынка (Market Depth) Ликвидность Скрытая ликвидность Iceberg-заявки Queue Position Queue Dynamics Order Book Imbalance Microprice Order Flow Trade Flow Signed Volume Агрессивные и пассивные заявки Maker/Taker Rebates и комиссии Adverse Selection Toxic Flow Price Impact Market Impact Slippage Fill Probability Partial Fills Cancel-to-Trade Ratio Order-to-Trade Ratio Self-Trading Locked и Crossed Markets Fragmentation ликвидности Консолидированный и локальный стакан Lead-Lag между площадками Price Discovery Latency Arbitrage Last Look — где применимо Аукционы открытия и закрытия Volatility Auctions Trading Halts Limit Up/Limit Down Правила конкретной биржи Level 1, Level 2 и Level 3 данные Market-by-Price и Market-by-Order Инкрементальные и snapshot-фиды Sequence Numbers Gap Detection и восстановление фида Биржевые timestamps Exchange Time vs Receive Time Normalization рыночных данных Corporate Actions Symbol Mapping Instrument Reference Data Торговые календари Сессии и фазы торгов Roll фьючерсных контрактов Continuous Futures Очистка ошибочных тиков Out-of-Order Events Дедупликация сделок и котировок NBBO или его локальные аналоги SIP vs Direct Feeds Feed Arbitration Stale Quotes Cross-Venue Data Alignment Заявки и исполнение Market Orders Limit Orders Stop Orders IOC FOK GTC, GTD и Day Orders Post-Only Reduce-Only Pegged Orders Midpoint Orders Hidden Orders Cancel/Replace Mass Cancel Self-Trade Prevention Order Acknowledgement Reject Codes Execution Reports Drop Copy Pre-Trade Risk Checks Smart Order Routing Venue Selection Order Splitting Child Orders Execution Scheduling Queue-Aware Execution Управление потерянными и неопределёнными заявками Состояние заявки как конечный автомат Race между fill и cancel Duplicate и late fills Reconciliation позиций и сделок HFT-стратегии Маркет-мейкинг Управление спредом Управление инвентарём Reservation Price Inventory Skew Quote Skew Dynamic Widening Statistical Arbitrage Cross-Venue Arbitrage Cash-and-Carry Basis Trading Calendar Spreads Index Arbitrage ETF Arbitrage Futures-Spot Arbitrage Triangular Arbitrage Lead-Lag Trading Order Flow Prediction Short-Term Alpha Liquidity Provision Liquidity Taking Rebate Capture Auction Trading Relative-Value Trading Pairs Trading Event-Driven HFT Volatility Trading Options Market Making Delta Hedging Gamma Scalping Сигналы и модели Returns на разных горизонтах Mid-Price Returns Microprice Signals Order Book Imbalance Trade Imbalance Queue Imbalance Order Flow Imbalance Momentum Mean Reversion Short-Term Reversal Lead-Lag Signals Cross-Asset Signals Cross-Venue Signals Volatility Estimation Realized Volatility Arrival Rates заявок Cancellation Intensity Hawkes Processes Probability of Fill Probability of Adverse Move Expected Markout Expected Value после комиссий Signal Decay Half-Life сигнала Feature Leakage Regime Detection Online Learning Concept Drift Калибровка вероятностей Статистика и исследование Математическое ожидание Дисперсия и ковариация Корреляция и ложная корреляция Условная вероятность Байесовское обновление Проверка гипотез Доверительные интервалы Multiple Testing Data Snooping Selection Bias Survivorship Bias Look-Ahead Bias Overfitting Backtest Overfitting P-Hacking
Я наткнулся на пост "Кто расскажет вайб-кодерам про..."
Вот отредактированная версия что надо знать именно технического для пиляния HFT-кода. Это без трейдинга.
• Ограничение количества запросов (Rate Limiting)
• Кэширование
• Балансировку нагрузки
• Обратные прокси
• АРІ-шлюзЫ
• CICD
• Circuit Breakers
• Таймауты
• Повторные запросы (Retries)
• Экспоненциальную задержку между повторами (Exponential Backoff)
• Идемпотентность
• Очереди сообщений
• Pub/Sub
• Событийную архитектуру
• Распределённые транзакции
• Паттерн Saga
• Очереди недоставленных сообщений (Dead Letter Queues)
• Расхождение часов
• DNS
• TCP vs UDP
• НТТP/2 иНТТР/3
• gRPC
• Webhooks
• Версионирование API
• Семантическое версионирование
• Infrastructure as Code
• Кэширование сборки
• Dependency Hell
• Инциденты в продакшене
• Дежурства (On-call)
• TLS
• Шифрование данных при передаче
• Миграции баз данных
• Версионирование схем
• Аварийное восстановление
• Резервные копии
• Failover
• Развёртывание в нескольких регионах
• Chaos Engineering
• Оптимизацию расходов
• Cold Starts
• Задержку (Latency)
• Пропускную способность (Throughput)
• P99 Latency
• Tail Latency
• Сетевые разделения
• Горизонтальное масштабирование
• Вертикальное масштабирование
• CDN
• Кэширование на edge-серверах
• Инвалидацию кэша
• Feature Flags
• Canary Releases
• Rolling Deployments
• Откаты
• Health Checks
• Liveness-и Readiness-пробы
• Мониторинг
• Логирование
• Распределённую трассировку
• Метрики
• Алерты
• SLO
• SLI
• Бюджеты ошибок
• Наблюдаемость (Observability)
• Управление секретами
• Cron-задачи
• WebSockets
• Long Polling
• Server-Sent Events
• Индексацию баз данных
• Оптимизацию запросов
• N+1 запросов
• Пулы соединений
• Реплики для чтения
• Шардинг
• Партиционирование
• Репликацию
• Выбор лидера
• САР-теорему
• Eventual Consistency
• Оптимистические блокировки
• Пессимистические блокировки
• Распределённые блокировки
• Состояния гонки (Race Conditions)
• Взаимные блокировки (Deadlocks)
• Утечки памяти
• Сборку мусора
• Потокобезопасность
• Backpressure
• Автомасштабирование
Могу рассказать про конкретные задержки в aws.
На паре бирж я перешел на private peering и теперь я бегаю к ним по private ip без каких-либо load balancer (AWS ELB) и без шифрования трафика (TLS).
1. ELB добавляет примерно 0.6 ms.
Например, round trip до сервера через private peering внутри aws будет 0.15-0.2 ms.
200 us, в одну сторону 100 us.
Если есть shared cluster placement group - 30 us.
2. Шифрование трафика TLS (блядский https & wss)
Я не могу сказать точно насколько все быстрее на серверной стороне, но на клиенте если идет трафик без шифрования - то на стабильно на 2 us быстрее.
#hellcode #network
