Forwarded from On the way to 10x engineering
Hard skills in HFT (for software execution devs)
- С++ - потому что большинство HFT фирм используют для low latency именно его;
- template metaprogramming - в HFT используется значительно чаще чем вне, потому что из-за желания срезать каждую возможную микросекунду многое (иногда даже слишком ) пишется на шаблонах;
- как работает какая нибудь конкретная биржа, какие у неё feed & transaction протоколы - спецификации обычно опубликованы на сайте биржи;
- как подписаться на market feed через multicast udp (и что делать если начнёшь терять пакеты);
- как быстро читать multicast udp с сетевой карточки через user space networking и построить вокруг этого mainloop (см. Solarflare/EfVi) и понимать почему kernel space networking не подойдёт;
- как быстро собирать order book из market feed;
- как максимально упаковать часто используемые данные в L1 cache, а редкоиспользуемые отложить в сторонку;
- как работает процессор и память (см. WEPSKAM и учебный FPGA);
- как спроектировать торговое приложение, какие в нём должны быть компоненты;
- как написать надёжные автотесты;
- как сделать бизнес-логику по-максимуму независимой от специфики конкретной биржи;
- как присоединить приложение к биржевым сессиям и ввести ограничение на транзакции в секунду;
- как добавить ограничение рисков и гарантировать, что они сработают.
@engineer10x
- С++ - потому что большинство HFT фирм используют для low latency именно его;
- template metaprogramming - в HFT используется значительно чаще чем вне, потому что из-за желания срезать каждую возможную микросекунду многое (
- как работает какая нибудь конкретная биржа, какие у неё feed & transaction протоколы - спецификации обычно опубликованы на сайте биржи;
- как подписаться на market feed через multicast udp (и что делать если начнёшь терять пакеты);
- как быстро читать multicast udp с сетевой карточки через user space networking и построить вокруг этого mainloop (см. Solarflare/EfVi) и понимать почему kernel space networking не подойдёт;
- как быстро собирать order book из market feed;
- как максимально упаковать часто используемые данные в L1 cache, а редкоиспользуемые отложить в сторонку;
- как работает процессор и память (см. WEPSKAM и учебный FPGA);
- как спроектировать торговое приложение, какие в нём должны быть компоненты;
- как написать надёжные автотесты;
- как сделать бизнес-логику по-максимуму независимой от специфики конкретной биржи;
- как присоединить приложение к биржевым сессиям и ввести ограничение на транзакции в секунду;
- как добавить ограничение рисков и гарантировать, что они сработают.
@engineer10x
Stack Overflow
How much of ‘What Every Programmer Should Know About Memory’ is still valid?
I am wondering how much of Ulrich Drepper's What Every Programmer Should Know About Memory from 2007 is still valid. Also I could not find a newer version than 1.0 or an errata.
(Also in PDF form on
(Also in PDF form on
Forwarded from AI для Всех (Artemii)
This media is not supported in your browser
VIEW IN TELEGRAM
ML на графах в задаче e-commerce
Сегодня у нас пост присланный подписчиком: @marinadkntm (спасибо 🤩)
Допустим, мы решаем задачу поиска одинаковых товаров в онлайн-магазине.
Классический подход:
1. Подбор кандидатов. На этом этапе используется грубый, но быстрый алгоритм для подбора большого количества схожих объектов, потенциальных пар
2. Проверка пар моделью (т. н. матчинг) — более точная проверка того действительно ли в паре одинаковые объекты
У объекта может быть более одного дубликата, и хочется их объединять в одну группу, один кластер.
Просто склеить все найденные пары в один кластер — не лучшая идея, поскольку предсказания модели на 2 этапе имеют не нулевой процент ошибок.
На помощь приходит community detection (поиск сообществ), который представляет собой кластеризацию на графах.
В случае с товарами можно построить из них граф, рёбра между которыми будут соответствовать предсказанию модели, что товары являются дубликатами. На таком графе community detection поможет выделить группы одинаковых товаров.
Некоторые преимущества такого подхода:
1. Не нужно подбирать гиперпараметры. Например, задавать количество кластеров
2. Скорость. При таком подходе нет необходимости считать расстояние каждого объекта с каждым.
3. Масштабируемость. Можно запускать на больших графах параллельно на множестве executors
4. Self-supervised и Semi-supervised подходы. Задачу можно решать как при отсутствии какой-либо информации о кластерах, так и при заданной на части вершин информации о сообществах
Читайте подробнее про алгоритмы кластеризации на графах в:
📕 Статья на Habr
Сегодня у нас пост присланный подписчиком: @marinadkntm (спасибо 🤩)
Допустим, мы решаем задачу поиска одинаковых товаров в онлайн-магазине.
Классический подход:
1. Подбор кандидатов. На этом этапе используется грубый, но быстрый алгоритм для подбора большого количества схожих объектов, потенциальных пар
2. Проверка пар моделью (т. н. матчинг) — более точная проверка того действительно ли в паре одинаковые объекты
У объекта может быть более одного дубликата, и хочется их объединять в одну группу, один кластер.
Просто склеить все найденные пары в один кластер — не лучшая идея, поскольку предсказания модели на 2 этапе имеют не нулевой процент ошибок.
На помощь приходит community detection (поиск сообществ), который представляет собой кластеризацию на графах.
В случае с товарами можно построить из них граф, рёбра между которыми будут соответствовать предсказанию модели, что товары являются дубликатами. На таком графе community detection поможет выделить группы одинаковых товаров.
Некоторые преимущества такого подхода:
1. Не нужно подбирать гиперпараметры. Например, задавать количество кластеров
2. Скорость. При таком подходе нет необходимости считать расстояние каждого объекта с каждым.
3. Масштабируемость. Можно запускать на больших графах параллельно на множестве executors
4. Self-supervised и Semi-supervised подходы. Задачу можно решать как при отсутствии какой-либо информации о кластерах, так и при заданной на части вершин информации о сообществах
Читайте подробнее про алгоритмы кластеризации на графах в:
📕 Статья на Habr
Forwarded from Анализ данных (Data analysis)
Нереальной полезности пост — ловите Cheatsheet по Machine Learning, тут разобраны самые основные понятия и даже больше:
❯ метод понижения размерности PCA
❯ ложноположительные, ложноотрицательные ошибки
❯ наивный Байесовский классификатор
❯ регрессионный анализ
❯ регуляризация
❯ архитектура, устройство, известные реализации нейронных сетей CNN
❯ базовые структуры данных: массив, связный список, стек, очередь, хеш-таблица, дерево
Поможет без проблем подготовиться к собесу и освежить знания
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from • Dmitry Legchikov
Бывает ли у вас так, что вам не хватает времени сделать все задуманное?
У меня да.
Как исправить ситуацию?
Воспользоваться техниками тайм менеджмента!
Их много разных.
Разные люди советую разные.
Одни говорят метод помодоро самый лучший.
Другие говорят надо с утра съесть лягушку.
Обучаясь в Стэнфорде я понял одну вещь.
Бывает так, что даже самые лучшие техники и инструменты вам не подходят.
Не потому-что с вами что-то не так или вы не научились применять их правильно.
А просто не подходят.
Для этого может быть куча всевозможных причин и часто нет смысла выяснять их.
Лучше попробовать другую техники.
Удивительно как этот принцип подходит почти ко всем областям жизни.
Не нравится iphone - попробуй samsung.
Не получается бегать - попробуй турник.
Не получается продуктивно работать утром - поработй ночью.
Если держать в голове этот принцип, жить становится куда легче.
Отпадает желание до бесконечности копаться, а почему не работает.
Просто продолжайте искать то, что сработает для вас.
Еще Стив Джобс в своей речи к выпускникам говорил:
«Если вы ещё не нашли своего дела, ищите. Не останавливайтесь. Как это бывает со всеми сердечными делами, вы узнаете, когда найдёте. И, как любые хорошие отношения, они становятся лучше и лучше с годами. Поэтому ищите, пока не найдёте. Не останавливайтесь»
У меня да.
Как исправить ситуацию?
Воспользоваться техниками тайм менеджмента!
Их много разных.
Разные люди советую разные.
Одни говорят метод помодоро самый лучший.
Другие говорят надо с утра съесть лягушку.
Обучаясь в Стэнфорде я понял одну вещь.
Бывает так, что даже самые лучшие техники и инструменты вам не подходят.
Не потому-что с вами что-то не так или вы не научились применять их правильно.
А просто не подходят.
Для этого может быть куча всевозможных причин и часто нет смысла выяснять их.
Лучше попробовать другую техники.
Удивительно как этот принцип подходит почти ко всем областям жизни.
Не нравится iphone - попробуй samsung.
Не получается бегать - попробуй турник.
Не получается продуктивно работать утром - поработй ночью.
Если держать в голове этот принцип, жить становится куда легче.
Отпадает желание до бесконечности копаться, а почему не работает.
Просто продолжайте искать то, что сработает для вас.
Еще Стив Джобс в своей речи к выпускникам говорил:
«Если вы ещё не нашли своего дела, ищите. Не останавливайтесь. Как это бывает со всеми сердечными делами, вы узнаете, когда найдёте. И, как любые хорошие отношения, они становятся лучше и лучше с годами. Поэтому ищите, пока не найдёте. Не останавливайтесь»
Forwarded from Data Secrets
RNN в картинках
Объясняем как работют рекуррентные нейронные сети по такому рецепту: минимум слов, максимум схем и примеров.
Объясняем как работют рекуррентные нейронные сети по такому рецепту: минимум слов, максимум схем и примеров.