Регресійний аналіз впливу макроекономічних даних на зміну цін валют
- Вступ Фундаментальний аналіз для багатьох являє незрозумілу область: неясно як його проводити, які...
- Підготовка даних і їх імпорт в програму STATISTICA
- Виявлення чинників, що впливають на ціну
- Рівняння регресії і підсумковий прогноз
- Висновок
Вступ
Фундаментальний аналіз для багатьох являє незрозумілу область: неясно як його проводити, які параметри враховувати, а які ні, якщо ж враховувати, то потрібно з'ясувати характер їх впливу і як довго це вплив слід враховувати в своїх угодах.
Натрапивши на статтю "Множинний регресійний аналіз: генератор стратегій і тестер в одному флаконі" в 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 питання:
- Що вплинуло на втрату ваги, стимулянти або фізичні навантаження?
- У якій залежності варто зміна ваги від впливає чинника?
Чи не правда, дуже схоже на ситуацію на фінансових ринках: ціна на валюту, наприклад, змінилася і стоїть питання, які з двох новин вплинули на цю зміну? Якщо є такий економічний показник, що впливає на ціну, то як змінюється ціна при його зміні?
Відповісти на ці питання допомагає множинний регресивний аналіз і програма 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 факторам календаря новин, що відносяться до США за кілька минулих років:
Мал. 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" в додатку до статті):
Мал. 9. Результат роботи скрипта ListConvertToTable
Для обробки даних знову вдаємося до програми STATISTICA . Для завантаження CSV-файлу в STATISTICA робимо наступне:
- У STATISTICA відкрийте "File", потім "Open", виберіть тип файлу "Data files" і відкривайте наш CSV-файл.
- У вікні "Text File Import Type" залиште "Delimited" і натисніть "OK".
- У вікні включите підкреслені пункти.
- В поле "Decimal separator character" потрібно обов'язково поставити крапку, незалежно від того, є вона там вже чи ні:
Мал. 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" і ставимо галки в чекбоксах:
Мал. 14. Вибір методу Forward Stepwise
Завершуємо вибір опцій за допомогою кнопок "Ок, в наступному вікні вибору методу для автоматичного відбору даних вибираємо метод" Forward stepwise "і знову тиснемо" OK ":
Мал. 15. Вибір методу Forward Stepwise
Ми знаходимося на фінішній прямій. Відкриється вікно, що інформує про те, що регресійний аналіз успішно виконаний. Натискаємо кнопку "Summary: Regression results".
Коли виконується автоматичний відбір показників, то вибираються ті з них, які роблять найбільший внесок у множинну кореляцію між показниками (незалежні змінні) і залежною змінною. У нашому випадку буде обраний набір індикаторів, які найсильніше впливають на ціну. Автоматичний відбір, по суті, грає роль генератора стратегії. В генерується рівняння йдуть тільки ті індикатори, які достовірно і найкращим чином описують поведінку ціни.
Використовувані в STATISTICA правила включення показників в аналіз не завжди оптимальні. Наприклад, в регресійне рівняння може бути включено багато недостовірних показників (чорний шрифт тексту в таблиці результату). Якщо в списку є недостовірні показники, то поверніться на етап включення показників в аналіз, і приберіть цей показник зі списку показників, обраних для аналізу.
Для повернення натисніть "Cancel" у вікні результатів аналізу Повторіть тестування. Постарайтеся таким чином виключити всі недостовірні показники. При цьому орієнтуйтеся на одержуване значення множинної кореляції (Multiple R), воно не повинно значно зменшитися від початкового. Можна прибирати недостовірні показники з аналізу по одному, а можна все відразу. Перший спосіб краще.
У підсумку в таблиці залишаються достовірні показники, що впливають на зміну ціни. У таблицях червоним виділені ті змінні, для яких виявлено деяка залежність їх впливу на зміну ціни, і чорним відзначені змінні, що не мають впливу.
Після закінчення аналізу були виявлені показники, які можуть впливати на зміну ціни після їх публікації. Набір цих показників для різних періодів був різним. В результаті вибору в якості незалежної змінної в лівому вікні "зміна ціни за 1 добу" (тобто ми аналізували, як зміняться ціни через добу після виходу показника) отримаємо:
Мал. 16. Незалежна змінна "Зміна ціни за 1 добу"
Повертаємося з допомогою "Cancel" і тиснемо знову кнопку "Variables", повертаємося до списків вибору змінних. Прибираємо поступово зі списку незалежних змінних рядки, показаних чорним шрифтом, залишаємо тільки червоні. Це і будуть новини, які мають вплив на зміну ціни в наступну добу.
Зверніть увагу, що в таблиці на малюнку рядки розрізняються за кольором. Червоним виділені ті незалежні змінні, чий вплив велике на залежну змінну. На малюнку нижче все рядки виділені червоним, тобто похибки в результатах рівняння при підстановці даних будуть менше, ніж в першому випадку. Вплив же можна подивитися за значеннями коефіцієнтів останнього стовпця "p-value" (чим менше число, тим краще). На їх основі потрібно видаляти з аналізу змінні, що не мають впливу на ціну.
Проробивши те ж саме, але вибравши в якості незалежної змінної "зміна ціни за 5 діб", отримаємо:
Мал. 17. Незалежна змінна "зміна ціни за 5 діб"
В результаті вибору в якості незалежної змінної в лівому вікні "зміна ціни за 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 на цей період:
Мал. 19. EURUSD серпень 2010
Прогноз на прикладі малюнка виправдався, і ціна за 5 торговельних днів дійсно впала з 1.3154 до 1.2844 (закриття 11 серпня) тобто на -310 пунктів. Прогноз падіння, виданий рівнянням регресії, підтвердився. Аналогічно можна підставляти і інші дати.
Висновок
Розглянутий вище спосіб аналізу даних макроекономічних показників дозволяє спростити і автоматизувати фундаментальний аналіз, в результаті навіть початківець зможе оперувати з величезною кількістю даних економічної статистики.
Крім того, такий підхід до фундаментального аналізу дозволяє практично моментально реагувати в своїй торгівлі і коригувати свої угоди з урахуванням даних новинних стрічок.
Однак хочу звернути вашу увагу на те, що прогноз не є 100% гарантією того, що валюта піде саме в передбачену сторону. Результат прогнозу - це імовірнісна подія, настання якого залежить від багатьох факторів. Крім того, рівняння регресії рекомендується періодично перевіряти під час вступу нових даних.
Вдалих прогнозів!
Що таке "множинний регресійний аналіз"?У якій залежності варто зміна ваги від впливає чинника?
Чи не правда, дуже схоже на ситуацію на фінансових ринках: ціна на валюту, наприклад, змінилася і стоїть питання, які з двох новин вплинули на цю зміну?
Якщо є такий економічний показник, що впливає на ціну, то як змінюється ціна при його зміні?