# Economica at GitHub

Today I’ve posted my Economica package at GitHub here.

It is fully functional allowing the user to run ARIMA-X13 with various options, estimate VARs and identify SVARs, construct some plot types that are not readily available in standard Mathematica distribution.

Hopefully I will be adding tutorial on its variuos functions soon.

By the way, it has also been added on packagedata – Mathematica package aggregator.

# Economica: Историческая декомпозиция в структурных векторных авторегрессиях (SVAR)

Нервная ситуация на валютном рынке и обилие пресс-релизов Банка России заслонили публикацию нового Доклада о ДКП. Между тем, он опубликован и традиционно содержит немало интересного. И, да – в части аналитических инструментов тоже.
Сегодня хочу обратить внимание на определенный один прием использования SVAR – историческую декомпозицию.
Историческая декомпозиция позволяет понять, каким образом сложился уровень интересующей нас переменной – из вкладов шоков каких переменных, их текущих, так и случившихся в некотором прошлом значений.

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

А мы сегодня используем историческую декомпозицию для идентификации потенциального выпуска.

#### Алгоритм

Некоторые элементы введения в историческую декомпозицию есть в , однако куда более последовательно алгоритм представлен в [3, Algorithm 5]. Для получения итогового результата следует:

1. Выбрать данные и оценить модель \$VAR(p)\$ в приведенной форме.
2. Идентифицировать структурную форму модели \$VAR(p)\$, например, по Холецкому или Бланшару-Куа
3. На основе идентифицированной модели получить матрицы функций отклика \$C in R^{n times n times  tau}\$, где \$tau\$ – количество периодов.
4. Вклад шока  \$i\$ в уровень переменной \$j\$ с учетом функции отклика равен бесконечной (в прошлое) сумме \$tilde{y}_t^{(i,j)}=sum_{i=0}^{infty}(c_i^{ij}epsilon^{j}_{t-i})\$. К сожалению, в нашем распоряжении никогда нет бесконечно набора исторических данных,  и мы вынуждены начинать с некоторого первого периода. Таким образом, в нашей декомпозиции появится конечная сумма \$tilde{y}_t^{(i,j)}=sum_{i=0}^{t-1}(c_i^{ij}epsilon^{j}_{t-i})\$, а вклад начальных условий \$K_t=y_t-tilde{y}_t\$.

#### Пример

Для наглядности предлагаю разобрать пример. Попробуем расчитать альтернативную меру потенциального выпуска, как это сделано в работе . Просьба взглянуть на нее для всех подробностей. Для этого используем набор данных
\$ x_t= begin{bmatrix} Delta y_t \ g_t \ r_t \ end{bmatrix} \$

где \$Delta y_t\$ – прирост реального выпуска, \$g_t\$ – некоторая мера фискального стимулирования (в работе используется размер расходов бюджета по отношению к совокупному выпуску), \$r_t\$ – реальная процентная ставка.

Идентификация модели SVAR проводится с использованием альгоритма Бланшара-Куа, который предполагает отсутствие долгосрочных связей между некоторыми переменными. Так, мы предполагаем, что фискальная политика и денежная политика не имеют долгосрочного влияиния на выпуск, тогда как денежная политика в свою очередь не оказывает долгосрочного влияния на фискальную политику.

Все расчеты в отдельных файлах доступны ниже, а здесь оставлю лишь иллюстрации.

Историческая декомпозиция шоков:

Собственный вклад шоков выпуска интерпретируется как разрыв выпуска. Мы можем сравнить его с оценками традиционного фильтра Ходрика-Прескотта:

Я не буду расписывать детально здесь расчеты, а для любопытсвующих:

1. Расчеты в Wolfram Mathematica: PDF, NB и данные.
2. Необходимый для расчетов пакет Economica.

Предупреждаю, что все расчеты сделаны на скорую руку, а скорая рука делает много ошибок! Найдете – буду рад услышать. 🙂

#### Источники

1. Osborn, D., & Vehbi, T. (2013). Empirical Evidence on Growth Spillovers from China to New Zealand (No. 13/17). New Zealand Treasury. (здесь)
2. Enders, Applied Time Series Analysis, ed. 2, pp 307-310 (своей копией обязан  Гамбарову Г.М.)
3. Ocampo, Sergio, and Norberto Rodríguez. “An Introductory Review of a Structural VAR-X Estimation and Applications.” Revista Colombiana de Estadística 35.3 (2012): 479-508.
4. Du Plessis, S., Smit, B., & Sturzenegger, F. (2008). Identifying Aggregate Supply and Demand Shocks in South Africa. Journal of African Economies,17(5), 765-793.

# Economica: Mathematica с MATLAB-акцентом

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

Так что решил перенести пару функций из MATLAB в Mathematica.

linspace[x,y,n] – дает набор равномерных цифр от x до y размером n. x и y могут быть векторами или матрицами (для чисел отсюда, для векторов и матриц дописал сам):

[wlcode]linspace[x_?NumericQ, y_?NumericQ, n_Integer] := Array[# &, n, {x, y}];
linspace[x_List, y_List, n_Integer] :=
Module[{temp},
If[Dimensions@x != Dimensions@y, Abort[]];
temp = MapThread[linspace[#1, #2, n] &, {x, y}, 1];
temp[Transpose]
];[/wlcode]
Для получения нулевой матрицы можно использовать zeros, для единичной матрицы – eye:
[wlcode]zeros[x : Sequence[Integer__]] := ConstantArray[0, {x}];
eye[x_Integer] := IdentityMatrix[x];[/wlcode]Для того, чтобы избавиться от списков с одним елементом нужно использовать squeeze (отсюда):

[wlcode]squeeze[A_] := ArrayReshape[A, Dimensions[A]~DeleteCases~1][/wlcode]

Все они доступны в Economica.

# Economica: Векторная авторегрессия в Mathematica

Сравнительно недавно (Aruoba&Fernandez-Villaverde, 2014)  провели обзор нескольких популярных языков программирования, более или менее распространенных среди экономистов. Основным критерием перспективности соавторы выбрали скорость выполнения стандартной задачи поиска оптимальной траектории потребления.
Конечно, скорость единственный критерий, которому возможно дать численную оценку в секундах на задачу. Пусть так. При этом быстрота занимает далеко не первые позиции среди факторов выбора инструмента экономистом. Гораздо выше находится наличие встроенной поддержки тех или иных стандартных операций и алгоритмов: можно ли оценить определенную статистическую модель, есть ли встроенная поддрежка решения определенного типа задач.
С этой точки зрения Mathematica находится далеко не в избранном перечне для экономиста. Достаточно сказать, что до настоящего момент пакет не способен проводить такие стандартные операции как оценка векторной авторегрессии и ее структурная идентификация.
Убедиться в этом возможно, попытавшись оценить параметры многомерного AR процесса:
``sample = RandomFunction[ARProcess[{.2,-.4},.1], {1,300}];``
``EstimatedProcess[sample, ARProcess[{a,b},v]](*or*)FindProcessParameters[sample, ARProcess[{a,b},v]``
Вместе с тем, этот пробел не так уж и сложно закрыть. Опираясь на материалы (Cesa-Bianchi, 2014)  я выписал алгоритм для оценки VAR. Он теперь доступен в виде функции VARModelFit в моем сборнике полезных функций Economica
Пример с инструкцией по оценке VAR  и идентификации SVAR на основе подхода Бланшара-Куа здесь.
1. Aruoba, S. Boragan, and Jesús Fernández-Villaverde. “A Comparison of Programming Languages in Economics.” (2014). http://economics.sas.upenn.edu/~jesusfv/comparison_languages.pdf
2. Ambrogio Cesa-Bianchi, 2014. “VAR Toolbox”, sites.google.com/site/ambropo/”.

# Economica: Данные Quandl, сезонное сглаживание и тест Грейнджера

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

Немногое изменилось и сегодня, но в моем запасе теперь несколько советов Леонида Шифрина  и Дэвида Вагнера.
Новость же в том, что сегодня добавлены функции, которые могут быть действительно полезными (в ссылках инструкции по их использованию в pdf):
1. QuandlData – получение данных с сайта Quandl. Если вы зарегистрируетесь и получите собственный токен, то можете использовать с помощью функции QuandlToken
2. Сезонное сглаживание на основе официального алгоритма SeasonalAdjustmentX13 от Бюро переписей США (мой ответ на mma.se на эту тему).
3. Тест Грейнджера для двух рядов GrangerCausalityTest.
Для установки пакета следует распаковать архив в вашей \$UserBaseDirectory. В справке должны появиться страницы, соответствующие функциям пакета.

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