Joomla 3.1 Templates by FatCow Coupon

SQL и биржевой график. (Оптимизация торговой системы + Управление капиталом = 41% годовых)

Категория: Блог Опубликовано 24.05.2017

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

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

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

Система управления капиталом указывает. на какую сумму от инвестиционного капитала необходимо делать покупки, а так же какие именно активы необходимо приобретать. Какой суммой мы можем рискнуть…



Как распределить риск , чтобы он был минимален?

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

В данной таблице (portfolio) отобраны несколько акций из общего списка инструментов, подходящие нам по заданным параметрам.

Модифицируем систему управления капиталом, учтем реинвестирование

create or replace function moneyposition(priceticker varchar2, operdate date) return number
-- правил управления капиталом , возвращает позицию в количестве акций которые можно купить
    is
    vr_return number;
    rw priceind%rowtype;
    vr_balance number;
begin
    vr_return := 0;
    rw := tradesystem_pkg.indnow;
    select nvl(sum(balance.balancedeltarur),0) into vr_balance from balance;
    vr_balance := vr_balance + tradesystem_pkg.moneybalance;
    vr_return := trunc(vr_balance  / 5 / rw.c);
    return vr_return;
end moneyposition;



Запустим тест на истории

-- Created on 09.10.2014 by 1 
declare 
  -- Local variables here
  i integer;
  start_date date := TO_DATE('07.07.2009','DD.MM.YYYY');
  end_date date := TO_DATE('24.09.2014 ','DD.MM.YYYY');
  ticker varchar2(5):= 'SBER'; 
begin
 
  -- Test statements here
  tradesystem_pkg.cleartable;
  tradesystem_pkg.checkportfolio(start_date,  end_date);
  
  dbms_output.put_line('------------------------------------------------------------');
  dbms_output.put_line('Тестировние на исторических данных. Портфель инструментов');
  dbms_output.put_line('  начало периода    ' ||to_char(start_date,'DD.MM.YYYY'));
  dbms_output.put_line('  окончание периода ' ||to_char(end_date,'DD.MM.YYYY'));
  dbms_output.put_line('-------------------------------------------------------------');
  dbms_output.put_line(' ');
  dbms_output.put_line('  Баланс(RUR)                          ' || tradesystem_pkg.moneybalance);
  dbms_output.put_line('  Общая прибыль (RUR)                  ' || report_pkg.getsumwin());
  dbms_output.put_line('  Средняя прибыль на сделку (RUR)      ' || report_pkg.getavgwintrade());
  dbms_output.put_line('  Средний убыток (RUR)                 ' || report_pkg.getavglosstrade());
  dbms_output.put_line('  Общее количество сделок              ' || report_pkg.gettradescount());
  dbms_output.put_line('  Общее прибыльных сделок              ' || report_pkg.gettradeswincount());
  dbms_output.put_line('  Общее количество убыточных сделок    ' || report_pkg.getlosscount());
  dbms_output.put_line('  Количество убыточных сделок подряд   ' || report_pkg.gettradeslosscount());
  dbms_output.put_line(' '); 
  dbms_output.put_line('-------------------------------------------------------------');
   
end;



------------------------------------------------------------
Тестирование на исторических данных. Портфель инструментов.
начало периода 07.07.2009
окончание периода 24.09.2014
-------------------------------------------------------------

Баланс(RUR) 1000000
Общая прибыль (RUR) 1465262,999
Средняя прибыль на сделку (RUR) 43283,595
Средний убыток (RUR) -19550,415 Общее количество сделок 420
Общее прибыльных сделок 154
Общее количество убыточных сделок 266
Количество убыточных сделок подряд 15

-------------------------------------------------------------

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

select ticker, sum(balance.balancedeltarur), extract(YEAR FROM balance.tradedate) 
  from balance group by ticker,  extract(YEAR FROM balance.tradedate) having  sum(balance.balancedeltarur) < 0
  order by extract(YEAR FROM balance.tradedate), sum(balance.balancedeltarur) desc



TICKER SBLRUR YEAR1
NVTK -11109 2009
SNGS -25987,536 2009
LKOH -7356,33 2009
ROSN -1662,08 2009
TATN -6932,68 2009
TATN -34499,56 2010
LKOH -45866,83 2010
ROSN -25180,37 2010
NLMK -34408,97 2010
SNGS -13971,609 2011
SNGSP -17748,996 2011
SBER -27396,7 2011
SBERP -11125,4 2011
ROSN -1121,17 2011
MGNT -2244,37 2011
MTSS -7672,62 2011
AFKS -31540,115 2012
SBER -17845,58 2012
CHMF -69977,7 2012
LKOH -33241,5 2012
SBERP -9835,2 2012
NVTK -6786,15 2012
GMKN -17771 2012
SNGS -12024,37 2012
CHMF -11835,7 2013
SNGSP -12852,476 2013
ROSN -25041,81 2013
TATN -9856,69 2013
NLMK -1688,37 2013
SNGS -6825,033 2013
LKOH -7848,9 2013
SBERP -33090,57 2014
SNGS -26616,979 2014
MTSS -23267,44 2014
NVTK -78037 2014
CHMF -38959,5 2014
NLMK -38526,43 2014
ROSN -9010,02 2014
MGNT -7665,2 2014
SBER -5250,1 2014
LKOH -15231,5 2014
TATN -12013,73 2014
TRNFP -9911 2014


Это бумаги 'ROSN', 'LKOH', 'SNGS','TATN'

Исключим данные бумаги из портфеля , как не соответствующие стратегии.

Проведем повторное тестирование стратегии

Прибыль составила 2079101,074 за 5 лет , то есть 207%
Или 41 процент в год.

Что довольно неплохо для таких несложных правил управления сделками

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

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

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

Просмотров: 95