937
Як я зробив $ 500K від машинного навчання та високочастотної торгівлі - частина 1
Від перекладача: Нещодавно на Habre було опубліковано топографію про те, як зберегти і розмножувати свої гроші, які викликали досить багато відсотків. Я зацікавився фінансами останнім часом, і я зустрілася з цікавим сюжетом хлопця, який використовує свої технології, зробив половину мільйонів доларів на рік. Мені здається, що його досвід може бути цікавим для багатьох грубих людей (хоча він вже мав досвід на фондовому біржі), тому я вирішив перевести цей текст (це дуже об'ємний, тому буде два частини).
Цей пост описує, як я зробив близько половини мільйонів доларів у високочастотній торгівлі між 2009 та 2010. З Я працював повністю незалежно від того, що я не користуюсь моїм програмним забезпеченням, я можу говорити про це. Для найбільшої частини я торгував контрактами з AX та Russell 2000.
Ключ до успіху, у моїй формі не було використовувати складні фінансові рівняння, але досить застосувати загальний алгоритмічний підхід, який прив'язував багато простих компонентів і встановив принцип машинного навчання для оптимізації алгоритму і досягнення максимальної прибутковості. При читанні цієї статті не потрібно знати конкретну термінологію – коли я почав свою програму, я спирався на інтуїцію. (На жаль, відмінний курс Андрія Нега з машинного навчання ще не був доступний для публіки – до речі, якщо ви натиснете на посилання, ви знайдете свій поточний проект: КурсTalk, оглядовий сайт для масивних відкритих онлайн курсів / MOOCs.)
По-перше, я просто хочу показати, що мій успіх не просто щасливий збіг. Моя програма обробила 1000 до 4000 угод на день (довга і коротка) але вже кілька контрактів, які відкриті за одиницю часу. Це означає, що мої шанси різкого успіху були швидко в середньому. Це також означає, що я ніколи не втратив більше 2000 доларів на добу, і я ніколи не бачив втрату протягом місяця.
(Амендмент: ці цифри мінусові комісії)
І ось графік показує варіації мого заробітку протягом всього дня. Зауважте, що цей графік не має останніх 7 місяців, тому що один раз суми припинили зростання, я втратив мотивацію, щоб ввести їх.
Мій досвід біржових торгів
До того, як я почав працювати з автоматизованою торговою програмою, я працював трейдером в режимі «нормальна» протягом двох років. Це було в 2001 році, коли мало спекулятори мали можливість зробити хороші гроші. Як я працюю в часі, в якомусь чином, на комп'ютер і гемблінг. Успішно ознайомтесь з швидкою, дисциплінованою та зрозумілою здатністю інтуїтивно зрозуміло розпізнати візерунки поведінки ринку. Я заробив близько $250k, що дозволило мені платити навчання і зберегти гроші. Про нас
Протягом наступних п'яти років я спробував підняти пару стартапів, покращуючи навички програмування. Я не зміг повернутися до торгівлі до 2008 року. Однак, фондовий ринок здавалося б, хороша можливість поліпшити фінансову ситуацію в даний момент, коли гроші з продажу останнього запуску почали випускати – така активність може дати мені можливість думати про наступні кроки.
Торговий API
У 2008 році я був звичайним трейдером дня на ринку ф'ючерсів і використовував програмне забезпечення, яке називається T4. Я дуже хотів, щоб отримати деякі налаштовані комбінації клавіш Hotkey, щоб дати команди, так що після навчання, що T4 має відкритий API, я занурився вчитися C# ( Мова програмування, використовувана API), а потім пішли і створили необхідні гарячі клавіші.
Я вирішив збільшити свій апетит: Я хотів навчити комп'ютеру для торгівлі для мене. API надає як потокові дані з ринку, так і простий спосіб відправки команд до обміну – і все, що я повинен зробити, щоб створити логіку, яка буде посилання на дві події.
Нижче наведено скріншот робочого вікна T4. Що було дуже добре, що, створивши власну програму, я міг дивитися комп'ютерні угоди з того ж інтерфейсу. Перегляд реальних команд з’являються і зникають у робочому вікні (зважуючи себе, прив’язали до моїх реальних грошей) як залякування, так і цікаві.
Розробка власного алгоритму
Перш за все, моя мета була створена для створення системи, яка я можу бути впевненою - це було вигідно. Для досягнення цієї впевненості, потрібно створити каркас, який імітував торгівлю, який може – максимально точно – відтворити поведінку ринку.
[Тестовий доступ до фондового обміну зазвичай використовується для цієї мети, це також можливо на вітчизняних платформах. Також багато трейдерів використовують готові рамки для розробки торгових роботів (для російських обмінів є кілька таких рішень, переважно оплачених) – приблизно. ]
Оскільки реальна торгівля вимагає оновлення ринку через API, режим імітації потрібно, щоб оновлення ринку будуть читати з файлу даних. Щоб зібрати ці дані, я встановив першу версію моєї програми лише для підключення до API та запису оновлення ринку з штампами часу. Для того, щоб перевірити і тренувати свою систему, вона зайняла мене всього 4 тижнів, щоб зібрати інформацію про поточний ринок.
Навіть з базовою рамою я все одно мав розібратися, як створити прибуткову торгову систему. Як виходить, мій алгоритм розбиває на дві окремі компоненти, які я буду дивитися окремо:
- Прогнозування цінових рухів
- Вигідні пропозиції
Прогнозування цінових рухів
Можливо, очевидним компонентом будь-якої торгової системи є можливість прогнозування зміни цін. І моя система не була винятком. Визначили поточні ціни в середньому між вітчизняною ціною попиту та вітчизняним постачанням та надали, щоб прогнозувати, як ціна зміниться в наступні 10 секунд. Тож мій алгоритм повинен пред’явити ціни один раз в день.
Створення та оптимізація показників
Я створив кілька показників, щоб довести свою здатність до прогнозування короткострокових цінових рухів. Кожен показник, який був як позитивним, так і негативним. Перевагою таких показників було те, що найчастіше позитивне значення відповідає зростанням, а негативне значення відповідає ринковому зниженню.
Моя система дозволила мені швидко визначити якість прогнозування кожного показника, тому я міг експериментувати з більшістю з них, щоб дізнатися, які працювали краще. Багато показників дають формули, що містять змінні – знаючи ці формули, я зміг вибрати оптимальні значення змінних, роблячи парно порівняння результатів, досягнутих за допомогою різних значень.
Показники, які зарекомендували себе найбільш корисними, були відносно простими і базуються на останніх даних з ринку, які я був торгувати, а також інформація з інших ринків, де аналогічні цінні папери були торгами.
Точне прогнозування цінової поведінки
Однак, маючи індикатори, які просто прогнозують зростання або падіння ціни не було достатньо. Я хочу знати, як точно кожен показник прогнозував конкретну зміну ціни. Я шукав формулу, яка може перетворити значення індикатора в точну ціну.
Для цього я розподілив прогнозовану ціну стрибки в 50 груп, які відрізнялися в діапазоні показників. Це дозволило мені зробити унікальний прогноз для кожної групи, на основі яких значень я можу побудувати графік в Excel. Як бачите, ймовірність зміни в передбачуваній ціні збільшується з значенням показника.
Виходячи з цього графіка, я зміг створити формулу, яка відповідає кривій. Спочатку я зробив це «виправлення» вручну, але незабаром я написав невеликий субротин, який автоматизований процес.
До речі, не всі криві індикатора мали аналогічні графіки. Крім того, групи були розподілені логарифмічно так, щоб кожна група мала приблизно рівні числа базових значень. Також варто відзначити, що негативні значення показників (і відповідні прогнози зниження цін) були взяті модули і влаштовані позитивними значеннями (мі алгоритм працює з підвищенням цін і зменшенням точно тієї ж).
Індикатори для однозначного прогнозування цінової поведінки
Важливо відзначити, що всі показники не були повністю незалежними. Я не можу просто підняти всі прогнози показників і вибрати кінцеве значення з них. Важливо виділити додану передбачувану вартість, яку кожен показник доданий до вже прогнозованого значення. Це не так важко зробити, але це означалося, що якщо я вручну скоригував кілька показників до кривої одночасно, я повинен бути обережним - зміна одного показника може призвести до інших змін.
Для того, щоб відповідати всім показникам під задану криву в той же час я налаштував оптимізатор так, щоб з кожним ітерацією зміни прогнозу криві в напрямку даної тільки 30%. Цей 30% стрибок допускається прогнозування кривих для стабілізації в невеликій кількості ітераторів.
З кожним індикатором тепер додаючи прецизію на прогнозування ціни, я можу використовувати всі показники одночасно, щоб отримати однозначні прогнози, де ринок буде в наступні 10 секунд.
Чому не вистачає для прогнозування цін
Ми можемо самі зателефонувати одержувачу і узгодити зручний час. Але важливо пам'ятати, що ринок складається з попиту і попиту – не тільки ринкові ціни. Успіх у високочастотній торгівлі приходить до тих, хто пропонує кращі ціни, які непросто.
Ускладнення у створенні системи, що дозволяє укладати прибуткові операції можна наступним чином:
- З кожною торгівлею я повинен сплатити комісії як для мого брокера, так і для обміну акцій.
- Той факт, що є поширення (різниця найкращої ціни купівлі та продажу) означає, що якщо я просто випадково купив і продаю, я втратив багато грошей.
- Більшість ринку займають інші боти, які зроблять тільки справу з мною, якщо вони вважають статистично вигідними.
- Знайти привабливу пропозицію не означає, що угода. За часом замовлення покупки досягає обміну, пропозиція, швидше за все, стане незалежною.
- Як невеликий гравець на ринку, я не змагаюся самостійно зі швидкістю.
Продовжити. . й
Джерело: habrahabr.ru/company/itinvest/blog/208500/
Wall Street Wolve Hunters. Частина 1
Як я зробив $ 500K від машинного навчання та високочастотної торгівлі - частина 2