Прогнозирование биржевых котировок в R

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

Для разнообразия возьмем не валютные котировки, а котировки акций. Какая у вас любимая фирма? Не слышу! Что? Микрософт? Давайте для примера возьмем дневные цены закрытия на акции Microsoft (MSFT) с 2009 года и до конца 2014. А потом возьмем цены за январь 2015-го и сравним с прогнозом.

getSymbols("MSFT")
m <- MSFT["2009-01-01::2014-12-31"]

Строим график:

chartSeries(m$MSFT.Close)

Ну, что мы видим?

Цена акций Microsoft

Видим, что несмотря на частые в среде линуксоидов разговоры о близком и неминуемом виндекапце, Microsoft на тот свет отнюдь не собирается, даже наоборот. Казалось бы, контора стабильно перестала выдавать инновации, народ силой сгоняют с Windows XP, слезать с Windows 7 вообще никто не желает, а финансовая мощь MS стабильно растет. Парадокс? Корпорация продает высокие технологии, технологии оказываются не такими уж высокими, но это никак не отражается на все растущей прибыли. И знаете почему? Контора доросла до таких размеров, что запросто может вообще ничего не производить и все равно будет с каждым годом все больше и больше зарабатывать, делая деньги на инвестициях и патентном терроризме. Чтобы подтвердить свой вывод, приведу пример: только Samsung платит Microsoft $1 млрд в год за... внимание... Андроид! Какое этот бизнес имеет отношение к высоким технологиям? Но не будем отклоняться от темы.

Котировки акций загрузились в продвинутом формате для хранения временных рядов — xts (extensible time-series). Преобразуем все в ts, а пустые места (дни, когда не было торговли) исключим (na.omit), либо проставим средние значения по соседям (na.approx):

na.omit(ts(m$MSFT.Close))

Для полученного временного ряда построим полиномиальную линию тренда и посмотрим, что получилось:
Полиномиальный тренд
Что мы видим? Цена «отскакивает» от линии, а потом к ней возвращается. Сама собой приходит на ум стратегия:

  1. Если цена растет, но текущее значение расположено ниже линии тренда, надо покупать.
  2. Если цена растет, но текущее значение расположено выше линии тренда, не надо ничего делать.
  3. Если цена падает, но текущее значение расположено выше линии тренда, надо продавать.
  4. Если цена падает и текущее значение находится ниже линии тренда, не надо ничего делать.

Заметьте, что цена может развернуться и пойти в противоположную прогнозу сторону, но все равно рано или поздно возвращается к линии.

Чтобы было удобнее искать сигналы на покупку/продажу, построим еще один график, который будет показывать отклонение цены от тренда.

Анализ котировок Microsoft

Текущее отклонение от тренда я обозначил красным пунктиром. Можно увидеть, что цена часто отскакивала именно от этого значения (когда цена акции падала на 4 доллара, то почти всегда следовал отскок, как минимум на 4 доллара). По нашей стратегии самое время запасаться ценными бумагами MSFT. Напомню, на календаре 31 декабря 2014 года. Так, купили. Теперь смотрим, сбылся ли прогноз:

t[length(t)]
[1] 46.45
summary(na.omit(ts(MSFT["2014-01-01::2015-02-18"]$MSFT.Close)))
MSFT.Close   
Min.   :34.98  
1st Qu.:39.83  
Median :42.43  
Mean   :42.67  
3rd Qu.:46.16  
Max.   :49.61  

В период с 1 января по 18 февраля 2015 года максимальная цена акций MSFT достигала 49 долларов 61 цента, тогда как мы «покупали» по $46.45. Максимальная прибыль составляла в один прекрасный момент $3,16 на акцию, но это не имеет значения, так как мы установили Take Profit на уровне $50,45. Значит ли это, что мы проиграли? Нет, если ждать дольше, то высока вероятность того, что цена преодолеет отметку в $50,45. Откуда такая уверенность? Ну так цена росла последние 5 лет и вряд ли разворот произойдет именно в тот месяц, когда мы решили прикупить свою порцию акций для спекуляции.

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

Загадка

Этот вопрос является своеобразным тестом на IQ и позволит читателю определить, дебил ли он или математический гений, финансовый самородок и акула капитализма в одном лице. Итак, вопрос: стратегия имеет огромный изъян, делающий ее малопригодной для использования на фондовом рынке (не говорю уже о валютном), особенно на средних и коротких отрезках времени. О каком очевидном изъяне идет речь?

Как разбогатеть
Купила акции по $15 в 2009 году, продала по $50 в 2014

А на чем основана стратегия?

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

Ваша оценка: Нет Средняя оценка: 5 (3 votes)
a

А все команды от начала и до конца не моли бы расписать?

Ваша оценка: Нет Средняя оценка: 5 (1 vote)
a

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

Ваша оценка: Нет Средняя оценка: 5 (1 vote)
10
pomodor

Так специалисты рекомендуют заливать не меньше 5 штук зелени, а торговцы с плечом больше 1:10 могут сразу застрелиться. Другое дело, что лично я уже давно понял, что торговля на Форексе в режиме минимального риска будет давать тебе 15-20% год. Есть более интересные и удобные способы вложить бабки и получить сравнимую или большую доходность.

Ваша оценка: Нет Средняя оценка: 5 (1 vote)
Отправить комментарий
КАПЧА
Вы человек? Подсказка: зарегистрируйтесь, чтобы этот вопрос больше никогда не возникал. Кстати, анонимные ссылки запрещены.
CAPTCHA на основе изображений
Enter the characters shown in the image.
Linux I класса
Linux II класса
Linux III класса
Счетчики
  • Самый популярный сайт о Linux и Windows 10
  • Индекс цитирования