Перші кроки навчання для прогнозування фінансових часових періодів за допомогою машинного навчання


12

Я намагаюся зрозуміти, як використовувати машинне навчання для прогнозування фінансових часових серій 1 або більше кроків у майбутнє.

У мене є фінансові часописи з деякими описовими даними, і я хотів би сформувати модель, а потім використовувати модель для прогнозування n-кроків вперед.

Що я робив поки що:

getSymbols("GOOG")

GOOG$sma <- SMA(Cl(GOOG))
GOOG$range <- GOOG$GOOG.High-GOOG$GOOG.Low

tail(GOOG)

           GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume GOOG.Adjusted     sma range
2013-05-07    863.01    863.87   850.67     857.23     1959000        857.23 828.214 13.20
2013-05-08    857.00    873.88   852.91     873.63     2468300        873.63 834.232 20.97
2013-05-09    870.84    879.66   868.23     871.48     2200600        871.48 840.470 11.43
2013-05-10    875.31    880.54   872.16     880.23     1897700        880.23 848.351  8.38
2013-05-13    878.89    882.47   873.38     877.53     1448500        877.53 854.198  9.09
2013-05-14    877.50    888.69   877.14     887.10     1579300        887.10 860.451 11.55

Тоді я встановив до цих даних випадкову модельForest.

fit <- randomForest(GOOG$GOOG.Close ~ GOOG$sma + GOOG$range, GOOG)

Яка, здається, підходить напрочуд добре:

> fit

Call:
 randomForest(formula = GOOG$GOOG.Close ~ GOOG$sma + GOOG$range,      data = GOOG) 
               Type of random forest: regression
                     Number of trees: 500
No. of variables tried at each split: 1

          Mean of squared residuals: 353.9844
                    % Var explained: 97.28

І спробував використовувати його для прогнозування:

predict(fit, GOOG, n.ahead=2)

Але це передбаченняc не спрацювало.

Я намагаюся передбачити Закрити, чи слід відставати від інших змінних на стільки кроків, наскільки я хочу прогнозувати, перш ніж підходити до моделі?

Напевно, багато іншого, що я повинен також враховувати, але це справді перші мої кроки, які випробовують машинне навчання.

Відповіді:


16

Моє перше зауваження - ви не відставали від вхідних даних щодо ціни закриття, і саме тому ви помітили таку гарну форму. SMA (проста ковзаюча середня величина) використовує ціну для закриття у своєму розрахунку, а високий низький діапазон охоплює ціну закриття, тому використовуючи їх для прогнозування ціни закриття надає зміщення погляду вперед. На мою думку, якщо ви намагаєтеся передбачити ціну закриття на два дні вперед, ви повинні побудувати свою модель з вхідними даними, які відстають від ціни закриття як мінімум на два дні. Деякі входи можуть затриматись більше ніж на два дні, але я почав би просто і спробував би використовувати лише декілька входів.

Що стосується вашої мети передбачити ціну закриття, я вважаю, що ціни закриття занадто галасливі, щоб використовувати їх як цільові змінні, а їх використання призведе до перевищення або оптимізації неправильної мети. Натомість я б почав з вирівнювання ціни закриття з ковзною середньою величиною, а потім прогнозував напрямок зміни ціни протягом наступних двох днів. Наприклад, я можу замінити закриття 5-денним SMA закриття, а потім зафіксувати зміну ціни SMA як 1, якщо вона була позитивною протягом наступних двох днів, а 0 в іншому випадку. Оскільки вихідна змінна тепер кодується як 1 або 0, це хороша проблема, щоб спробувати вирішити за допомогою випадкової лісової функції, яку ви використовували. Ви також можете спробувати деякі інші алгоритми класифікації, такі як логістична регресія, нейронні мережі та SVM, і, можливо, об'єднати декілька в ансамбль, щоб покращити вашу ефективність. Це все ще важку проблему вирішити без надмірного оснащення, але це крок у правильному напрямку. Ще одне обережне слово - це те, що ваша фінальна модель може мати дивовижну точність, класифікуючи наступні два дні як позитивні чи негативні, але все одно втрачає гроші, оскільки класифікувала кілька великих кроків неправильно.

Я б також рекомендував будувати свою модель на більш ніж одній безпеці, щоб алгоритм машинного навчання не відточувався в ідіосинкразії одного запасу. Я б почав із щонайменше 5 акцій, які не дуже співвідносяться з іншими.

Торгівля на краю Гвідо Дебоека - це гарне місце для початку вивчення прикладів машинного навчання для прогнозування фінансових часових рядів. Це старіша книга, тому вона відстає від технології, яку ми маємо сьогодні, але це хороший початок. Я також рекомендував би нові торгові системи та методи від Kaufman та Expert Trading Systems від John Wolberg.


ок, дякую за цю гарну відповідь. Приклад був для мене більш зрозумілим, як налаштувати дані, щоб випадковийForest міг ним користуватися. Але тепер я знаю, що мені потрібно відставати вхідних даних, щоб він працював. Чи має сенс, щоб ціна SMA у вашому прикладі була вихідною змінною, або вона повинна бути 0 або 1? \ n Дякую також за рекомендації книги ознайомлюсь із ними.
nikke

Ви точно можете використовувати ціну SMA як вихідну змінну; проблема просто стає більш складною. Замість того, щоб прогнозувати напрямок, ви зараз намагаєтесь передбачити точне значення ціни. На моєму досвіді, це дуже складна річ для машинного алгоритму, який може робити непогашений вибір Але якщо ви просто ознайомлюєтесь із процесом налаштування даних часових рядів для прогнозування, це може бути хорошим місцем для початку, особливо якщо це для вас більш інтуїтивно зрозуміло, ніж спрямоване прогнозування. Ви також можете спробувати передбачити ціну, за якою перейдуть два середніх середніх.
CrossValidedTrading

Привіт, створив деякі функції та створив модель: pastie.org/7958695 Я думаю, що я зрозумів механіку. Однак ця модель занадто крива. Ви робили щось подібне і чи справді це використовували? Класно було б поговорити більше.
nikke

Я завжди відкритий для більш детальних розмов. Моя контактна інформація у моєму профілі. Захистіть мені електронний лист, якщо хочете.
CrossValidedTrading

Зробили кілька простих регресій, щоб передбачити прибуток, який повинен працювати нормально, порівняно з прогнозуванням ціни-вартості. Окрім прогнозування повернення, потрібно передбачити достатньо велику віддачу, щоб перемогти розповсюдження та переміщення і т.д. Моя в пасті, яку я розмістив у попередньому коментарі.
nikke
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.