Выводы.
- Перекуплена.
- И похоже это для нее плохо.
- Но это не точно.
А дальше будет простыня текста, но помните, что вывод №3 главный.
А еще п.4: я мог накосорезить в элементарных вещах, код на R в конце, буду благодарен за проверку.
Пара вводных слов в режиме вопрос-ответ:
Прошлые доходности не гарантируют будущих. – Согласен. Гарантий вообще нет. Сжигаем все бектестеры? На основании исторических данных я бы ожидал большей вероятности того или иного сценария. При условии, что за этими данными (наблюдениями) есть какая-то модель. Мы ожидаем, что в будущем доходность акций скорее всего будет выше доходности облигаций. Потому что премия за риск (модель) и исторические данные (бектестеры).
А чем CAPE ну строило? – Оценка одного и того же объекта через метрики разной природы скорее всего точнее. В отличие от CAPE я не использую ни доходность, ни инфляцию. Да и сам Шиллер прекрасно объясняет, почему капе не работает (сейчас? теперь?).
Ты что, открыл грааль? Зачем выкладываешь? – это совсем не грааль, и даже близко неприменимо для спекуляций (на мой взгляд). Не вижу смысла расписывать подробно, но идея использовать найденные закономерности (закономерности ли?) для «торговли» примерна так же глупа, как встать в позицию «шорт облигаций+лонг акций» на основании того, что обычно акции вырастают сильнее облигаций.
Идея посчитать перекупленность той или иной страны (региона, отрасли…) не через CAPE родилась у меня после поста Михаила @Disputy. Оригинальную метрику я решил изменить. Моя метрика:
(цена_USA_сегодня/цена_USA_n-месяцев-назад)/( цена_ WORLDexUSA _сегодня/цена_WORLDexUSA_n-месяцев-назад).
Цена здесь - значение индекса total return.
И такое на скользящем окне. Идея посмотреть как соотношение доходностей в прошлом влияло на соотношение доходностей в будущем. А то разговоров вокруг «как брать такую дорогую Америку?», «Пузырь не виден, пока не лопнул», «Деревья не растут до небес» и т.д... Хочется чего-то более-менее численного.
По сути, просто на исторических данных пытаюсь выяснить, существует (существовала ли, если точнее) ли регрессия к среднему или нет. Вот только средним мы будем считать не традиционные 5% сверх инфляции, а доходность всего мира (акции) за период. Почему вообще должна наблюдатся регрессия к среднему я для себя строго не формулировал, думаю рассуждению будут примерно как тут
И, да, никакого фундаментала, тупо «трейдинг на безумно больших таймфремах» (с) Силаев.
Источник данных https://www.msci.com/end-of-day-data-search, тип индекса Gross. Пока сравнивал World_ex_USA (из раздела DM), и USA. Данные доступны с 1970 года, на них и считаю. Потом может сделаю по развивающимся, но там короткая история.
Метрику в дальнейшем буду называть r.rise (relative rise). n.past- количество месяцев истории для расчёта метрики (фактически это моментум)). Будущая доходность рассчитывал тоже на окне n.future- количество месяцев, через которое будем смотреть относительную доходность. r.rise- относительный рост. Он показывает во сколько раз лучше или хуже вложение в Америку по сравнению со всем миром без Америки. Если 1 – то все равно. Больше 1 – кто вложился в Амерку- выиграл. Если меньше единицы – наоборот. Внимание! Положительный или отрицательный результат будущих инвестиций не оценивался. То есть если США упали на 20%, а мир-без-сша на 25% то r.rise=0.8/0.75=1.067 (то есть США потеряли наших денег меньше, чем альтернативные вложения)
Разумные (на мой взгляд) окна
n.past_n.future (Почему так). Длинна окон в месяцах.
180_60 (Что-то штаты 15 лет перформят, как сейчас. Чего ждать через 5 лет?)
120_36 (10 лет в прошлое, 3 года в будущее- срок меньше минимального для акций, но пусть будет)
60_60 и 36_36 (Все данные старше 5 лет не актуальны, а если данных меньше 3 лет- их мало. (житейская мудрость аналитиков))
36_12 (Кое-кто желал таймить, срок поставил себе в 1 год 😉)
180_12 (Максимальная разумная история, ребаланс раз в год).
180_60
(т.е. 15 лет истории, ожидаемый результат через 5 лет)
Распределение относительной доходности. Зрительно достаточно периодов, когда США проигрывали «миру» (т.е. значение менее 1)
Я проверил два способа порезать на карманы: с равным количеством наблюдений внутри кармана
И на карманы равной ширины с сильно переменным количеством измерений внутри кармана
Буду использовать первый способ, т.к. в нем лучше видна «переходная зона». Во всех случаях красной заливкой выделен карман, куда попадает текущее значение r.rise.
Поясню, это violin_plot, огибающая кривая- симметрично отраженная плотность вероятности получения значения r.rise.future, горизонтальные прямые внутри – медиана и квартили. Обратите внимание на группу в кармане NA- это значения относительно роста, для которых нет предыдущей истории.
Ещё про виолины. По оси x карманы, в которые попадает значение r.rise на конец периода n.past. Пусть условное "сейчас" как раз находится в конце периода n.past. По оси y значения (разброс значений) r.rise которое будет получено по прошествии периода n.future от условного "сейчас". Удаление огибающей от вертикальной оси виолина-вероятность получения конкретного значения с оси y.
Кому ящик с усами привычнее, вот, для сравнения.
Но может быть рост за период был аномально сильным? То есть, возможно, когда Штаты растут лучше мира, но в целом рост не взрывной- то это ок, а когда «взлет ракеты» то это пузырь? Цветом обозначим рост Штатов за период n.past, вертикальная черта- значение r.rise в мае 2021, текущее значение роста США 4,63 (за последние 15 лет!) и это совсем не рекорд. Зрительно абсолютный рост слегка коррелирует с последующей относительной доходностью.
Предыдущая доходность влияет: «чем хуже было, тем лучше будет».
Ладно, но наши окна нельзя считать независимыми, они идут одно за другим. Попробуем посмотреть последовательность результатов. Цветом от синего к красному обозначена хронология. Сначала строил только точками, но со стрелочками оказалось нагляднее, проще понять направление движения «во времени»
Конец графика это 2016-05-31. Дальше этого срока будущих пятилетних доходностей естественно нет. Верхний график: ось x – относительная доходность США/Мир в конце 15 летнего периода (r.rise); ось y – относительная доходность спустя 5 лет (r.rise.future) Нижний график – наши дни. По оси x тот же r.rise, по оси y -случайные значение, чтобы линия не сливалась в одну горизонтальную черту. Мы же не знаем r.rise.future для текущего момента. Где-то в этот момент я подумал, что переизобретаю велосипед. Или что-то идеологически похожее. Ну, как минимум, видно, что история до 1990 года- уже история.
Вообще, самый неоднозначный график. Видно, что США могли быть достаточно долго хуже мира, и в прошлом и в будущем. И с позицией "лучше мира"- так же. Пока это позиция не "сильно лучше". А вот с таким диким опережением, как сейчас, данных мало.
Есть еще возражения против полученных результатов, приведу их в конце. А пока посмотрим другие окна.
Окна 120_36
Все так же апокалиптично, с ростом r.rise Америка становится все более неуютной. Обратите внимание, как иногда врет медиана. Медиана то около 1 (нет особого преимущества ни у мира ни у США), а вот максимум вероятности лежит совсем не на ней (а еще есть бимодальное распределение)
Диаграмма рассеивания.
Шанс, что США будут лучше мира через 3 года есть, но невелик, при текущих значениях r.rise (черная черта, как и везде далее). Последний usa.rise на этих окнах 3.8 (т.е. индекс США вырос в 3.8 раза в 10 летний период для которого есть данные о будущих доходностях, в данном случае с 2008-05-31 по 2018-05-31), а перформанс США был при usa.rise ближе к 6.
Видимо я устал смотреть на график пути. Нет однозначных интерпретаций. Разве что далекая история оказалась ближе.
Окно 60_60
Текущее значение 1,36 на этих окнах- в целом позитивно. И на виолинах (ниже), формально все хорошо. Вот только положение медианы ведет себя не монотонно. Изменение r.rise о 0,5 к 1,2 снижает медиану (и соответственно ожидаемую доходность). А потом скачком происходит рост ожидаемой доходности. Возможно- неудачное сочетание окон.
Из диаграммы рассеивания может показаться, что точки легли на 2 «логарифмические» кривые, и хочется сказать – ну вот, две истории, старая и новая. Из диаграммы пути видно, что, как минимум по времени разнести так точки нельзя.
Окна 36_36 и 36_12
Не показали каких-либо заметных корреляций, и графики по ним я удалил при обновлении поста - зачем захламлять экран?
Нет даже намека на возможность каких-либо прогнозов. Что, вобщем-то логично: акции и горизонт короткий, и история.
Ну и 180_12
Текущее значение r.rise 2.20. Ну так… в истории было пара случаев, когда при такой метрике Штаты перформили мир в следующий год… но я бы не рассчитывал. И опять этот скачек доходности (ее медианы) на 1.12…
Выкинул данные до 1993 года
)
Итак, снова выводы и оговорки
- И на больших временах, и на коротких легкое превышение относительной доходности США скорее хорошо, чем плохо. Сейчас – совсем не легкое.
- Мир в данном случае DMexUSA. Ну такое, не самое релевантное для сегодняшнего дня. Надо бы сделать в сравнении с развивающимися, но для них история короткая.
- На длинных окнах мы теряем много данных, и, хоть все корреляции «на глазок» выглядят лучше, они получены на меньшей выборке. На коротких окнах пропадают корреляции.
- Соотношением окон можно получить разнообразные результаты. Какие бы окна разумно посмотреть?
- Лично у меня появилось желание подрезать долю Америки (у меня перевес), хотя начинал считать с намереньем подтвердить (себе в первую очередь), что опережающий рост США не является индикатором ничего плохого. И в любом случае, это все не является инвестиционной рекомендацией.
*И главный вопрос: на сколько такой подходы выглядит адекватным?*
Надеюсь теперь подписи по осям читаются.
Код
library(ggplot2)
library(dplyr)
library(data.table)
library(lubridate)
r.mom <- function(dt, n.past, n.future, n4positive=12,n.cut) {
setorder(dt, date)
dt[,world.rise:=(world/shift(world, n=n.past))]
dt[,usa.rise:=(usa/shift(usa, n=n.past))]
dt[,r.rise:=usa.rise/world.rise]
dt[,r.rise.future:=(shift(usa, -n.future)/usa) / (shift(world, -n.future)/world)]
dt[,r.rise.cut:=cut_number (r.rise, n.cut )]
dt[,r.rise.cut.interval:=cut_interval (r.rise, n.cut )]
dt[,last.per:=fifelse(usa/shift(usa, n=n4positive)>1,T,F)]
dt[,future.positive:=fifelse(shift(usa, -n4positive)/usa>1, T,F)]
return(dt)
}
dt <- r.mom(dt, n.past=36, n.future=12, n.cut=10 )
ggplot(dt)+
geom_density( aes(x=dt[,r.rise]))+
theme_minimal()
ggplot(dt[,], aes(x=r.rise.cut.interval, y=r.rise.future))+ #, col=future.positive
geom_violin( scale="width",draw_quantiles=c(0.25,0.5,0.75))+
theme_minimal()+
scale_y_continuous(breaks = c(0.5, 075, 1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4))+
theme(axis.text.x = element_text(angle=45))+
geom_hline( aes(yintercept=1 ), col="red" )
ggplot(dt[,], aes(x=r.rise.cut, y=r.rise.future))+ #, col=future.positive
geom_violin( scale="width",draw_quantiles=c(0.25,0.5,0.75))+
theme_minimal()+
scale_y_continuous(breaks = c(0.5, 075, 1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4))+
theme(axis.text.x = element_text(angle=45))+
geom_hline( aes(yintercept=1 ), col="red" )
ggplot(dt[,], aes(x=r.rise.cut.interval, y=r.rise.future))+ #, col=future.positive
geom_boxplot( scale="count")+
theme_minimal()+
theme(axis.text.x = element_text(angle=45))+
geom_hline( aes(yintercept=1 ), col="red" )
ggplot(dt[,])+
geom_point(aes(x=r.rise, y=r.rise.future, col=usa.rise ),size=4)+ #, shape=future.positive
geom_vline( aes(xintercept=last(dt[,r.rise]) ) )+
geom_point(aes(x=last(dt[,r.rise]), y=1, size=last(dt[,usa.rise])), col="white" )+
theme_minimal()
tmp <- na.omit(dt)
tmp2 <- dt[is.na(world.rise)==F & is.na(r.rise.future)==T,]
tmp2[,r.rise.future:=rnorm(nrow(tmp2),mean=0,sd=0.1)]
breaks <- c(tmp[1,date],
tmp[floor(nrow(tmp)/4), date],
tmp[floor(nrow(tmp)/2), date],
tmp[floor(3*nrow(tmp)/4), date],
tmp[nrow(tmp), date] )
ggplot(tmp[,])+
theme_minimal()+
geom_path(aes(x=r.rise, y=r.rise.future, col=date ),
arrow = arrow(angle = 9, length=unit(4, "mm"), type = "closed"))+
geom_path(data=tmp2, aes(x=r.rise, y= r.rise.future, col=date),
arrow = arrow(angle = 7, length=unit(3, "mm"), type = "closed"))+
geom_vline( aes(xintercept=last(dt[,r.rise]) ) )+
geom_point(aes(x=last(dt[,r.rise]), y=1 ), col="white" )+
scale_colour_gradientn(colours = c('blue','green','red'), labels=breaks)
Из текста я не понял, какой период анализируется. На мой взгляд, это ключевой вопрос: можно взять 10 000 дневных точек данных; но если это по факту промежуток, где США/мир раза три поменяли взаимный тренд - то, в каком-то смысле, мы анализируем выборку размером в три наблюдения. Насколько это можно экстраполировать на будущее - ну, не знаю.
Графики, если честно, совершенно не читаются - чтобы понять, что конкретно изображено, требуются весьма большие усилия. Может быть, так задумано. =)
Для меня такой подход не выглядит как что-то, что я бы захотел инкорпорировать в свою систему принятия решений.
Как всегда проблемы в количестве данных.
Поэтому особенно не понял причины отрезать данные с 1970 в некоторых сценариях.
Типа рынок поменялся?
К сожалению картинки ужались, на них чисел не видно, и поэтому выводы 1 и 2 не очень очевидны из статьи.
😱 Комментарий удален его автором...
Картинки поправлю, абзацы отбил пустой строкой, а какие ещё проблемы? Что поправить?
Код скрипта под спойлер почему-то убрать не получается, если что.