- Підготовка данних
- Вибір програмного забезпечення
- експеримент
- Знайомство з Matlab
- висновок
- література
В останні кілька років ми спостерігаємо вибух інтересу до нейронних мереж, які успішно застосовуються в самих різних областях - бізнесі, медицині, техніці, геології, фізики. Нейронні мережі увійшли в практику всюди, де потрібно вирішувати завдання прогнозування, класифікації або управління. Такий вражаючий успіх визначається декількома причинами:
- Багаті можливості. Нейронні мережі - виключно потужний метод моделювання, що дозволяє відтворювати надзвичайно складні залежності. Зокрема, нейронні мережі нелінійні по свій природі. Протягом багатьох років лінійне моделювання було основним методом моделювання в більшості областей, оскільки для нього добре розроблені процедури оптимізації. У завданнях, де лінійна апроксимація незадовільна, лінійні моделі працюють погано. Крім того, нейронні мережі справляються з "прокляттям розмірності", яке не дозволяє моделювати лінійні залежності в разі великого числа змінних
- Простота у використанні. Нейронні мережі навчаються на прикладах. Користувач нейронної мережі підбирає представницькі дані, а потім запускає алгоритм навчання, який автоматично сприймає структуру даних. При цьому від користувача, звичайно, потрібно якийсь набір евристичних знань про те, як слід відбирати і готувати дані, вибирати потрібну архітектуру мережі та інтерпретувати результати, проте рівень знань, необхідний для успішного застосування нейронних мереж, набагато скромніше, ніж, наприклад, при використанні традиційних методів статистики.
Нейронні мережі привабливі з інтуїтивної точки зору, бо вони засновані на примітивній біологічній моделі нервових систем. В майбутньому розвиток таких нейро-біологічних моделей може привести до створення дійсно мислячих комп'ютерів. [1]
Передбачення фінансових часових рядів - необхідний елемент будь-якої інвестиційної діяльності. Сама ідея інвестицій - вкладення грошей зараз з метою отримання доходу в майбутньому - грунтується на ідеї прогнозування майбутнього. Відповідно, прогноз фінансових часових рядів лежить в основі діяльності всієї індустрії інвестицій - всіх бірж і небіржових систем торгівлі цінними паперами.
Це найважливіша властивість ринкових часових рядів лягло в основу теорії "ефективного" ринку, викладеної в дисертації Луї де Башелье (L.Bachelier) в 1900 р Згідно з цією доктриною, інвестор може сподіватися лише на середню прибутковість ринку, що оцінюється за допомогою індексів, таких як Dow Jones або S & P500 для Нью-Йоркській біржі. Всякий же спекулятивний дохід носить випадковий характер і подібний до азартній грі на гроші (а що то в цьому є, чи не так?). В основі непередбачуваності ринкових кривих лежить та ж причина, по якій гроші рідко валяються на землі в людних місцях: занадто багато охочих їх підняти.
Теорія ефективного ринку не поділяється, цілком природно, самими учасниками ринку (які якраз і зайняті пошуком "впали" грошей). Більшість з них упевнені, що ринкові тимчасові ряди, незважаючи на гадану стохастичность, повні прихованих закономірностей, тобто в принципі хоча б частково передбачувані. Такі приховані емпіричні закономірності намагався виявити в 30-х роках в серії своїх статей засновник хвильового аналізу Елліот (R.Elliott).
У 80-х роках несподівану підтримку ця точка зору знайшла в незадовго до цього з'явилася теорії динамічного хаосу. Ця теорія побудована на протиставленні хаотичності та стохастичності (випадковості). Хаотичні ряди тільки виглядають випадковими, але, як детермінований динамічний процес, цілком допускають короткострокове прогнозування. Область можливих прогнозів обмежена за часом горизонтом прогнозування, але цього може виявитися достатньо для отримання реального доходу від пророкувань (Chorafas, 1994). І той, хто володіє кращими математичними методами вилучення закономірностей з зашумленних хаотичних рядів, може сподіватися на більшу норму прибутку - за рахунок своїх менш оснащених побратимів.
В останнє десятиліття спостерігається стійке зростання популярності технічного аналізу - набору емпіричних правил, заснованих на різного роду індикаторах поведінки ринку. Технічний аналіз зосереджується на індивідуальному поведінці даного фінансового інструменту, поза його зв'язку з іншими цінними паперами. Але технічний аналіз дуже суб'єктивний і погано працює на правому краю графіка - саме там, де потрібно прогнозувати напрямок ціни. Тому все більшої популярності набуває нейросетевой аналіз, оскільки на відміну від технічного, передбачає ніяких обмежень на характер вхідної інформації. Це можуть бути як індикатори даного часового ряду, так і відомості про поведінку інших ринкових інструментів. Недарма нейромережі активно використовують саме інституційні інвестори (наприклад, великі пенсійні фонди), що працюють з великими портфелями, для яких особливо важливі кореляції між різними ринками.
Нейромережеве моделювання в чистому вигляді базується лише на даних, не привертаючи ніяких апріорних міркувань. В цьому його сила і одночасно - його ахіллесова п'ята. Наявних даних може не вистачити для навчання, розмірність потенційних входів може виявитися занадто велика.
Тому для гарного прогнозу потрібно користуватися по-перше, дуже якісно підготовленими даними, а по-друге, нейропакет з великою функціональністю.
Підготовка данних
Для початку роботи потрібно підготувати дані, від правильності цієї роботи залежить 80% успіху.
Гуру кажуть, що в якості входів і виходів нейромережі не слід вибирати самі значення котирувань Ct. Дійсно значущими для пророкувань є зміни котирувань. Оскільки ці зміни, як правило, набагато менше за амплітудою, ніж самі котирування, між послідовними значеннями курсів є велика кореляція - найбільш ймовірне значення курсу в наступний момент одно його попереднього значення C (t + 1) = C (t) + delta (C ) = C (t).
Тим часом, для підвищення якості навчання слід прагнути до статистичної незалежності входів, тобто до відсутності подібних кореляцій. Тому в якості вхідних змінних логічно вибирати найбільш статистично незалежні величини, наприклад, зміни котирувань delta (С) або логарифм відносного збільшення log (C (t) / C (t + 1)).
Останній вибір хороший для тривалих часових рядів, коли вже помітно вплив інфляції. У цьому випадку прості різниці в різних частинах ряду матимуть різну амплітуду, тому що фактично вимірюються в різних одиницях. Навпаки, відносини послідовних котирувань не залежать від одиниць виміру, і будуть одного масштабу незважаючи на інфляційний зміна одиниць виміру. У підсумку, велика стационарность ряду дозволить використовувати для навчання велику історію і забезпечить краще навчання.
Негативною рисою занурення в лаговий простір є обмежений "кругозір" мережі. Технічний аналіз же, навпаки, не фіксує вікно в минулому, і користується іноді дуже далекими значеннями ряду. Наприклад, стверджується, що максимальні і мінімальні значення ряду навіть у відносно далекому минулому надають досить сильний вплив на психологію гравців, і, отже, повинні бути значущими для передбачення. Недостатньо широке вікно занурення в лаговий простір не здатне надати таку інформацію, що, природно, знижує ефективність передбачення. З іншого боку, розширення вікна до таких значень, коли захоплюються далекі екстремальні значення ряду, підвищує розмірність мережі, що в свою чергу призводить до зниження точності нейросетевого передбачення - вже через розростання розміру мережі.
Виходом з цієї, здавалося б, тупикової ситуації є альтернативні способи кодування минулого поведінки ряду. Інтуїтивно зрозуміло, що чим далі в минуле відходить історія ряду, тим менше деталей його поведінки впливає на результат передбачень. Це обумовлено психологією суб'єктивного сприйняття минулого учасниками торгів, які, власне, і формують майбутнє. Отже, треба знайти таке уявлення динаміки ряду, яке мало б виборчу точність: чим далі в минуле - тим менше деталей, при збереженні загального вигляду кривої.
Вельми перспективним інструментом тут може виявитися вейвлетного розкладання (wavelet decomposition). Воно еквівалентно по інформативності лаговой занурення, але легше допускає таке стиснення інформації, яке описує минуле з виборчої точністю.
Вибір програмного забезпечення
Для роботи з нейросетями призначене безліч спеціалізованих програм, одні з яких є більш-менш універсальними, а інші - вузькоспеціалізованими. Проведемо короткий огляд деяких програм:
1. Matlab - настільна лабораторія для математичних обчислень, проектування електричних схем і моделювання складних систем. Має вбудовану мову програмування і вельми багатий інструментарій для нейронних мереж - Anfis Editor (навчання, створення, тренування і графічний інтерфейс), командний інтерфейс для програмного завдання мереж, nnTool - для більш тонкої конфігурації мережі.
2. Statistica - найпотужніше забезпечення для аналізу даних і пошуку статистичних закономірностей. В даному пакеті робота з нейросетями представлена в модулі STATISTICA Neural Networks (скорочено, ST Neural Networks, нейронно-мережевий пакет фірми StatSoft), що представляє собою реалізацію всього набору нейромережевих методів аналізу даних.
3. BrainMaker - призначений для вирішення завдань, для яких поки не знайдені формальні методи і алгоритми, а вхідні дані неповні, зашумлені і суперечливі. До таких завдань відносяться біржові та фінансові передбачення, моделювання кризових ситуацій, розпізнавання образів і багато інших.
4. NeuroShell Day Trader - нейромережева система, яка враховує специфічні потреби трейдерів і досить легка у використанні. Програма є вузькоспеціалізованою і якраз підходить для торгівлі, але по своїй суті дуже близька до чорного ящика.
5. Решта програми є менш поширеними.
Для первинної роботи цілком підійде Matlab, в ньому і будемо намагатися визначити ступінь придатності нейромереж для прогнозування ринку Forex.
Ознайомитися з комплексом MatLab можна в вікіпедії https://ru.wikipedia.org/wiki/MATLAB
Багато матеріалів за програмою надано на сайті http://matlab.exponenta.ru/
Придбати програму можна через компанію SoftLine http://soft.softline.ru/author_page_all.php?id=410
експеримент
Підготовка данних
Дані дуже зручно можна отримати стандартними засобами MetaTrader:
Сервіс -> Архів котирувань -> Експорт
В результаті отримуємо файл у форматі * .csv, який є первинним сировиною для підготовки даних. Для перетворення отриманого файлу в зручний для роботи файл * .xls потрібно проізветсі імпорт даних з файлу * .csv. Для цього в excel потрібно зробити наступні махінації:
Дані -> Імпорт зовнішніх даних -> Імпортувати дані та вказати підготовлений первинний файл. У майстра імпорту всі необхідні дії виконуються в 3 етапи:
На 3 етапі необхідно поміняти роздільник цілої та дробової частини на точку, робиться це при натисканні кнопки Детальніше ...
Для того щоб дані були сприйняті як цифри, а не як рядки, потрібно поміняти роздільник цілої та дробової частини на точку:
Сервіс -> Параметри -> Міжнародні -> Роздільник цілої та дробової частини.
На скріншотах показаний приклад збереження цін відкриття і закриття, інші дані поки не потрібні.
Тепер дані треба перетворити відповідно до того, що і як ми хочемо прогнозувати. Складемо прогноз ціни закриття майбутнього дня по чотирьом попереднім (дані йдуть в п'яти стовпчиках, ціни в хронологічному порядку).
1.2605
1.263
1.2641
1.2574
1.2584
1.2666
1.263
1.2641
1.2574
1.2584
1.2666
1.2569
1.2641
1.2574
1.2584
1.2666
1.2569
1.2506
1.2574
1.2584
1.2666
1.2569
1.2506
1.2586
1.2584
1.2666
1.2569
1.2506
1.2586
1.2574
Завдяки нехитрим маніпуляціям в excel дані готуються за пару хвилин. Приклад підготовленого файлу з даними можна взяти в прикріпленому файлі.
Для того, щоб Matlab розпізнав файли, необхідно, щоб підготовлені дані були збережені в файлах з розширенням * .txt або * .dat. Збережемо їх в файлах * .txt. Далі кожен файл розбиваємо на два безлічі - для навчання мережі (вибірка) і для її тестування (поза вибіркою). Підготовлені таким чином euro.zip дані придатні для подальшої роботи
Знайомство з Matlab
З командного рядка по команді anfisedit запускаємо пакет ANFIS. Редактор складається з чотирьох панельок - для даних (Load data), для генерації мережі (Generate FIS), для тренування (Train FIS) і для її тестування (Test FIS). Верхня панель призначена для перегляду структури отриманої нейромережі (ANFIS Info).
Більш детально з роботою пакета можна ознайомитися за наведеним нижче посиланням.
http://forest.akadem.ru/library/matlab/fuzzylogic/book1/7_6.html
http://matlab.exponenta.ru/fuzzylogic/book1/1_7_5_7.php
Для початку роботи завантажуємо дані, підготовлені на попередніх етапах. Для цього натискаємо кнопку Load Data і вказуємо файл з даними вибірки. Після цього створюємо нейросеть натисканням кнопки Generate FIS.
Для кожної з вхідних змінних задамо по 3 лінгвістичні змінні з трикутної функцією приналежності. В якості опції належності вихідної функції поставимо лінійну функцію.
Для навчання нейромереж в пакеті AnfisEdit передбачено 2 алгоритму навчання - зворотного поширення і гібридний. При гібридному способі навчання мережа навчається буквально за пару-трійку проходів. На тренувальній вибірці (60 значень) після навчання прогноз мережі відрізняється від реального на кілька пунктів.
Але ось прогнозувати то треба майбутнє! В якості даних поза вибіркою були взяті такі 9 днів після даних всередині вибірки. Тут ви швидко поза вибіркою середньоквадратична помилка склала 32 пункту, що звичайно неприйнятно для реальної торгівлі, але говорить про те, що в напрямку нейромереж можна працювати далі - гра повинна коштувати свічок.
Результатом нашої роботи є багатошарова гібридна нейронна мережа, яка здатна прогнозувати абсолютні значення цін на невеликій майбутнє. Вона кардинально відрізняється своєю архітектурою і цілями від одношарової нейронної мережі, представленої паном Решетовим в своїй статті http://articles.mql4.com/ru/articles/1447 і реалізованої в якості експерта https://www.mql5.com/ru/code/10289 .
Нам вдалося отримати більш-менш стерпний прогноз по самим котируванням, хоча фахівці в області нейронних мереж настійно не рекомендують робити це. Отриманою нейромережею можна помилуватися при натисканні кнопки Structure. Навчену нейросеть можна взяти в прикріпленому файлі neuro.zip.
Великим плюсом пакету MatLab є його інтегрованість з іншими програмами, причому існує безліч варіантів його інтреграціі DDE, com-об'єкти, dll. Таким чином, можна не створювати інструмент з нуля https://www.mql5.com/ru/forum/102093 , А скористатися готовим програмним рішенням для роботи з нейронними мережами і генетичними алгоритмами. Потім, після отримання стабільних результатів прогнозування, можна буде інтегрувати отриману нейросеть в програму MetaTrader через dll.
висновок
Нейронні мережі є дуже потужним інструментом для роботи на фінансових ринках, але для освоєння цього цієї технології потрібно витратити часу вже точно не менше, ніж на освоєння технічного аналізу.
Плюсом нейромереж є об'єктивність при ухваленні рішення, а мінусом - те, що рішення приймає фактично чорний ящик.
Основні проблеми, що виникають при роботі з цією технологією - правильна попередня обробка даних, цей етап грає вирішальну роль для прогнозування даних і дуже багато безуспішні спроби роботи з нейросетями пов'язані саме з цим етапом.
Для того, щоб добре освоїти нейромережі потрібно дуже багато експериментувати - але це того варте. Якщо інституційні інвестори використовують цей інструмент, то і рядові трейдери теж можуть спробувати домогтися успіху саме за допомогою навчених нейромереж, адже на вхід мережі можна подавати все - від індикаторів і цін до сигналів фундаментального аналізу.
література
1. Нейрокомпьютинг і його застосування в науці і бізнесі. А. Єжов, С. Шумський. 1998 р
А що то в цьому є, чи не так?
Php?