English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Регрессионный анализ влияния макроэкономических данных на изменение цен валют

Регрессионный анализ влияния макроэкономических данных на изменение цен валют

MetaTrader 5Статистика и анализ | 2 сентября 2014, 10:21
4 838 31
Salavat Bulyakarov
Salavat Bulyakarov

Введение

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

Натолкнувшись на статью "Множественный регрессионный анализ: генератор стратегий и тестер в одном флаконе" в 2011, прочтя ее и заинтересовавшись методом, я провел некоторые исследования по применению такого метода для фундаментального анализа, о результатах которых и пойдет речь в этой статье.


Что такое "множественный регрессионный анализ"?

Множественный регрессионный анализ – это метод установления зависимости одной переменной от двух или более независимых переменных.

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

Представьте себе исследователя, который заинтересован в оценке эффекта постоянных физических нагрузок при использовании стимулянтов на потерю веса. Исследователь проводит эксперимент, привлекая 24 студента университета. Студенты разделены на 4 группы по 6 человек. Первая группа получает 100 мг/д стимулянтов, вторая - 200 мг/д, третья - 300 мг/д, четвертая - 400 мг/д. В этом эксперименте 4 уровня стимулянтов и 3 уровня физических нагрузок. Каждая шестерка разбита на три пары. Одна пара с объемом нагрузки 0 часов в неделю, вторая пара с нагрузкой 5 часов в неделю, третья пара с нагрузкой в 10 часов в неделю. В конце эксперимента зафиксирован результат потери веса по каждому из участников. Все занесено в таблицу следующего вида:

Обследованный Доза стимулянта (мг/день) Объем нагрузки (часы/неделя) Потеря веса (фунты)
1 100 0 -4
2 100 0 0
3 100 5 -7
4 100 5 -6
5 100 10 -2
6 100 10 -14
7 200 0 -5
8 200 0 -2
9 200 5 -5
10 200 5 -8
11 200 10 -9
12 200 10 -9
13 300 0 1
14 300 0 0
15 300 5 -3
16 300 5 -3
17 300 10 -8
18 300 10 -12
19 400 0 -5
20 400 0 -4
21 400 5 -4
22 400 5 -6
23 400 10 -9
24 400 10 -7

Результаты потери веса по каждому из участников

Соответственно, теперь стоят 2 вопроса:

  1. Что повлияло на потерю веса, стимулянты или физические нагрузки?
  2. В какой зависимости стоит изменение веса от влияющего фактора?

Не правда ли, очень похоже на ситуацию на финансовых рынках: цена на валюту, к примеру, поменялась и стоит вопрос, какие из двух новостей повлияли на это изменение? Если есть такой экономический показатель, влияющий на цену, то как изменяется цена при его изменении?

Ответить на эти вопросы помогает множественный регрессивный анализ и программа STATISTICA. Переносим или импортируем таблицы с данными в программу и выбираем в меню "Множественная регрессия":

Импорт данных примера в программу STATISTICA

Рис. 1. Импорт данных примера в программу STATISTICA

В открывшейся после выбора этой строки меню форме находим кнопку "Variables" и жмем на нее:

Окно выбора параметров для множественного анализа

Рис. 2. Окно выбора параметров для множественного анализа

Откроется окно выбора переменных, используемых для анализа. Оно состоит из двух частей: слева - выбор того, что мы считаем зависимой переменной (в нашем случае это потеря веса), справа - то, что на наш взгляд, может влиять на это изменение:

Назначение зависимых и независимых переменных

Рис. 3. Назначение зависимых и независимых переменных

После нажатия "OK" нас вернет в предыдущее диалоговое окно выбора настроек, в котором поставим галочку в чекбоксе и нажмем "OK":

Выбора параметров для множественного анализа

Рис. 4. Выбор параметров для множественного анализа

В следующем окне выберем метод "All Effects":

Выбора метода

Рис. 5. Выбор метода

В результате этих действий получим такое окно с результатом анализа. В списке показателей красным шрифтом отмечены показатели, вклад которых статистически достоверен (в данном случае это "Объем нагрузки"). Остальные показатели:

  • "No. of cases" - это количество случаев, использованных для анализа;
  • "p" - это уровень статистической достоверности этой корреляции (достоверным считается уровень меньше 0.05);
  • "Multiple R" - это значение множественной корреляции между зависимой и независимыми переменными, вошедшими в уравнение.

Результат обработки данных

Рис. 6. Результат обработки данных

Значение "Multiple R= 0,71819113" трактуется так: "Multiple R - это значение множественной корреляции между потерей веса и факторами, влияющие на эту потерю, составляет 71,82%".

Из двух факторов красным выделен один - "Объем нагрузки". Именно этот фактор и влиял на потерю веса, влияние же стимулянта было незначительным.

Осталось рассчитать, как именно оказывают влияние на потерю веса факторы, составив предварительно регрессивное уравнение. Для этого в окне результатов нажмем "Summary: Regression results", в результате чего откроется новая таблица, и из этой таблицы используем значения ячеек столбца "b" для составления уравнения регрессии:

Переменные регрессионного уравнения

Рис. 7. Переменные регрессионного уравнения

Получилось следующее уравнение:

Потеря веса = 0,00117*[Доза стимулянта] - 0,63750*[Объем нагрузки] - 2,5625

Подставляя значения в получившееся уравнение (Ctrl+C в STATISTICA -> Ctrl+V в Excel), можно рассчитать, как может измениться вес при тех или иных объемах стимулянта и объемах нагрузок, например:

  • Изменение веса 1 = 0.00117*100 - 0.6375*0 - 2.5625 = -2,4455, т.е. можем потерять до 2,4 фунта при использовании 100 мг. в сутки стимулянта и при отсутствии нагрузок.
  • Изменение веса 2 = 0.00117*100 - 0.6375*10 - 2.5625 = -8,8205 фунтов, т.е. можем потерять до 8,82 фунтов веса при использовании 100 мг. стимулянта в сутки и при нагрузках 10 часов в неделю.

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

Перенесем наши рассуждения на валюты. Предположим, что зависимая переменная – это изменение цены пары EURUSD, а независимые переменные – это данные макроэкономической статистики, полученные с календаря событий популярного ресурса Forex Factory.

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


Подготовка данных и их импорт в программу STATISTICA

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

С ресурса вручную я собрал значения по 99 факторам календаря новостей, относящихся к США за несколько прошлых лет:

публикуемые макроэкономические показатели USA

Рис. 8. Публикуемые макроэкономические показатели USA

Я переработал все числа в единый формат, удалил "млн.", "млрд." и т.д. и свел все данные в таблицу из 7 столбцов (см. файл "calendar_usd.zip" в приложении к статье) и добавил котировки для EURUSD с периодом D1.

Заголовки столбцов:

  • Date
  • MonthYear
  • Time
  • Time Zone
  • Currency
  • Description
  • Previous

Получившийся список, состоящий из более 6700 строк макроэкономических данных и котировок EURUSD, практической полезности для простого анализа в "ручном режиме" не несет. Требуется дополнительный обработчик, переводящий все данные в удобный табличный вид, где данные отсортированы по типу в отдельных столбцах и соотнесены в строках по дате. Для обработки данных и приведения все в табличный вид используется скрипт ListConvertToTable.

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

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

У меня получилось в результате такое (см. файл "calendar_usd_out.zip" в приложении к статье):

результат работы скрипта ListConvertToTable на языке MQL5

Рис. 9. Результат работы скрипта ListConvertToTable

Для обработки данных снова прибегаем к программе STATISTICA. Для загрузки CSV-файла в STATISTICA делаем следующее:

  • В STATISTICA откройте "File", потом "Open", выберите тип файла "Data files" и открывайте наш CSV-файл.
  • В окне "Text File Import Type" оставьте "Delimited" и нажмите "OK".
  • В открывшемся окне включите подчеркнутые пункты.
  • В поле "Decimal separator character" нужно обязательно поставить точку, независимо от того, есть она там уже или нет:

Импорт таблицы формата .csv в программу STATISTICA

Рис. 10. Импорт таблицы формата .csv в программу STATISTICA

Нажав "OK", получаем таблицу с нашими данными. Данные готовы для выполнения множественного регрессионного анализа. Для анализа влияния данных на последующее изменение цены необходимо добавить периоды, за которые происходили изменения цен. Я выбирал для анализа новости с 2010 года и три варианта зависимой переменной:

  • Изменение цены валюты спустя 1 сутки после выхода показателя;
  • Изменение цены валюты спустя 5 суток после выхода показателя;
  • Изменение цены валюты спустя 10 суток после выхода показателя.

Эти столбцы могут быть добавлены вручную в таблицу .csv перед экспортом в программу STATISTICA или же в таблице окна программы:

Расширенная таблица данных

Рис. 11. Расширенная таблица данных

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


Выявление факторов, влияющих на цену

Запустите Регрессионный анализ ("Statistics"->"Multiple Regression"). В открывшемся окне перейдите на вкладку "Advanced" и включите отмеченные пункты. Нажмите кнопку "Variables".

В первом поле выберите зависимую (dependent) переменную, во втором поле выберите независимые (independent) переменные, на основе которых мы будем строить уравнение:

Окно выбора параметров

Рис. 12. Окно выбора параметров

Используя кнопку "Variables" выбираем данные, которые будут использоваться при анализе:

Назначение зависимых и независимых переменных

Рис. 13. Назначение зависимых и независимых переменных

Появится окно с предупреждением "Some variables have no variance" - информирование о том, что некоторые выбранные независимые переменные без данных не изменяются. Такие столбцы требуется удалить. Находим методом исключения 49-й столбец "USD Federal Open Market Committee Rate Decision", удаляем его, получаем таблицу, которая готова к анализу (см. файл "calendar_2010-2011_usd_out.zip" в приложении к статье).

Жмем "OK". В открывшемся окне переходим на вкладку "Advanced" и ставим галки в чекбоксах:

Выбор метода Forward Stepwise

Рис. 14. Выбор метода Forward Stepwise

Завершаем выбор опций с помощью кнопок "Ок, в следующем окне выбора метода для автоматического отбора данных выбираем метод "Forward stepwise" и снова жмем "OK":

Выбор метода Forward Stepwise

Рис. 15. Выбор метода Forward Stepwise

Мы находимся на финишной прямой. Откроется окно, информирующее о том, что регрессионный анализ успешно выполнен. Нажимаем кнопку "Summary: Regression results".

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

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

Для возврата нажмите "Cancel" в окне результатов анализа и повторите анализ. Постарайтесь таким образом исключить все недостоверные показатели. При этом ориентируйтесь на получаемое значение множественной корреляции (Multiple R), оно не должно значительно уменьшиться от первоначального. Можно убирать недостоверные показатели из анализа по одному, а можно все сразу. Первый способ предпочтительнее.

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

По окончании анализа были выявлены показатели, которые могут оказывать влияние на изменение цены после их публикации. Набор этих показателей для разных периодов был разным. В результате выбора в качестве независимой переменной в левом окне "изменение цены за 1 сутки" (т.е. мы анализировали, как изменятся цены через сутки после выхода показателя) получим:

Независимая переменная "изменение цены за 1 сутки"

Рис. 16. Независимая переменная "Изменение цены за 1 сутки"

Возвращаемся с помощью "Cancel" и жмем снова кнопку "Variables", возвращаемся к спискам выбора переменных. Убираем постепенно из списка независимых переменных строки, показанных черным шрифтом, оставляем только красные. Это и будут новости, имеющие влияние на изменение цены в последующие сутки.

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

Проделав то же самое, но выбрав в качестве независимой переменной "изменение цены за 5 суток", получим:

Независимая переменная "изменение цены за 5 суток"

Рис. 17. Независимая переменная "изменение цены за 5 суток"

В результате выбора в качестве независимой переменной в левом окне "изменение цены за 10 суток", получим:

независимая переменная "изменение цены за 10 суток"

Рис. 18. Независимая переменная "изменение цены за 10 суток"

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

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

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

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


Уравнение регрессии и итоговый прогноз

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

На основе полученных данных таблицы из Рис. 17 "изменение цены за 5 суток" составим регрессионное уравнение. Для этого используются переменные столбца с заголовком "b". Первая строка - это числовая константа, полученная в результате анализа. Методику ее расчета я планирую рассмотреть в следующих публикациях.

На основе этих коэффициентов составляем уравнение регрессии:

R=-0.0761294138334434+0.355142961984956*[изменение цены за 1 сутки]+0.319936701020232*[изменение цены за 10 суток]+0.455193706894553*[USD Existing Home Sales (MoM)]-0.146961978306227*[USD MBA Mortgage Applications] + ...,

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

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

Подставим значения в данную формулу и рассмотрим результат на примере пары EURUSD. Подставляем коэффициенты из таблицы и возьмем, к примеру, данные строки на дату 04.08.2010 и подставим все в уравнение:


b значение [b]х[значение]
Intercept -0.0761 1.00000 -0.0761
изменение цены за 1 сутки 0.3551 -0.0070 -0.0025
изменение цены за 10 суток 0.3199 0.0244 0.0078
USD Existing Home Sales (MoM) 0.4552 -0.022 -0.0100
USD MBA Mortgage Applications -0.1470 -0.044 0.0065
USD Employment Cost Index 144.0041 0.006 0.8640
USD NAPM-Milwaukee 0.0106 59 0.6278
USD Existing Home Sales 0.0000 5660000 -0.6596
USD Unemployment Rate -6.7866 0.099 -0.6719
USD ISM Manufacturing 0.0197 56.2 1.1052
USD Capital Goods Orders Non defense Excluding Air -2.8934 0.048 -0.1389
USD Durables Ex Transportation 4.9290 0.012 0.0591
USD House Price Purchase Index (QoQ) -5.9295 -0.018 0.1067
USD Chicago Purchasing Manager -0.0160 59.1 -0.9433
USD Personal Consumption Expenditure Core (YoY) -19.8579 0.015 -0.2979



-0.0230

Число R=-0,0230 меньше нуля, следовательно, с 04.08.2010 и для ближайших 5 дней сохраняется тенденция падения цен до -230 пунктов. Смотрим на график пары EURUSD на этот период:

 EURUSD август 2010

Рис. 19. EURUSD август 2010

Прогноз на примере рисунка оправдался, и цена за 5 торговых дней действительно упала с 1.3154 до 1.2844 (закрытие 11 августа) т.е. на -310 пунктов. Прогноз падения, выданный уравнением регрессии, подтвердился. Аналогично можно подставлять и другие даты.


Заключение

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

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

Однако хочу обратить ваше внимание на то, что прогноз не является 100% гарантией того, что валюта пойдет именно в предсказанную сторону. Результат прогноза - это вероятностное событие, наступление которого зависит от многих факторов. Кроме того, уравнение регрессии рекомендуется периодически проверять при поступлении новых данных.

Удачных прогнозов!

Прикрепленные файлы |
Calendar_USD.zip (48.71 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (31)
СанСаныч Фоменко
СанСаныч Фоменко | 29 янв. 2015 в 18:44
Salavat:
На основе изложенного в статье создан советник. Торговля на золоте. Результаты его работы вы можете посмотреть здесь: https://www.mql5.com/ru/signals/61321

Результаты по прибыли ни о чем. Смотреть надо на соотношение убыточных и прибыльных трейдов, а оно примерно равно! Чистой воды орлянка. Модель не дает статистических преимуществ. 

ПС.

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

TheXpert
TheXpert | 29 янв. 2015 в 19:51
faa1947:

Результаты по прибыли ни о чем. Смотреть надо на соотношение убыточных и прибыльных трейдов, а оно примерно равно!

Ой вот только не надо рассуждать о вещах в которых нуб нубом

СанСаныч Фоменко
СанСаныч Фоменко | 30 янв. 2015 в 07:42
TheXpert:

Ой вот только не надо рассуждать о вещах в которых нуб нубом

А можно по-конкретнее, как человек, который бум-бум?
Salavat Bulyakarov
Salavat Bulyakarov | 30 янв. 2015 в 09:20
faa1947:
А можно по-конкретнее, как человек, который бум-бум?

простое соотношение количества сделок с прибылью с количеством убыточных сделок бессмысленно, т.к. это не подкидывание монетки с 2 вариантами результата.

СанСаныч Фоменко
СанСаныч Фоменко | 30 янв. 2015 в 10:16
Salavat:

простое соотношение количества сделок с прибылью с количеством убыточных сделок бессмысленно, т.к. это не подкидывание монетки с 2 вариантами результата.

Самый простой ответ - дело вкуса.

Но это не так и Вы в своей статье так не действуете.

Когда Вы отбираете показатели, то используете "влияние" индикаторов на движение цены, а это частотный показатель, относительный, не имеющий никакого отношения к соотношению приростов (прибыли/убытка) цены. Замечу, что это стандарт в статистике.

Так как нас интересует советник, а не отбор цены, то вполне закономерно использовать тестер и тем более результаты реала.

Рецепты MQL5 - обработка события TradeTransaction Рецепты MQL5 - обработка события TradeTransaction
В статье описываются возможности языка MQL5 с точки зрения событийно-ориентированного программирования. Преимущество данного подхода состоит в том, что программа может получать информацию о поэтапном выполнении торговой операции. Приводится пример того, как с помощью обработчика события TradeTransaction можно получать и обрабатывать информацию о совершаемых торговых действиях. Думаю, что такой подход можно смело применять для целей копирования торговых сделок с терминала на терминал.
Разработка социального технологического стартапа, часть II: Программируем клиент MQL5 REST Разработка социального технологического стартапа, часть II: Программируем клиент MQL5 REST
Сегодня мы окончательно оформим идею публикации торговых сигналов эксперта в Твиттере на основе PHP. Об этом мы начали говорить в первой части статьи. Мы соберем вместе отдельные части SDSS. Что касается клиентской стороны архитектуры системы, мы будем использовать новую функцию MQL5 WebRequest() для отправки торговых сигналов через HTTP.
Рецепты MQL5 - обработка типичных событий графика Рецепты MQL5 - обработка типичных событий графика
В данной статье рассматриваются типичные события графика и приводятся примеры их обработки. Рассмотрены события мыши, нажатия клавиатуры, создания/изменения свойств/удаления графического объекта, клик мыши на графике и графическом объекте, перемещение графического объекта при помощи мыши, окончание редактирования текста в поле ввода, а также события изменения графика. Для каждого события приведены примеры программ на MQL5.
Как мы развивали сервис торговых сигналов MetaTrader и социальный трейдинг в целом Как мы развивали сервис торговых сигналов MetaTrader и социальный трейдинг в целом
Мы активно совершенствуем сервис Сигналы, последовательно избавляемся от прежних недоработок и вносим изменения в существующие механизмы. MetaTrader Signals двухлетней давности и MetaTrader Signals на текущий момент - это словно два различных сервиса. Прямо сейчас ведутся работы по реализации виртуального хостинга Virtual Hosting Cloud - сети серверов для поддержки специальных версий клиентского терминала MetaTrader. За пять шагов из MetaTrader станет возможно взять в аренду виртуальную копию терминала с минимальной сетевой задержкой до торгового сервера брокера.