В среду (7 февраля) я использовал 3D-анализ, чтобы предвидеть точку восстановления Биткойна. И пройдет день или два, прежде чем цена достигнет нового максимального значения (прежде, чем произойдет еще один разворот).

Взгляните на этот красивый паттерн (время x цена x объем):

Статический снимок экрана:

Примерно через три часа после публикации вышеупомянутого я написал: «Похоже, поворотный момент из моего предыдущего ответа был точным. Люди, купившие биткойн по самой низкой цене (± 6100 долларов за биткойн), испытали рост на ± 35%. Текущее значение составляет около ± 8200 долларов за биткойн ».

Вот взгляд со спины на восстановление Биткойна (включая точку поворота)

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

Большую часть среды я работал (и продолжаю работать) над тестированием на истории на основе прогнозов и основных сигналов. Сначала я перестроил базовые сигналы, которые отображаются в инструменте прогнозов, в свой собственный скрипт тестирования на истории. Затем я сгенерировал прогнозы (длина: 12) для 24-часовых интервалов. Инструмент тестирования на истории совершает все сделки в соответствии с сигналами. Поскольку каждый сигнал относится к будущему, мы сначала заполняем очередь «будущих сделок», а затем просматриваем время, чтобы получить фактическое значение цены (имитируя сценарий реальной торговли).

Пример:

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

Примечание: красная линия не совпадает с черной, но самое главное, чтобы они выглядели максимально одинаково!

Каждый интервал (например, зеленый кружок), Мэгги пообещает себе покупать / продавать биткойны, где и когда поступит сигнал «покупать» / «продавать». Мэгги занимает 10 000 долларов у своего мужа «Леонарда» для совершения сделок. В этом случае она всегда вкладывает всю сумму в каждую «покупку», а когда она продает, она продает все. Обычно мы заставляем Мэгги бодрствовать 36 часов подряд, однако она не обязательно будет торговать каждый час.

* Мы также гарантируем, что последней сделкой Мэгги всегда была «продажа» (а не «покупка») - это позволяет нам рассчитать рентабельность инвестиций в конце ее торгового пути путем обналичивания.

Мэгги начинает торговать с «3 февраля 2018 г., 00:00 по Гринвичу», до «4 февраля 2018 г., 12:00 по Гринвичу» (ровно 24 + 12 = 36 часовых интервалов). Это предсказания / сигналы, которым она слепо подчиняется:

IMHO, этот анимированный гиф прекрасно иллюстрирует, как красная линия следует по тому же пути, что и фактическая цена (= черная линия) - у них немного разные значения Y, но это совсем не проблема.

Ниже это частичный снимок экрана с результатами тестирования на истории:

К вашему сведению, поля в этом выводе JSON не важны, но если вам интересно знать, то я объясню это следующим образом:

  • По сути, мы видим (почти) каждый интервал. По умолчанию включены первые 24 интервала (с 00:00 до 23:00). Впоследствии вы можете заметить, что некоторые интервалы отсутствуют, потому что для этих интервалов прогноза не было инициировано никаких покупок / продаж.
  • Когда мы расширяем некоторые интервалы, мы видим объект «_buy», «_sell» или ничего. Это сигналы, назначенные указанным интервалам, как вы ранее видели на анимированном GIF-изображении. Они указывают, каково значение прогноза ($ USD) и цена покупки / продажи, которая является фактической / реальной ценой ($ USD) на этом интервале.
  • На всех остальных интервалах также отображается «ap» = фактическая цена; «Крипто» = сколько биткойнов держит Мэгги; «Наличные» = сколько денег (в долларах США) у Мэгги. Таким образом, вы также можете видеть, когда она покупает биткойны, ее деньги обнуляются, и наоборот, когда она продает криптовалюту.
  • В конце я добавил ключевую запись «_», которую объясню дальше.

Резюме

Мэгги начала с 10 тысяч долларов, а через 36 часов (34 *) у нее было 10 567,10 доллара. Рентабельность инвестиций составляет около 5,67% (то есть валовая прибыль в размере 567 долларов США - мы не учитывали комиссии за транзакции).

Я заметил, что рентабельность инвестиций была довольно низкой (от -1,5% до 1,5%). когда я использовал среднее значение шести различных графиков прогнозов для генерации сигналов (как показано в моих предыдущих сообщениях). Но когда я использовал только один тип функции (например, «hopkins» в этом примере), то рентабельность инвестиций была почти вдвое выше и положительна при каждом запуске теста.

Дополнительная информация

Мэгги могла слишком бояться вложить все 10 тысяч долларов в одну «покупку». Таким образом, мы можем позволить ей совершать покупки, используя только 25% наличных денег, которые у нее есть. В этом случае ROI немного ниже, но тем не менее положительный: 4,73% ($ 473 - валовая прибыль).

Примечание: в этом сценарии Мэгги никогда не инвестирует более 25% своих денежных средств в биткойны - но когда она «продает», она продает все (100%).

Следующие шаги

  1. Пару недель назад я упоминал, что использование большего количества параметров в системе прогнозов дает более плохие результаты, чем при использовании только двух или трех параметров. Некоторые из вас, возможно, помнят, как я это говорил. К сожалению, в нашем случае это остается верным. Хопкинс основан только на двух характеристиках (цена и объем торгов).
  2. Моя следующая задача - понять, «почему» это так. Во-вторых, нужно настроить параметры для увеличения рентабельности инвестиций.
  3. В-третьих, в этом примере используются очень простые (почти глупые) сигналы, которые представляют собой не что иное, как минимальное / максимальное значение сгенерированных графиков прогнозов. Я очень удивлен, что у нас есть хорошая маржа прибыли / ROI, если мы подчиняемся такой неубедительной системе. Но я уверен, что Мэгги (и ее муж) вообще могут жаловаться, но нам определенно нужно снизить риск, оптимизировав торговую стратегию и улучшив систему / алгоритм сигналов.

Пора лечь в постель, сейчас 4 часа ночи, так что я надеюсь, что не написал слишком много опечаток.

Четверг, 8 февраля:

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

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

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

Пятница, 9 февраля

Целый день потратили на настройку кода тестирования на истории. Я понял, что бэктесты «только» дают положительную маржу / рентабельность инвестиций в предсказуемых регионах. В качестве практического примера - с 4 по 6 февраля произошло длительное снижение цены BTC - это, по-видимому, нетривиальный регион, который наши прогнозы не могут спрогнозировать, поэтому мы проводим тестирование в этом регионе на исторических данных. дает отрицательную рентабельность (убытки). Я все еще пытаюсь понять, как улучшить результаты прогнозов на 4 февраля, поэтому работа над этой частью еще не завершена.

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

Действительно, было небольшое снижение, но намного меньше, чем предполагалось. Сигналы на покупку / продажу также были довольно «нормальными» по сравнению с реальной ценой.

Суббота, 10 февраля

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

За последние два дня мои результаты тестирования на истории не были превосходными и в большинстве случаев имели отрицательную рентабельность инвестиций. Это произошло в первую очередь потому, что я запускал их в очень конкретном регионе, где цена BTC начала падать (между 2 и 4 февраля).

В своем предыдущем посте я отмечал, что более стабильные (а значит, более предсказуемые) регионы в среднем уже дают положительный ROI. В следующем примере я расширил диапазон тестирования на истории до 10 дней: с 1 по 10 февраля.

Ниже приведен список результатов ROI (%) для каждой функции и для диапазона дат:

2018–02–01 → 2018–02–02
леонард: -9.9827
давинчи: -6.7928
джек: -4.2996
мэгги: -5.2389
хопкинс: - 7,8576
зевс: -7,1866

2018–02–01 → 2018–02–03
леонард: -6,2089
давинчи: -5,5678
джек: -10,5669
мэгги: -9,9998
хопкинс: - 6.5830
zeus: -3.9999

2018–02–01 → 2018–02–04
леонард: -6,8220
давинчи: 0,7933
джек: -7,5079
мэгги: -0,4476
хопкинс: 2,8709 < br /> zeus: -5,7064

2018–02–01 → 2018–02–05
леонард: -13,0994
давинчи: -4,3663
джек: -9,8992
мэгги: -9,0117
хопкинс: - 1.4675
zeus: -7.4565

2018–02–01 → 2018–02–06
леонард: -22,4757
давинчи: -12,5854
джек: -22,3420
мэгги: -15,1592
хопкинс: - 9.0237
zeus: -16.4410

2018–02–01 → 2018–02–07
леонард: -18,4872
давинчи: -18,4128
джек: -12,4008
мэгги: -7,9708
хопкинс: 5,4584
Зевс: -8.1996

2018–02–01 → 2018–02–08
леонард: -15,6049
давинчи: -18,6906
джек: -15,8222
мэгги: -9,9868
хопкинс: 8,4589
Зевс: -6,0735

2018–02–01 → 2018–02–09
леонард: -17,7171
давинчи: -18,8250
джек: -18,7335
мэгги: -4,0017
хопкинс: 8,4400
Зевс: -3,7195

2018–02–01 → 2018–02–10
леонард: -13,3938
давинчи: -15,5171
джек: -13,5012
мэгги: -5,7064
хопкинс: 18,4719
zeus: 2.9718

В приведенных выше результатах вы видите, что каждая итерация на один день длиннее предыдущей. Причина в том, что в период с 1 по 6 февраля цена BTC сильно снизилась. С 6 февраля он снова начал стабильно расти.

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

Мы также видим, что почти в каждом отдельном случае именно функция типа «hopkins» давала наилучшую положительную рентабельность инвестиций. Я считаю, что это частично, потому что доступно гораздо больше данных о ценах и объемах - эти параметры не пострадали из-за сбоев моей системы за последние несколько недель.

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

Некоторое время назад один из наших читателей предложил мне взглянуть на индекс DEMA (Double Exponential Moving Average). Поэтому я подумал об использовании более простого индекса, такого как SMA (простая скользящая средняя), и использовал эту формулу для моих данных обучения. Таким образом, вместо обучения нейронной сети с использованием абсолютных значений я бы сначала преобразовал ее в значения скользящего среднего.

Перед тем как это сделать, я обновил «общую схему». По сути, я удалил концепцию «линий тренда» и заменил ее на SMA. Я быстро понял, что моя концепция линии тренда на самом деле является «сломанной» версией самой SMA, поэтому SMA лучше и точнее.

* Я еще не обновлял ответы на часто задаваемые вопросы на своем веб-сайте, но скоро сделаю это.

На этом небольшом GIF-изображении вы можете увидеть, что происходит с графиком SMA (цены), когда я изменяю «размер SMA» со значения 1 на 20:

Она очень похожа на старую линию тренда, за исключением того, что она не ломается резко - вместо этого линии плавные по всему диапазону. Обратите внимание, что первые # ’size’ точек данных отсутствуют, это не ошибка, а просто принцип работы расчета SMA.

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

* (Обратите внимание на выбранный размер SMA)
** если вы видите разрыв на графиках ниже, это означает, что произошел сбой.

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

Выше показан SMA анализа настроений новостных каналов. Большинство значений на приведенном выше графике отрицательные, что означает общее негативное настроение. Однако абсолютные значения имеют меньшее значение, чем то, увеличивается / уменьшается значение → мы видим, что есть больше положительности, когда цена растет, и отрицательности, когда цена низкая. Эти настроения действительно влияют на цену (и / или наоборот). Это также подтверждает, что мой базовый алгоритм анализа настроений в некоторой степени работает довольно хорошо :).

Выше показан SMA анализа настроений из социальных каналов (Facebook, Twitter и Reddit). Он очень похож на SMA цены, а также на предыдущий SMA упоминаний новостей, но с менее драматическими изменениями / пиками. Так что это еще один хороший индикатор для прогнозов.

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

Давайте теперь возьмем SMA настроений новостей и SMA упоминаний новостей. Похоже, что упоминания являются противоположностью настроений, что в некотором роде имеет смысл. Когда цена падает, СМИ более активно обсуждают обсуждаемую тему.

Выше описан тот же сценарий, но теперь для социальных каналов - опять же, аналогичный обратный паттерн.

Выше вы видите «дельта» торгуемого объема (24 часа). Если вы какое-то время торгуете, то неудивительно, когда я объясняю, что объем увеличивается, когда цена падает → люди, которые боятся, начинают продавать, но умные начинают покупать, а затем продают с прибылью, когда цена достигает нового уровня. высокий.

Возможно, вы видели, что на общем графике есть два типа меток объема (24 часа). Первый - это «дельта», производная от обычного «volume24h». «Дельта объема24h» рассчитывается путем вычитания объема24h в интервале (t-1) из (t). Этот график показывает, что «дельта» кажется очень синхронизированной с ценой, в то время как обычная дельта отстает от цены. Я думаю, что это весьма прискорбно, потому что большинство торговых платформ (и их API) показывают только обычные данные объема за 24 часа, поэтому люди в конечном итоге получают объем торгов, который не очень полезен для «моментальных решений».

Выше показано, как некоторые пики объема торгов по дельте SMA за 24 часа похожи на пики в новостях и в социальных сетях.

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

Делаем прогнозы (продолжение)

Эти новые идеи, благодаря SMA, позволили мне делать более точные прогнозы. После многих часов настройки параметров, тестирования и исправления ошибок я получил хорошие результаты.

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

В приведенных ниже результатах я уменьшил количество сгенерированных прогнозов до 4 интервалов (ранее я использовал 12 интервалов, а в живой версии он показывает 20 интервалов). Я уменьшил этот диапазон в надежде получить лучшие результаты от моей суперпростой стратегии тестирования на исторических данных.

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

Ниже приведены мои новые результаты, полученные за последние 3-4 часа.

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

Ниже вы увидите, что типы объектов теперь называются «meany…» - потому что они используют преобразованные данные с помощью алгоритма SMA.

По мере того, как я проводил больше тестов, я также добавлял новые «многие» типы:

2018–02–02 → 2018–02–03
meany2: 9.1556

2018–02–02 → 2018–02–03
meany2: -7.6578

2018–02–02 → 2018–02–03
meany2: 0.5394

2018–02–02 → 2018–02–03
meany5: 0.1558
meany4: 3.4121
meany2: -6.8053
meany3: -6.1363
meany6: 8.9165

2018–02–02 → 2018–02–03
meany4: 3.9447
meany7: 5.5848
meany5: 5.6072
meany2: 0.6073
meany6: 3.1642
meany8: 4.4083
meany3: -4.5343

2018–02–02 → 2018–02–03
meany4: -8.0492
meany7: 1.7473
meany6: 3.6045
meany5: 4.5571
meany8: 6.8426
meany2: 7.5231
meany3: -3.0823

2018–02–02 → 2018–02–03
meany11: 5.1921
meany7: 1.0555
meany10: 2.5474
meany9: 7.3625
meany4: 0.6746
meany3: 4.8770
meany8: 0.3525
meany2: 5.9148
meany5: 4.9839
meany6: 3.5062

2018–02–02 → 2018–02–03
meany3: 2.5553
meany2: 1.3146
meany8: -0.6510
meany9: 1.6654
meany5: 5.6072
meany10: 3.1642
meany6: 1.7778
meany7: 8.9358
meany11: 5.7275
meany4: 1.1266

2018–02–02 → 2018–02–03
meany3: 2.5553
meany2: 1.3146
meany7: 8.9358
meany11: 5.7275
meany6: 1.7778
meany10: 3.1642
meany8: -0.6510
meany4: 1.1266
meany5: 5.6072
meany9: 1.6654

Средняя рентабельность инвестиций для всех этих результатов составляет 2,5465%.

В то время как средний ROI нашего первоначального результата (с традиционными типами функций) составил: -8,2110%.

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

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

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

Всем спокойной ночи :)
- Илья Неволин