Pull to refresh
20
0
Send message

Алгоритмическая и автоматизированная торговля: 13 книг по теме

Reading time4 min
Views36K


Недавно мы публиковали материал нашего читателя о терминологической путанице, которая окружает алгоритмическую и автоматизированную торговлю. В продолжение темы сегодня речь пойдет о том, как эта путаница влияет на профессиональную литературу (а вот еще один материал о книгах и образовательных ресурсах по теме).

Сам термин «Алгоритмическая торговля» сейчас настолько на слуху, что некоторые нерадивые авторы пользуются этим и втискивают его в название своих книг, чтобы привлечь читательское внимание.

Читатель видит такие книги и убеждается в том, что читает про алгоритмическую торговлю, когда на самом деле ему рассказывают об автоматизированной.
Читать дальше →

Книги и образовательные ресурсы по алгоритмической торговле

Reading time7 min
Views101K


Алгоритмическая торговля — интересная область, которая позволяет ИТ-специалистам применить свои технические знания на фондовом рынке и извлечь из этого ту или иную выгоду. В нашем блоге мы неоднократно рассматривали различные темы, связанные с созданием торговых роботов, но недостаточно внимания уделяли теоретическим вопросам, с которыми сталкиваются начинающие трейдеры.

В нашем сегодняшнем материале — подборка книг, которые помогут лучше подготовиться к началу работы на фондовом рынке и написанию механических торговых систем. Для достижения наибольшей эффективности материала, мы приводим советы экспертов, которые занимаются алгоритмической торговлей на российском и зарубежных фондовых рынках.
Читать дальше →

Событийно-ориентированный бэктестинг на Python шаг за шагом. Часть 3

Reading time10 min
Views14K


В предыдущих статьях мы говорили о том, что такое событийно-ориентированная система бэктестинга, разобрали иерархию классов, которую необходимо для нее разработать, и обсудили то, как подобные системы используют рыночные данные в контексте исторического тестирования и для «живой» работы на бирже.

Сегодня мы опишем объект NaivePortfolio, который отвечает за отслеживание позиций в портфолио и на основе поступающих сигналов генерирует приказы с ограниченным количеством акций.
Читать дальше →

Сортировка целых чисел при нехватке памяти

Reading time13 min
Views33K
Автор оригинала на английском языке — хабраюзер dzeban

Введение


В прошлый раз мы обсудили, как можно искусственно ограничить доступную программе память. В качестве бонуса я заполучил себе libmemrestrict – библиотеку с обёртками функций вроде malloc для отслеживания использования памяти, и ptrace-restrict — инструмент на базе ptrace, перехватывающий вызовы brk, sbrk и mmap с той же целью.

Так зачем нам пытаться организовывать ограничение памяти – так ли это часто встречается? Когда в последний раз ООМ прибил ваше приложение? Вы всегда думаете о потреблении памяти во время программирования? Память – штука дешёвая, и если вам не хватает памяти, добавьте ещё пару гигабайт.

И, тем не менее, невозможно бесконечно добавлять память – и не из-за того, что у вас нет бесконечного её источника. При обработке Больших данных просто невозможно вместить весь ввод в массив – необходимо распределять данные между оперативкой, носителями и сетью. Необходимы алгоритмы и техники для такой обработки данных.

И вот я занялся подобными задачами, начав с простой – как отсортировать миллион целых чисел (4 MiB данных) при наличии 2 MiB памяти? Эту задачу можно обобщить на тот случай, когда у вас недостаточно памяти, чтобы вместить все данные.

Дано


Необходимо написать программу сортировки набора целых чисел, хранящихся в файле. Для его создания я написал простейшие утилиты randints и rangeints

Программа должна выдавать отсортированный массив на stdout в виде текста

Она должна измерить время работы и вывести его на stderr. Нельзя просто запустить программу через утилиту time, потому что она посчитает время на чтение файла и время на его вывод.

Она должна работать, имея памяти как минимум в два раза меньше объёма файла. Для этого мы применим libmemrestrict или ptrace-restrict.

Для некоторых методов эти утилиты не пригодятся. Например, для mmap они не сработают – придётся физически ограничить использование памяти.

Они будут проверяться для решения оригинальной задачи (сортировки 4 MiB в 2 MiB). Также я запущу их на виртуалке со 128 MiB памяти для сортировки 500 Mb (125 миллионов четырёхбайтных целых).
Читать дальше →

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

Reading time10 min
Views97K
image

До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
Читать дальше →

Технокнига, часть 2: литература по СУБД, разработке фронтенда, проектированию интерфейсов и углубленному программированию на Java

Reading time11 min
Views46K


Недавно мы начали публиковать обзорный список литературы, рекомендуемой к прочтению студентам наших образовательных проектов: Технопарка, Техносферы и Технотрека. Но это не значит, что остальным эти книги будут не интересны. Так что если вы жаждете знаний по вынесенным в заголовок темам, то наверняка найдете что-нибудь интересное во второй части обзора.
Читать дальше →

Brubeck — быстрый, statsd-совместимый агрегатор метрик от GitHub

Reading time3 min
Views20K


История появления


Одной из главных целей команды разработчиков GitHub всегда была высокая производительность. У них даже существует поговорка: «it's not fully shipped until it's fast» (продукт считается готовым только тогда, когда он работает быстро). А как понять, что что-то работает быстро или медленно? Нужно мерять. Измерять правильно, измерять надёжно, измерять всегда. Нужно следить за измерениями, визуализировать всевозможные метрики, держать руку на пульсе, особенно, когда дело имеешь с высоконагруженными онлайн системами, такими как GitHub. Поэтому метрики — это инструмент, позволяющий команде предоставлять столь быстрые и доступные сервисы, почти без даунтаймов.

В своё время GitHub одними из первых внедрили у себя инструмент под названием statsd от разработчиков из Etsy. statsd — это агрегатор метрик, написанный на Node.js. Его суть состояла в том, чтобы собирать всевозможные метрики и агрегировать их в сервере, для последующего сохранения в любом формате, например, в Graphite в виде данных на графике. statsd — это хороший инструмент, построенный на UDP сокетах, удобный в использовании как на основном Rails приложении, так и для сбора простейших метрик, наподобие вызова nc -u. Проблема с ним начала проявляться позже, по мере роста количества серверов и метрик, отправляемых в statsd.
Читать дальше →

Перевод книги Ричарда Бартла «Designing Virtual Worlds». Глава 1. Основы

Reading time12 min
Views20K
imageНачало тут
Продолжение тут

Ричард А. Бартл (Richard Allan Bartle)
Дипломированный специалист по искусственному интеллекту. Один из создателей самого первого MUDа (1978 год), который дал начало всей индустрии массивно-многопользовательских игр, за бумом которой мы сейчас наблюдаем. В дальнейшем Ричард плотно занялся исследованиями виртуальных миров и их обитателей. В качестве независимого консультанта он участвовал практически в каждом таком проекте за последние 20 лет.

(Кто хочет помочь с переводом фундаментальной книги по разработке игр, пишите в личку или на почту magisterludi2016<собака>yandex.ru)

Основы

(за перевод огромное спасибо Владиславу Задумову (zadumov.v<собака>gmail.com), который профессионально занимается переводами с английского и японского)

Как правило люди хотят разбить различные виртуальные миры на категории, чтобы им было легче обсуждать то, что интересует конкретно их, или найти тот мир, который наиболее подходит под их нужды. Потенциальные игроки, например, будут хотеть знать, как выглядит мир, и какой в нем сеттинг: Если им хочется отыгрывать космического пирата, вряд ли сеттинг Фэнтези-мира им в этом поможет. Маркетологов и инвесторов больше волнует долговечность продукта и демографическая статистика его пользователей: Возможно им будет неинтересно самим проводить время в виртуальном мире, однако они будут очень заинтересованы в тех, кто в этот мир погружен. У дизайнеров тоже есть свои собственные, теоретические проблемы, которые им нужно решить, вдобавок к необходимости понимать желания игроков и маркетологов.

Если взглянуть на виртуальные миры со стороны их исторического развития, то используемые наиболее часто категории довольно легко выделяются:

  • Внешний вид
  • Жанр
  • Кодовая база
  • Срок жизни
  • База игроков
  • Степень изменяемости
  • Степень неизменности


Давайте рассмотрим их по порядку.
Читать дальше →

Задачи, микрозадачи, очереди и планы

Reading time8 min
Views72K
Предлагаю вашему вниманию перевод статьи «Tasks, microtasks, queues and schedules» Джейка Арчибальда (Jake Achibald), занимающего должность Developer Advocate for Google Chrome.

Когда я сказал своему коллеге Мэту Ганту, что подумываю о написании статьи об очерёдности микрозадач и порядке их исполнения внутри событийного цикла браузера, он сказал «Джейк, буду честен, я об этом читать не стану». Что ж, я всё же написал, поэтому откиньтесь на спинку кресла и давайте вместе в этом разберёмся, ладно?

На самом деле, если вам будет проще посмотреть видео, есть замечательное выступление Филиппа Робертса на JSConf, которое рассказывает о событийном цикле – оно не покрывает микрозадачи, но в остальном является отличным вступлением в тему. В любом случае, погнали…

Давайте рассмотрим следующий код на JavaScript:
console.log('script start');

setTimeout(function() {
  console.log('setTimeout');
}, 0);

Promise.resolve().then(function() {
  console.log('promise1');
}).then(function() {
  console.log('promise2');
});

console.log('script end');

Как вы думаете, в каком порядке должны вывестись логи?
Читать дальше →

Настройка окружения для тестирования изменений в ядре Linux

Reading time2 min
Views12K
image

Иногда (редко, но все-же) возникает потребность что-то дописать или переделать в ядре всеми нами любимого линукса. И тогда возникает вопрос: А как все эти изменения запустить и проверить быстро и без перекуров?

Одно дело, если мы можем организовать нашу новую функциональность в виде модуля, тогда нам довольно просто можно тестировать его без перезагрузки самого ядра, простым включением и выключением через insmod. Но что делать, если концепция модульности неприменима? Например, как в моем случае, когда потребовалось добавить новую подсистему контрольных групп (cgroups) для Jet9 и нужно было перезапускать ядро каждый раз, чтобы проверить внесенные изменения?
Читать дальше →

Почему плохо быть слишком умным

Reading time5 min
Views57K


Если невежество – это благословление, значит ли это, что высокий IQ приравнивается к страданию? В массовом представлении это так и есть – гениев обычно представляют, как людей, страдающих от страхов, неудовлетворённости и одиночества. Вспомните Вирджинию Вулф, Алана Тьюринга и Лизу Симпсон – одинокие звёзды, изолированные в своей яркости. По словам Хемингуэя: «Счастье у умных людей – самое редкое явление из всех, что я знаю».

Вопрос вроде бы затрагивает не так много людей – но если разобраться в нём, то оказывается, что он влечёт сложные последствия для многих людей. Система образования направлена в основном на улучшение академических знаний. Хотя ограничения системы IQ известны, это всё ещё основной способ измерения когнитивных способностей, и мы тратим кучу денег на тренировки мозга, стараясь улучшить эти показатели. Но что, если поиск гения – это бесполезное дело?

Первые шаги в поисках ответа на этот вопрос сделали ещё 100 лет назад, в эпоху джаза. В то время инновационный тест на IQ набирал популярность, после того, как оправдал себя в вербовочных центрах Первой Мировой. В 1926 году психолог Льюис Терман решил использовать его для проверки группы одарённых детей. Собрав сливки учащихся с калифорнийских школ, он отобрал 1500 учеников с IQ не менее 140. 80 из них имели IQ более 170. Их назвали «Термитами», и истории их жизней изучают по сей день.

Конечно, многие Термиты достигли богатства и успеха. Например, Джесс Оппенгеймер, написавший классический ситком 50-х «I Love Lucy». В те времена, когда его крутили на CBS, средняя зарплата у Термитов вдвое превышала среднюю зарплату тогдашних «белых воротничков». Но не все люди из этой группы оправдали ожидания – многие занялись более скромным делом, стали полицейскими, моряками и машинистками. Поэтому Терман заключил, что «интеллект и достижения очень слабо коррелируют». Их выдающийся ум не гарантировал им личного счастья. Количество разводов, алкоголизма и самоубийств в их среде совпадало со средними уровнями.
Читать дальше →

Технокнига, часть 1: литература по веб-технологиям, алгоритмам и структурам данных, углубленному программированию на С++

Reading time18 min
Views106K


В процессе построения учебной программы наших образовательных проектов мы составили список специализированных книг, рекомендованных к изучению по каждой из дисциплин, — всего более 100 наименований на весь период обучения. Не станем таить и представим вам этот список, сопроводив краткими комментариями. Уместить такой объем информации в рамках одной статьи затруднительно, поэтому обзор рекомендованной Технопарком литературы разбит на четыре части — по числу семестров, с небольшой добавкой полезных книг, предложенных студентами. Ссылки в комментариях на дополнительное интересное чтиво только приветствуются.

Первый семестр призван «выровнять» знания студентов. Он содержит такие дисциплины, как алгоритмы и структуры данных, программирование на C++, а также обзорный курс по веб-технологиям. С книг по этим предметам и начнется обзор. Большая часть представленных книг относится к нестареющей «классике», являющейся собранием основополагающих концепций.
Читать дальше →

Покупка оптимальной квартиры с R

Reading time12 min
Views62K
Многие люди сталкиваются с вопросом покупки или продажи недвижимости, и важный критерий здесь, как бы не купить дороже или не продать дешевле относительно других, сопоставимых вариантов. Простейший способ — сравнительный, ориентироваться на среднюю цену метра в конкретном месте и экспертно добавляя или снижая проценты от стоимости за достоинства и недостатки конкретной квартиры. image Но данный подход трудоемок, неточен и не позволит учесть все многообразие отличий квартир друг от друга. Поэтому я решил автоматизировать процесс выбора недвижимости, используя анализ данных путем предсказания «справедливой» цены. В данной публикации описаны основные этапы такого анализа, выбрана лучшая предиктивная модель из восемнадцати протестированных моделей на основании трех критериев качества, в итоге лучшие (недооцененные) квартиры сразу помечаются на карте, и все это используя одно web-приложение, созданное с помощью R.

Читать дальше →

Сложности сборки Python3 + Qt5 приложений под Windows

Reading time4 min
Views50K
Недавно потребовалось мне сделать небольшую прогу под Windows. Раньше мне не доводилось разрабатывать под нее.
Сама программа несложная, написалась относительно быстро. Намного больше времени отъела сборка ее под винду. Понятно, что выбранные инструменты (Python3 + Qt5) не родные, а универстальные, но что потребуется столько времени затратить на сборку, я не предполагал.
Соответственно, хочется поделиться практикой, может кому еще придется стучаться лбом в эту стену.
Под катом выстраданная инструкция как легко собирать PyQt5 приложения в single-file.exe не требующий инсталлятора.
Читать дальше →

Удаляем лишние пакеты из Raspbian. Или как сделать свой Raspbian Mini…

Reading time6 min
Views58K
Raspbian является рекомендуемым дистрибутивом для всех, кто начинает своё знакомство с Raspberry Pi, проблема лишь в том, что по умолчанию в него включено множество пакетов. А так как очень не многие используют малинку в качестве десктопа, то эти пакеты вряд ли можно считать необходимыми. На просторах Интернета можно найти образы минималистичных версий (например, из этой статьи), но к сожалению 2 представленные там версии (Raspbian Server Edition и Raspbian Minimal) не обновлялись уже более 2 лет.

В связи с этим было решено самостоятельно вырезать из установленной системы все ненужные компоненты. На просторах Интернета была найдена только одна более менее полная статья на английском языке. Большая часть взята из неё с моими небольшими исправлениями и дополнениями.

P.S. У знатоков Linux систем с этим вряд ли возникнут проблемы, а новичкам может быть полезно.
Читать дальше →

Замечания о распределенных системах для начинающих

Reading time14 min
Views31K
Здравствуйте все!

Пришло время рассказать вам о еще одной книге, которая вызвала у нас неподдельный интерес и серьезные дебаты.

Мы предположили, что и в сфере изучения алгоритмов для распределенных систем краткость — сестра таланта, поэтому проработка книги Уона Фоккинка «Распределенные алгоритмы. Понятный подход» является перспективным и благодарным делом, пусть даже объем книги — всего 248 страниц.



Однако, чтобы участвовать в опросе было интереснее, мы для начала приглашаем вас под кат, где находится перевод интереснейшей статьи Джеффа Ходжеса, описывающей самые разнообразные проблемы, связанные с разработкой распределенных систем.
Читать дальше →

Немного о многопоточном программировании. Часть 1. Синхронизация зло или все-таки нет

Reading time12 min
Views70K
Мне по работе часто приходится сталкиваться с высоконагруженными многопоточными или многопроцессными сервисами (application-, web-, index-server).
Достаточно интересная, но иногда неблагодарная работа — оптимизировать все это хозяйство.
Растущие потребности клиентов часто упираются в невозможность просто заменить железную составляющую системы на более современную, т.к. производительность компьютеров, скорость чтения-записи жестких дисков и сети растут много медленнее запросов клиентов.
Редко помогает увеличение количества нодов кластера (система как правило распределенная).
Чаще приходится запустив профайлер, искать узкие места, лезть в source code и править ляпы, которые оставили коллеги, а иногда и сам, чего греха таить, много лет назад.
Некоторые из проблем, связаных с синхронизацией, я попытаюсь изложить здесь. Это не будет вводный курс по многопоточному программированию — предпологается, что читатель знаком с понятием thread и context switch, и знает для чего нужны mutex, semaphore и т.д.
Читать дальше →

Современные RAID контроллеры Adaptec от А до Я. Часть 1

Reading time16 min
Views95K
Недавно наткнулся на полезную и очень подробную статью Adaptec, которая описывала ну просто все нюансы работы контроллеров, пугал разве что объем в 60 страниц. Возникло естественное желание сократить и разделить статью на 2 куска:
  • Часть 1. Общие сведения о RAID контроллерах (много теории, азы)
  • Часть 2. Классификация контроллеров Adaptec (здесь всё очень конкретно – серии контроллеров, функции каждой серии, таблицы, картинки)

Материал будет интересен всем, кто связан с хранением данных – инженерам-интеграторам, системным администраторам и конечным пользователям.

Собственно, Часть 1.

image

Читать дальше →

Такие удивительные семафоры

Reading time9 min
Views144K
От переводчика: Джефф Прешинг (Jeff Preshing) — канадский разработчик программного обеспечения, последние 12 лет работающий в Ubisoft Montreal. Он приложил руку к созданию таких известных франшиз как Rainbow Six, Child of Light и Assassin’s Creed. У себя в блоге он часто пишет об интересных аспектах параллельного программирования, особенно применительно к Game Dev. Сегодня я бы хотел представить на суд общественности перевод одной из статей Джеффа.

Поток должен ждать. Ждать до тех пор, пока не удастся получить эксклюзивный доступ к ресурсу или пока не появятся задачи для исполнения. Один из механизмов ожидания, при котором поток не ставится на исполнение планировщиком ядра ОС, реализуется при помощи семафора.

Раньше я думал, что семафоры давно устарели. В 1960‑х, когда еще мало кто писал многопоточные программы, или любые другие программы, Эдсгер Дейкстра предложил идею нового механизма синхронизации — семафор. Я знал, что при помощи семафоров можно вести учет числа доступных ресурсов или создать неуклюжий аналог мьютекса, но этим, как я считал, область их применения ограничивается.
Читать дальше →

Условие как компромисс

Reading time9 min
Views34K
Они объясняли мне: «У тебя есть апельсин, так? Теперь ты разрезаешь этот апельсин на конечное количество кусочков, складываешь их обратно в апельсин, и он становится таким же большим как солнце. Истина или ложь?»
— Между кусочками нет пространства? — Нет.
— Невозможно! Такого просто не может быть.
— Ха! Попался! Идите все сюда! Это теорема Того-то о безмерной мере!
И когда им кажется, что они поймали меня, я напоминаю им: «Но вы сказали апельсин! А апельсиновую кожуру невозможно разрезать на кусочки тоньше атомов».
— Но у нас есть условие непрерывности. Мы можем резать бесконечно!
— Нет, вы сказали апельсин, поэтому я принял, что вы имеете в виду настоящий апельсин.
Так что я всегда выигрывал. Если я угадывал — здорово. Если не угадывал, то всегда мог найти в их упрощении что-то, что они упускали из виду.

Ричард Фейнман. «Вы, конечно, шутите, мистер Фейнман!»

Пролог


Так получилось, что с самого детства я увлекаюсь занимательными задачами. Решал я их, как правило, хорошо и быстро, хотя не обходилось и без курьезов. Например, на олимпиаде по математике за седьмой класс, куда я попал, будучи в шестом, была задача: найти такой-то угол в треугольнике, обладающем такими-то свойствами. Мои познания в области геометрии были на тот момент весьма отрывочны, однако кое на что их всё же хватило. Недолго думая, я построил этот треугольник в тетради с помощью циркуля и линейки, а затем измерил нужный угол транспортиром. Это было практически как в том анекдоте про «найдите икс», когда ученик ткнул в букву «x» пальцем с радостным криком «вот он!».
Как интересно! Что же было дальше?

Information

Rating
Does not participate
Registered
Activity