Pull to refresh

Comments 24

Отличная работа, спасибо, очень интересно.
Спасибо. Думаю, часть про международные резервы надо будет подробнее рассмотреть.

Обязательно. Как минимум — обдумать/исследовать тот факт, что визуально график резервов сдвинут вправо по отношению к графику курса, т.е., очевидно, резервы определяются курсом, а не наоборот.

и курс лучше брать наш, или с биржи какой-то фиксинг или ЦБшный (только не забыть про суточный лаг),
а то Вы берете курс с банка Англии который непонятно как определяется (и не бьется ни с одним нашим фиксингом, ни с курсом ЦБ), и сравниваете с нефтью или нашими резервами.
R крут. Сначала думал спросить как с с.д.у. в R, но глядя на R2 = 0.98, я думаю наверное бы и не стал искать добра от добра. 0.98 (страшно подумать же) видимо значит что подавляющее большинство сделок в абсолютном выражении у нас нефтяные, поскольку интервенции ЦБ — это не продуктовые сделки (и двух переменных достаточно для объяснения).
Что интересно, такой явной зависимости курса от, например, уровня инфляции или процентной ставки нет, хотя макроэкономическая наука на это намекает. Есть еще интересные графики по прямым иностранным инвестициям, но я сходу не нашел подробных открытых данных на эту тему.
Курс балансирует платежный баланс, поэтому и такая явная зависимость от курса нефти, которая вносит значительный вклад в счет текущих операций.
Инфляция и процентная ставка конечно могут как-то влиять, но однозначных зависимостей там нет априори. Прямые иностранные инвестиции, и еще много чего, есть на сайте Банка России и/или Росстата.
На сайте ЦБ РФ таблицы по тем же инвестициям поквартальные. Если брать в разрезе последних 3-4 лет, то совсем мало данных выходит.
Да, подавляющее большинство таких данных квартальные, но платежный баланс есть и помесячный, и инвестиции можно вытащить оттуда — сальдо финансового счета.
В качестве «посмотреть на данные» такой подход имеет место быть (особенно, если не нужны доверительные интервалы). Выше я написал что предпосылки к OLS в таком случае нарушаются, но все же линейное отношение между величинами сохраняется.
В чем именно сложность? Например, для первой строчки из вашей таблицы курс доллара будет такой:
1/(-0.008712954+0.000145824*52.83+0.000000046*397334)
[1] 57.90961

Если верить cbr.ru, официальная стоимость доллара на 01.03.2017 57.96 руб.

Добрый день. В ссылках на инвестинг(brent) — вы используете цену открытия:
Март '16 39,60 36,60 42,54 35,95
В ценах с cbr.ru (usd/rub) — используете цену закрытия(месяца)
31.03.2016 1 67,6076
К резервам есть пояснение — "Ежемесячные значения на начало отчетной даты" => это тоже — цена открытия.

да и еще в итоге все подставляется в формулу для совершенного других зависимостей.
У автора:
спот нефти
курс с Англии
резервы с quandle

А здесь:
фьючерс нефти
курс ЦБ, который с суточным лагом
резервы с сайта ЦБ.

Так что какую-то общую оценку такой пример, конечно покажет, но смещенную и несостоятельную.

Модель и ее использование должно быть самосогласованное, если модель была на инструментах с ценами с quandl, то и моделировать надо на тех же принципах: спот, Англия, и внимательно смотреть на даты, начало, конец дня, месяца и прочее.
Да, спасибо. Я ошибся в параметре 0.000000046. Курсы брал на конец месяца, то что в первой колонке стоит первое число — тоже ошибка.
Спасибо за любопытную статью. У меня, однако, есть ряд комментариев.

Я был бы осторожней с интерпретацией результатов статистических гипотез. Фраза «RESET-тест Рамсея подтверждает, что в этой регрессии нет пропущенных переменных» вообще-то неверна. «не отвергать» гипотезу и «подтверждать» это таки разные вещи… К тому же тест Рамсея не является истиной в последней инстанции. То есть, если вы гипотезу в этом тесте не смогли отклонить, это не значит, что пропущенных переменных нет.

Но, как мне кажется, более важный вопрос здесь — это с какой целью строится модель. Анализ параметров? Прогнозирование курса? Просто поиграться? Ещё что-нибудь? В зависимости от цели, будут и разные акценты на том, что использовать, чему отдавать предпочтение и чего добиваться. Так какова же цель? :)

И последнее, вы же сами говорите о том, что R2 — это достаточно формальная величина. Зачем тогда приводите его в самом конце? К тому же, сравнивать две регрессии по R2 — моветон :). Можно, сравнить по AIC или F-тест провести… На худой конец сравнить по R2-Adj.
Насчет RESET-теста согласен. А модели на самом деле я сравнивал по AIC и loglik, просто R2 в контексте линейной регрессии понятнее, ну и почему-то его любят разные аналитики из финансовой сферы. И в статье приведен R2adj.
Сравнение
fit_1 <- gls(rub.h ~ oil.h, method="ML")
fit_2 <- update(fit_1, rub.h ~ res.h + oil.h)
anova(fit_1, fit_2)
      Model df       AIC       BIC   logLik   Test  L.Ratio p-value
fit_1     1  3 -542.0719 -536.1050 274.0360                        
fit_2     2  4 -583.3291 -575.3731 295.6645 1 vs 2 43.25711  <.0001

R2 любят потому что его относительно легко интерпретировать, но это приводит к различным проблемам и ошибкам (типичная — "чем выше R2, тем лучше моя модель", без относительно того, какова цель модели). Как мне кажется, опускаться до уровня "разных аналитиков из финансовой сферы" не стоит :).


За сравнение респект!

R2 любят еще и потому, что он хоть что-то объясняет — в отличие от сферического AIC. Но выбирать надо по CV/AIC/BIC или хотя бы LogLik.

R2 легко интерпретировать, но именно из-за этого же его и неправильно используют.
AIC не интерпретируем, но пользу в моделировании несёт большую.
LogLik для выбора моделей использовать нельзя, из-за того, что он смещён. Все эти информационные критерии как раз нужны для того, чтобы скорректировать это смещение.

При попытках повторить, то, что описывает автор, столкнулся с такими проблемами:
В строке rub=as.vector(window(rub.ts, start=tr.s, end=tr.e))
не определена переменная rub.ts. При попытке достать её из Quandl выяснилось следующее.
В библиотеке есть поисковый запрос, если в него подставить данные из usd.ts <-Quandl(«BOE/XUDLBK69», trim_start=«2005-04-03», trim_end=«2017-03-10», type=«zoo», collapse=«weekly»)
то
results < — Quandl.search(query=«BOE/XUDLBK69», silent=FALSE)
выдаёт фрейм, в котором BOE это database_core, XUDLBK69 соответственно dataset_code.
Далее в доках по Quandl можно найти rstudio-pubs-static.s3.amazonaws.com/148246_3f1fe14ed57a4bd497ba80420d5b35c1.html строку «For example, we want to get the exchange rate of USD/EUR from January 1st 2013 up to December 1st 2013, using the ID “BNP/USDEUR”. и подставив в поиск USD/EUR, понять, как найти курс USD/RUR.
Оказалось, что эти данные хранятся в database_core = CUR, dataset_code = RUR.
Однако при попытке запросить данные в rub.ts вылезает ошибка Error: {»quandl_error":{«code»:«QEPx05»,«message»:«You have attempted to view a premium database in anonymous mode, i.e., without providing a Quandl key. Please register for a free Quandl account, and then include your API key with your requests.»}}
Поэтому, прежде чем пытаться что-то посчитать в этой статье, сначала зарегистрируйтесь на сайте Quandl, получите ключ и выполните Quandl.auth(«YourQuandlKeyHere»).
Надеюсь сэкономил кому-то несколько минут поисков.
Спасибо за дополнение. Я скопировал свой код из статьи — и все по-прежнему работает без аккаунта на Quandl. Возможно, вы сделали слишком много автоматических запросов, поэтому Quandl и не отдает информацию без авторизации.
Пожалуйста, рад был помочь. Скорее всего Ваш скрипт работает потому, что выборка в rub.ts где-то ещё заранее производится из базы.
У меня такого определения нет, и скрипт на МНК не работает и не может работать в принципе.
В нем используется rub.ts, а в скрипте в «Данные» определены oil.ts и usd.ts, а rub.ts — неизвестная переменная.
Видимо у вас она откуда-то берется ещё, а тут её надо либо переименовать в usd.ts в МНК, либо в rub.ts в «Данные», либо, как я, взять откуда-то ещё.
Sign up to leave a comment.

Articles