понедельник, 23 марта 2009 г.

Ищем лучшие входы по методу box-counting_2.

Прогнозируем середину между high и low.

Будем использовать относительное изменение по основанию среднего:

где - параметр (open, high, low, close или mean).

В качестве входов к модели используем относительное изменение по всем параметрам всех 20 инструментов в предыдущем дне. В качестве выхода используем относительное изменение среднего в следующем дне.

Вычисления производим по следующей схеме.

  1. переводим исходные данные в относительное изменение;

  2. производим скользящее нормирование по стандартному отклонению;

  3. производим сигмоидное преобразование к равномерному распределению;

  4. ищем в генетике лучшие входы по методу box-counting_2.


Рисунок 1: Исходный ряд - закрытие для Лукойла.

Инструменты:

sber, sberp, sngs, rtkm, gmkn, msng, sibn, eurusd, gbpusd, usdjpy, cac40, dax, micex, micex10index, nasdaq, sp500, djia, rtsi, gold, lkoh.

После выделения в каждом инструменте параметров получаем 100 входов:

sber_o, sber_h, sber_l, sber_c, sber_m, sberp_o, sberp_h, sberp_l, sberp_c, sberp_m, sngs_o, sngs_h, sngs_l, sngs_c, sngs_m, rtkm_o, rtkm_h, rtkm_l, rtkm_c, rtkm_m, gmkn_o, gmkn_h, gmkn_l, gmkn_c, gmkn_m, msng_o, msng_h, msng_l, msng_c, msng_m, sibn_o, sibn_h, sibn_l, sibn_c, sibn_m, eurusd_o, eurusd_h, eurusd_l, eurusd_c, eurusd_m, gbpusd_o, gbpusd_h, gbpusd_l, gbpusd_c, gbpusd_m, usdjpy_o, usdjpy_h, usdjpy_l, usdjpy_c, usdjpy_m, cac40_o, cac40_h, cac40_l, cac40_c, cac40_m, dax_o, dax_h, dax_l, dax_c, dax_m, micex_o, micex_h, micex_l, micex_c, micex_m, micex10index_o, micex10index_h, micex10index_l, micex10index_c, micex10index_m, nasdaq_o, nasdaq_h, nasdaq_l, nasdaq_c, nasdaq_m, sp500_o, sp500_h, sp500_l, sp500_c, sp500_m, djia_o, djia_h, djia_l, djia_c, djia_m, rtsi_o, rtsi_h, rtsi_l, rtsi_c, rtsi_m, gold_o, gold_h, gold_l, gold_c, gold_m, lkoh_o, lkoh_h, lkoh_l, lkoh_c, lkoh_m.


Рисунок 2: Закрытие и среднее



Рисунок 3: Относительное изменение среднего



Рисунок 4: Скользящее нормирование среднего по стандартному отклонению

В отличии от обработки входов выходы нормируем стандартным отклонением с запаздыванием на один день.


Рисунок 5: Сигмоидное преобразование среднего к равномерному распределению.



Рисунок 6: Оценка методом box-counting_2 всех входов

Итак, произвели оценку всех 100 входов. Расчет произведен на периоде в 500 последних дней. Здесь дискретность для метода выбрана равной 10. Результаты на рисунке выше. Значения очень маленькие. Числовые характеристики для 10 лучших приведены ниже:

box-counting_2( sp500_c ) = 0.2744368

box-counting_2( nasdaq_c ) = 0.2613648

box-counting_2( gmkn_c ) = 0.2357223

box-counting_2( cac40_l ) = 0.2357223

box-counting_2( cac40_c ) = 0.2357223

box-counting_2( djia_c ) = 0.2357223

box-counting_2( gold_o ) = 0.2357223

box-counting_2( lkoh_l ) = 0.2231436

box-counting_2( lkoh_c ) = 0.2231436

box-counting_2( sngs_c ) = 0.2107210

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

Но все это оценки только для однопараметрической модели. Для построения нормального прогноза требуются несколько входов. Дальше постараемся найти несколько наиболее хороших входов. Делать это будем в генетике.

Вот результаты:



Рисунок 7: История качества по эпохам генетики



Рисунок 8: История нормы популяции по эпохам генетики.


Рисунок 9: История по количеству входов

В результате через 100 эпох модель сошлась к следующему набору входов:

rtkm_m,

gbpusd_h,

nasdaq_c,

lkoh_h.

Эти входы нужно использовать для предсказания среднего в следующем дне для Лукойла (lkoh_m).

Причем оценка по методу box-counting_2 для этого варианта оказалась равной 1.570298.

См.: Метод box-counting_2