New Page 1
Тесты торговых стратегий на C#.
Урок 19. Эксперименты с генетическим алгоритмом. Продолжение.
Что бы смотреть урок полностью, а так же скачать исходники к
уроку, подпишитесь на
платный раздел.
В платном разделе статья находиться
здесь.
Сегодня мы проведем еще один эксперимент с оптимизацией
стратегии методом генетического алгоритма: оптимизируем стратегию на одном
периоде времени, а тестировать будем на другом (на том же самом инструменте и
тех же самых таймфреймах). Для реализации этой идеи мы в класс TradeSystemTester
добавим поля для задания интервала:
...
///
<summary>
///
Начало интервала тестирования
///
</summary>
public
DateTime beg_date_time {
get; set; }
///
<summary>
///
Конец интервала тестирования
///
</summary>
public
DateTime end_date_time {
get; set; }
... |
И переделываем у него метод simulation:
///
<summary>
///
Симуляция торговой стратегии
///
</summary>
public
void simulation(double
BegCash, string LogFile,
string PortLogFile)
{
...
|
...Для реализации самого алгоритма разделения временного периода оптимизации и
тестирования предусмотрим класс DinamicOptimizationTest. В этом классе
реализуем метод, который последовательно оптимизируем стратегию, протестирует,
потом снова оптимизирует и протестирует уже на другом интервале и так далее, до
самого конца указанного периода времени. Вот этот класс:
///
<summary>
///
Элемент статистики динамической оптимизации
///
</summary>
public
class
DinamicOptimizationItem
{
///
<summary>
///
Начало интервала оптимизации
///
</summary>
public
DateTime beg_date_time_optimization {
get; set; }
///
<summary>
///
Конец интервала оптимизации
///
</summary>
public
DateTime end_date_time_optimization {
get; set; }
...
|
...Используя данную программу, я протестировал стратегию на акциях Газпром, дневные
таймфреймы, период с 01.01.2008 по 31.12.2013. Период оптимизации 365 дней,
период тестирования 100 дней. Дни календарные. Размер депозита 500 рублей, тест
имитировал торговлю одной акцией. Всего в период проверки вошло три интервала.
...
...Тест прогонял несколько раз, в силу того, что генетический алгоритм это
рандомный процесс, каждый раз результаты получались разные:
Начало периода оптимизации |
Конец периода оптимизации |
Результат, % |
Начало периода тестирования |
Конец периода тестирования |
Результат |
01.01.2008 0:00 |
31.12.2010 0:00:00 |
21,96311 |
31.12.2010 0:00:00 |
31.12.2011 0:00:00 |
0 |
31.12.2008 0:00 |
31.12.2011 0:00:00 |
0 |
31.12.2011 0:00:00 |
30.12.2012 0:00:00 |
0 |
31.12.2009 0:00 |
30.12.2012 0:00:00 |
0 |
30.12.2012 0:00:00 |
30.12.2013 0:00:00 |
0 |
01.01.2008 0:00 |
31.12.2010 0:00:00 |
5,315166 |
31.12.2010 0:00:00 |
31.12.2011 0:00:00 |
0 |
31.12.2008 0:00 |
31.12.2011 0:00:00 |
0,991166 |
31.12.2011 0:00:00 |
30.12.2012 0:00:00 |
0 |
31.12.2009 0:00 |
30.12.2012 0:00:00 |
0,72328 |
30.12.2012 0:00:00 |
30.12.2013 0:00:00 |
0 |
01.01.2008 0:00 |
31.12.2010 0:00:00 |
48,06095 |
31.12.2010 0:00:00 |
31.12.2011 0:00:00 |
4,543028 |
31.12.2008 0:00 |
31.12.2011 0:00:00 |
0 |
31.12.2011 0:00:00 |
30.12.2012 0:00:00 |
0 |
31.12.2009 0:00 |
30.12.2012 0:00:00 |
0 |
30.12.2012 0:00:00 |
30.12.2013 0:00:00 |
0 |
01.01.2008 0:00 |
31.12.2010 0:00:00 |
33,32798 |
31.12.2010 0:00:00 |
31.12.2011 0:00:00 |
4,543028 |
31.12.2008 0:00 |
31.12.2011 0:00:00 |
0 |
31.12.2011 0:00:00 |
30.12.2012 0:00:00 |
0 |
31.12.2009 0:00 |
30.12.2012 0:00:00 |
0 |
30.12.2012 0:00:00 |
30.12.2013 0:00:00 |
0 |
01.01.2008 0:00 |
31.12.2010 0:00:00 |
0 |
31.12.2010 0:00:00 |
31.12.2011 0:00:00 |
0 |
31.12.2008 0:00 |
31.12.2011 0:00:00 |
0 |
31.12.2011 0:00:00 |
30.12.2012 0:00:00 |
0 |
31.12.2009 0:00 |
30.12.2012 0:00:00 |
0 |
30.12.2012 0:00:00 |
30.12.2013 0:00:00 |
0 |
01.01.2008 0:00 |
31.12.2010 0:00:00 |
33,35902 |
31.12.2010 0:00:00 |
31.12.2011 0:00:00 |
0 |
31.12.2008 0:00 |
31.12.2011 0:00:00 |
0 |
31.12.2011 0:00:00 |
30.12.2012 0:00:00 |
0 |
31.12.2009 0:00 |
30.12.2012 0:00:00 |
4,461102 |
30.12.2012 0:00:00 |
30.12.2013 0:00:00 |
0 |
01.01.2008 0:00 |
31.12.2010 0:00:00 |
5,98515 |
31.12.2010 0:00:00 |
31.12.2011 0:00:00 |
-19,9867 |
31.12.2008 0:00 |
31.12.2011 0:00:00 |
1,66115 |
31.12.2011 0:00:00 |
30.12.2012 0:00:00 |
-4,10367 |
31.12.2009 0:00 |
30.12.2012 0:00:00 |
0 |
30.12.2012 0:00:00 |
30.12.2013 0:00:00 |
0 |
Что мы видим из данной таблицы? Чаще всего, результат тестирования на интервале,
следующим за интервалом оптимизации, значительно хуже, чем результат
оптимизации. Так что стратегия нуждается в доработке. Для этой цели мы будем
писать специальную программу, которая позволит визуально анализировать стартегии
и улучшать их, уже искуственным образом, вмешиваясь в процесс естественного
отбора. Но этим мы займемся на следующем уроке.
Скриншоты, помеченные знаком *,
являются цитатами и иллюстрациями программного
продукта "Microsoft Visual Studio 2010 Professional", авторское
право на который принадлежит корпорации
Microsoft..
|