Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Генетический алгоритм (экспериментальный проект) arrow Генетический алгоритм. Шаг 7. Реализация блока управления капиталом
19.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Генетический алгоритм. Шаг 7. Реализация блока управления капиталом Печать E-mail
Автор megabax   
24.02.2011 г.
New Page 1

Генетический алгоритм. Шаг 7. Реализация блока управления капиталом

Все статьи по данной теме.

Блок управления капиталом так же будет представлять сбой нейросеть. На входах которой сигнал от блока торгового сигнала, информация о текущих позициях и денежных средствах. И так, для я провел мозговой штурм составил список возможных стратегий управления капиталом:

  • Метод Монтенгейла: если предыдущая сделка была убыточной, увеличиваем ставку (размер открываемой позиции). Ставку увеличиваем таким образом, что бы прибыльная сделка перекрыла все предыдущие убытки. Недостаток - мы не можем бесконечно увеличивать ставку.
  • Линейная стратегия: Каждый раз входим по сигналу на весь доступный капитал.
  • Трендования накопительная: входим в рынок не сразу, а постепенно, пока рынок идет в нашем направлении. При этом сдвигаем стопы по ходу рынка (трейлинг стоп). 
  • Фиксированный размер потерь. Размер позиции выбираем исходя из того, что бы на каждой сделке терять не более какой то определенной части депозита. Например, не более 2%. Допустим, у нас депозит 10000$. Мы входим в позицию по EURUSD. Поставили стоп лосс 50 пунктов. Это 500$ для одного лота. Следовательно, мы можем открыться в 4 лота. Или, допустим, у нас депозит 100000 руб. Мы покупаем акции газпрома по цене 215 рублей. Стоп лосс ставим на 210 руб. Тогда мы можем купить 100000*2%/(215-210)=2000/5=400 акций, на сумму 86000 руб.

Еще мы можем применить смешанный размер позиции, поставим дополнительные нейрон на вход которого подадим сигналы от групп нейронов, реализующих отдельную стратегию. 

Теперь поговорим о том, как реализовать эти подходы на нейросети. Во первых, очевидно, что надо подавать на вход нейросети информацию о предыдущей сделке и ее результате. Во вторых, на вход должна подаваться информация об ограничениях рынка: размер плеча, допустимость шортов и так далее. Значит, в программе придется реализовать объект, который будет хранить настройки рынка (отдельная настройка для Forex, отдельная для ФОРТС, для ММВБ и так далее). 

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

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

Для простоты пока ограничения рынка рассматривать не будем.  Сделаем допущение, что у нас на входе присутствует следующая информация:

  • Вх1. Есть ли сигнал на сделку (1 есть, 0 - нет). 
  • Вх2. Размер свободных денежных средств (в валюте торговли).
  • Вх3. Текущая котировка инструмента или цена исполнения стоп-заявки, иными словами, предполагаемая цена сделки (сигнальная цена).
  • Вх4. Финансовый результат предыдущей сделки.
  • Вх5. Размер предыдущей сделки.

Для метода Монтенгейла имеет следующую матмодель:

если Вх1=0 то Вых=0

иначе:

если Bх4>=0 или это первая сделка, тогда Вых=Вх2/Вх3*К1

где К1 - коэффициент использования капитала при первоначальной сделке.

если Вх4<0 тогда Вых=Вх5*K2/Вх3

где K2 - коэффициент, на который умножается ставка после каждой неудачной сделки. Например, пусть коэффициент использования капитала у нас 5%, стоп лосс ставим на 10% от цены, тэйк профит на 30%. Коэффициент К2=2. Тогда, допустим, мы получили прибыль на 3-ей сделке. К тому времени мы уже торгуем 20% от депозита (5%, потом 10%, потом 20%). Итого мы проиграли 5%*0.1+10*0.1=1,5%. Выиграли 20%*0.3=6%. Наша прибыль составила 3.5%. Правда, если мы будем долго проигрывать, у нас в конце концов, не хватит депозита. Увы, это существенный недостаток системы Монтенгейла. Но в рамках данной статьи достоинства и недостатки мы не рассматриваем. Мы думаем, как эти подходы реализовать на нейросетях, а хороша стратегия или плоха решит естественный отбор. 

И так, нейросеть для реализации этой матмодели будет выглядеть вот таким образом:

Генетический алгоритм. Шаг 7. Реализация блока управления капиталом

Формулы Вых=Вх5*K2/Вх3 и Вых=Вх2/Вх3*К1 реализуются геометрическими нейронами, где для деления у нас будут просто применятся отрицательные весовые коэффициенты. Собственно говоря, для реализации этой формулы нам понадобиться два нейрона, один для умножения на коэффициент (обычный нейрон с одним входов и соответствующим весовым коэффициентом и геометрический нейрон для реализации деления), но для наглядности я их объединил в один. Условия реализуются геометрическим нейроном с коэффициентам 1 либо -1, в зависимости от того, какое надо проверить условие. Собственно,  на схеме реализация этих условий так же показана упрощенно, тут еще на персептрон нужно применить, что бы сигнал Вх преобразовать к единице.  Функцию ИЛИ мы реализуем обычным нейроном с коэффициентами 1.

 Остальные стратегии можно реализовать на нейросетях аналогичным образом.

Все статьи по данной теме.

Последнее обновление ( 29.06.2011 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги