Tipo de Cambio Real de Alta Frecuencia (TCR-AF)

¿Cómo los precios de alta frecuencia pueden mejorar las estimaciones de tipo de cambio real?

En esta publicación se introduce una metodología alternativa para calcular un índice de tipo de cambio real para alcanzar un mayor nivel de precisión y potencialmente resolver problemas relacionados a la elección de la canasta de bienes, la incorporación de factores que afectan al tipo de cambio real efectivo (impuestos, subsidios y tipos de cambio diferenciales), y otras complicaciones que supone el cálculo basado en proyecciones actualmente utilizado por el BCRA.

Tipo de Cambio Real

Al igual que otros bancos centrales del mundo, el BCRA publica periódicamente estimaciones del tipo de cambio real prevaleciente en una economía, una medida amplia de competitividad de tipo precio. El tipo de cambio real (TCR) mide el precio relativo de los bienes y servicios de una economía con respecto al de otra economía (o varias economías). En fórmula:

R=E×PPR=\frac{E\times P^*}{P}

donde R es el TCR Bilateral entre la economía doméstica y una economía extranjera, E es el tipo de cambio nominal (definido como la cantidad de unidades de moneda local que se deben sacrificar para obtener una unidad de moneda extranjera), P es el precio en moneda extranjera* de una canasta de bienes y servicios en la economía extranjera, y P es el precio de una canasta equivalente en la economía doméstica, expresada en la moneda local.

En el caso particular del BCRA, se disponibiliza diariamente el Índice de Tipo de Cambio Real Multilateral, que consiste en un promedio ponderado de los tipos de cambio reales bilaterales de los principales socios comerciales del país (incluye países de Latinoamérica, Estados Unidos, Canadá, la zona del Euro (considerada como bloque), y algunos países asiáticos.

Con la definicion de TCR en mente, ¿cómo hace el BCRA para disponer de una medida diaria y en tiempo real de estos índices bilaterales? Implicaría tener una estimación diaria de los precios tanto en la economía local como en la extranjera, y también del tipo de cambio nominal.

Dado que el tipo de cambio nominal es un precio de mercado, fácilmente observable, obtener su valor no representa una dificultad particular. Sin embargo, por el lado de los precios de las canastas de bienes y servicios, los institutos de estadísticas oficiales que miden los precios de las canastas publican esta información con una frecuencia mensual; por este motivo, el BCRA debe recurrir a métodos de estimación adicionales para convertir la información disponible (índices de precios mensuales y rezagados) en medidas diarias utilizables.

¿Cómo lo hace el BCRA?

El BCRA utiliza como canastas aquellas que se utilizan para medir la inflación (IPC en Argentina, CPI en Estados Unidos, etc.).

Para tener una estimación diaria del precio de las canastas en los países considerados, el BCRA recurre a la siguiente fórmula:

IPCt=IPCt1×[1+ΔIPC100]1/dIPC_t = IPC_{t-1} \times[1+\frac{\Delta IPC}{100}]^{1/d},

donde IPCtIPC_t es el precio de la canasta en el día tt, ΔIPC\Delta IPC es la variación esperada del IPC para el mes, y dd es la cantidad de días corridos entre los cuales se reparte la variación mensual.

Dificultades para calcular el TCR

  1. No se sabe el precio de las canastas hasta uno o dos meses después: el BCRA recurre a la mediana de la estimación de inflación del Relevamiento de Expectativas del Mercado (REM) para usar como inflación del mes corriente.

  2. La estimación es mensual, no diaria: se supone que la variación de precios se da de manera uniforme a lo largo del mes, acumulando todos los días una fracción de la variación, hasta llegar al valor mensual del IPC el último día del mes (similar al interés compuesto).

Potenciales problemas con estas soluciones

  1. La elección de canastas: el espíritu del TCR es medir la competitividad a nivel externo, por lo que la elección de usar las canasta del IPC / CPI puede no ser óptima: ¿todos los bienes y servicios transables relevantes son considerados en el IPC? ¿Todos los bienes y servicios del IPC son transables? ¿Qué pasa con los diferentes patrones de consumo en las distintas economías?
  2. Estimaciones de inflación: las proyecciones de mercado de la inflación pueden no ser tan exactas, particularmente en países con alta inestabilidad de precios, como Argentina.
  3. Dinámica de precios intramensual: la distribución diaria de la variación de los precios de manera uniforme es un supuesto un tanto naive, justificado por su simplicidad metodológica, y si los datos van a ser publicados de forma diaria, entonces alcanzar un nivel alto de presición es relevante.
  4. Nivel de agregación: relacionado al punto 1, dejando de lado la elección de la canasta de bienes y servicios, el agregar todos en una canasta cuesta presición en la competitividad que presenta cada rubro de la economía: por ejemplo, si un bien altamente relevante para las exportaciones, pero poco relevante para el consumo interno de las familias, incrementara su precio interno, el IPC no captaría su subida en la magnitud correspondiente, por lo que tampoco lo haría la estimación del TCR. Otro ejemplo es el problema de los impuestos al comercio exterior: para tener una medida del TCR efectivo, se utilizan datos de impuestos y subsidios, o tipos de cambio nominales diferenciados, dificiles de incorporar a una canasta agregada.

Precios de alta frecuencia

Es en estos puntos donde la utilización de mediciones de precios de alta frecuencia se vuelve relevante, ya que tiene el potencial de resolver algunas de estas complicaciones.

¿Qué son los precios de alta frecuencia?

A la hora de medir inflación, cada vez es más usual entre institutos y consultoras recurrir al relevamiento online de precios para tener medidas en tiempo real de los precios. Dado el bajo costo que implica obtener estos precios, las mediciones pueden hacerse de manera diaria e incluyendo cientos de miles de productos, dotando de una alta precisión a las estimaciones de inflación.

¿Cómo pueden ayudar a resolver los problemas mencionados?

Utilizar mediciones de precios de alta frecuencia propone ciertas ventajas frente a la actual metodología del BCRA:

  1. Permite tanto reemplazar las proyecciones de inflación mensual, como también prescindir de supuestos de comportamientos intramensuales de precios, utilizando en su lugar mediciones en tiempo real.
  2. Permite cambiar los bienes y servicios para resolver los problemas que supone usar el IPC, y también permite tener la información a un nivel más desagregado, potencialmente llevando a una mejor incorporación de factores adicionales como impuestos, subsidios, y tipos de cambios diferenciales.

Ejemplo: TCR Bilateral de Alta Frecuencia entre Argentina y Estados Unidos

A modo de ejemplo de lo que se puede lograr incorporando los precios de alta frecuencia, se calculó la serie histórica del Tipo de Cambio Real Bilateral de Alta Frecuencia entre Argentina y Estados Unidos.

Este ejemplo no contempla todas las soluciones que propone la incorporación de precios de alta frecuencia, pero sirve como un primer paso para hacerlo.

Cálculo

Todo el proceso se realizó con Python, aprovechando las comodidades que ofrece Alphacast para la utilización de datasets. El código con comentarios se encuentra al final de este insight.

  1. Para la estimación de precios de Argentina, se utilizó la serie provista por la consultora SEIDO en Alphacast, en el repositorio "SEIDO High Frequency CPI". La consultora mide regularmente los precios en Argentina para tener una estimación precisa de la inflación en tiempo real: los datos tienen una frecuencia semanal, y considera una canasta similar a la del IPC de INDEC. Dado que es mi intención mostrar el índice vis a vis con el del BCRA, se optó por convertir las series a datos diarios, recurriendo a un método de interpolación segmentaria (splines). Si bien interpolar las series no es lo óptimo, ya que supone necesariamente alguna suposición sobre el comportamiento intramensual de los precios, en este caso interpolar series de frecuencia semanal resulta menos rígido que interpolar series mensuales. En cuanto a la canasta elegida, se eligió la medida por SEIDO para estimar la inflación general (nuevamente, se eligió esta canasta para poder compararlo con el índice del BCRA, pero se puede cambiar fácilmente ya que los datos están disponibles en el dataset de SEIDO). En el siguiente gráfico se muestra una comparación entre las mediciones de precios de alta frecuencia vs. las mediciones mensuales de inflación del INDEC.
  1. Para la estimación de precios de Estados Unidos, dado que no cuento con una serie de precios de alta frecuencia, se recurrió a la serie de inflación mensual de Bureau of Labor Statistics y se la transformó en datos diarios con el mismo método de interpolación segmentaria, similar a lo que hace el BCRA.

  2. Para el tipo de cambio nominal, se utilizó el dólar oficial (sin impuestos) publicado en el repositorio "Argentina - BCRA" de Alphacast. Difiere en este punto con el tipo de cambio mayorista utilizado por el BCRA, y se debe a la disponibilidad de datos, aunque no supone mayores problemas ya que es esperable que ambos tipos de cambio sigan una dinámica similar, y el TCR se presenta en números índices, no absolutos.

  3. Para calcular el TCR de Alta Frecuencia se relativizó el precio en ARS de la canasta de Estados Unidos al precio de la canasta de Argentina, y se presenta en números índices con base 04-03-2013=100 (se le hizo la misma transformación al ITCRB del BCRA).

La serie alternativa difiere de la original en la medida que los precios de alta frecuencia sean diferentes a las proyecciones del BCRA, y proporcionará mayor precisión mientras mejor sea la medición de los precios de alta frecuencia. Se puede observar períodos en los que la divergencia entre las series es mayor, como en 2015 hasta la devaluación de diciembre, parte del 2016, y hacia mediados de 2020. Además, dota a la estimación de una mayor precisión en los movimientos intramensuales, objetivo importante cuando se publican estimaciones con frecuencias menores al mes.

Adicionalmente, es de esperar que las mayores ganancias de utilizar este índice se vean en los últimos meses de la serie, ya que en ellos se utilizan proyecciones de mercado para la inflación en lugar de mediciones de precios. Lamentablemente, al momento de publicar esto no cuento con series de precios de alta frecuencia de Estados Unidos, por lo que no puedo utilizar esta metodología para estimar la serie en el mes de junio (si alguien tiene alguna y está interesado en colaborar, le invito a que me escriba a zayatalex@gmail.com).

Próximos pasos

Esta publicación pretende tan solo ser el punto de partida para nuevas y más sofisticadas estimaciones del Tipo de Cambio Real. Para empezar, se podría:

  1. Incluir otras economías para extender el índice hacia uno de caracter multilateral.
  2. Incorporando precios de alta frecuencia de economías extranjeras para ganar precisión.
  3. Utilizar una canasta específicamente elegida para medir competitividad externa, y desagregar por productos.
  4. Incorporar los tipos de cambio relevantes (oficial, oficial con impuestos, minorista, mayorista, dólar CCL, "blue", etc.), ya sea en un índice que discrimina por sector, o en un índice agregado, ponderando cada tipo de cambio según el peso que tenga el sector en el cual prevalece.
  5. Incorporando factores que afectan a los precios observados (impuestos, subsidios, etc.).

¿Sirve esta metodología alternativa?

Esta pregunta aún resta responderla. Un camino posible para medir las ganancias de utilizar esta metodología en lugar del presentado por el BCRA es incluir el índice alternativo en un modelo de comercio exterior y compararlo con el mismo modelo utilizando el índice original.

Código de Python

import requests
from datetime import datetime as dt
from requests.auth import HTTPBasicAuth
import pandas as pd

# se setea la clave provista por Alphacast. Se oculta la mía
user_key = 'ak_********'

# se descarga el dataset de High Frequency CPI - Argentina, de Seido
res_cpi_ar = requests.get('https://charts.alphacast.io/api/datasets/5225.csv', auth=HTTPBasicAuth(user_key,''))

# se guardan los datos en un .csv
open('hfcpi.csv', 'wb').write(res_cpi_ar.content)

# se abre el csv, y nos quedamos solo con la serie Headline, particularmente las columnas Year e Index
cpi_ar = pd.read_csv('hfcpi.csv')
cpi_ar = cpi_ar[cpi_ar['Entity'] == 'Headline']
cpi_ar = cpi_ar[['Year','Index']]
# se renombran las columnas por comodidad
cpi_ar = cpi_ar.rename({'Year':'Date'}, axis='columns')
cpi_ar = cpi_ar.rename({'Index':'CPI_ar'}, axis='columns')
# se convierte la columna Date de Str a DateTime para trabajar con fechas
cpi_ar['Date'] = cpi_ar['Date'].apply(lambda x: pd.to_datetime(x))
# se define Date como índice del DataFrame y se elimina la columna original ya que se duplica
cpi_ar = cpi_ar.set_index(cpi_ar['Date'])
cpi_ar = cpi_ar[['CPI_ar']]
# se transforma la serie semanal en una serie diaria utilizando una interpolación segmentaria (splines)
cpi_ar = cpi_ar.resample('D').interpolate(method='quadratic')

# se abre un .csv de mi computadora con los datos de CPI de Estados Unidos, que en el futuro disponibilizaré
# es mi intención agregar al código un relevamiento automático de la serie, para no recurrir a la descarga manual
cpi_us = pd.read_csv('us cpi.csv', sep=';')
# se renombran columnas y Date se convierte en DateTime con formato YYYY-mm-dd
cpi_us = cpi_us.rename({'Date':'Date'}, axis='columns')
cpi_us = cpi_us.rename({'CPI_US':'CPI_us'}, axis='columns')
cpi_us['Date'] = cpi_us['Date'].apply(lambda x: dt.strptime(x, '%d/%m/%Y'))
# se reemplazan las comas por puntos para hacer el formato de los números compatible con los de cpi_ar y se
# transforman de Str a Float
cpi_us['CPI_us'] = cpi_us['CPI_us'].apply(lambda x: str(x).replace(',','.'))
cpi_us['CPI_us'] = cpi_us['CPI_us'].apply(lambda x: float(x))
# se repite el procedimiento de índice e interpolación
cpi_us = cpi_us.set_index(cpi_us['Date'])
cpi_us = cpi_us[['CPI_us']]
cpi_us = cpi_us.resample('D').interpolate(method='quadratic')

# se combinan ambas series, utilizando solo los días para los que haya datos en ambas
merge_1 = pd.merge(cpi_ar,cpi_us,how='inner',left_index=True,right_index=True)

# se descarga el dataset Financial - Argentina - FX premiums de Alphacast y se guarda en un .csv
res_fx = requests.get('https://charts.alphacast.io/api/datasets/5288.csv', auth=HTTPBasicAuth(user_key,''))
open('fx_nominal.csv', 'wb').write(res_fx.content)

# mismo procedimiento con la serie de datos
fx_rate = pd.read_csv('fx_nominal.csv')[['Year','Dolar Oficial']]
fx_rate = fx_rate.rename({'Year':'Date'}, axis='columns')
fx_rate = fx_rate.rename({'Dolar Oficial':'FX'}, axis='columns')
fx_rate['Date'] = fx_rate['Date'].apply(lambda x: pd.to_datetime(x))
fx_rate = fx_rate.set_index(fx_rate['Date'])
fx_rate = fx_rate[['FX']]
# se borran las filas que no tengan observaciones en la columna FX
fx_rate = fx_rate[fx_rate['FX'].notna()]

# se combina con el merge anterior, de la misma manera
merge_2 = pd.merge(merge_1, fx_rate, how='inner', left_index=True, right_index=True)

# se calcula el tipo de cambio real bilateral con la fórmula teorica, y luego se pasa a base 2013-04-03 = 100 (primer
# dato de la serie)
merge_2['HF_RER'] = merge_2['CPI_us']*merge_2['FX']/merge_2['CPI_ar']
merge_2['HF_RER'] = merge_2['HF_RER'].apply(lambda x: x*100/merge_2.iloc[0,3])

# se descargan los datos de Monetary - Argentina - BCRA - Multilateral Real FX Rate de Alphacast y se guardan en un
# .csv
res_itcrm = requests.get('https://charts.alphacast.io/api/datasets/5417.csv', auth=HTTPBasicAuth(user_key,''))
open('itcrm.csv', 'wb').write(res_itcrm.content)

# mismo procedimiento con los datos, quedandonos sólo con el índice de tipo de cambio bilateral con Estados Unidos,
# para comparar con el que calculamos
rer_bcra = pd.read_csv('itcrm.csv')[['Year','ITCRB Estados Unidos']]
rer_bcra = rer_bcra.rename({'Year':'Date'}, axis='columns')
rer_bcra = rer_bcra.rename({'ITCRB Estados Unidos':'RER_BCRA'}, axis='columns')
rer_bcra['Date'] = rer_bcra['Date'].apply(lambda x: pd.to_datetime(x))
rer_bcra = rer_bcra.set_index(rer_bcra['Date'])
rer_bcra = rer_bcra[['RER_BCRA']]

# se combina con el último merge, de la misma manera que en los anteriores
full_merge = pd.merge(merge_2, rer_bcra, how='inner', left_index=True, right_index=True)
full_merge['RER_BCRA'] = full_merge['RER_BCRA'].apply(lambda x: x*100/full_merge.iloc[0,4])

# arreglos para darle formato compatible con alphacast
full_merge = full_merge.reset_index()
full_merge = full_merge.rename({'Date':'Year'}, axis='columns')
# se borran las columnas no deseadas
full_merge = full_merge[['Date','HF_RER','RER_BCRA']]
A = pd.Series(['Argentina' for x in range(len(full_merge.index)+1)])
full_merge.insert(loc=0,column='Entity',value=A)
# se exporta a un archivo .csv
full_merge.to_csv('HFRER.csv',index=False)

ZayatAlex

Written by

ZayatAlex

Published in

My Public Repo

You can use you first public repository to share content with the community

Related insights

  • Read more...

    La economía de las elecciones

    ¿Cómo llega la economía "de bolsillo" a las elecciones legislativas?

    Se muestra la evolución de algunos indicadores económicos cercanos a las personas (inflación, dólar, consumo, empleo, salarios, confianza), para ilustrar el estado de la economía de cara a las cercanas elecciones legislativas (PASO en septiembre, generales en noviembre).

    Inflación

    *Se toman datos