class MX::Banxico::Series

Series de datos que se pueden obtener de los servicios web del Banco de México (Banxico).

Constants

SERIES_RESERVAS_INTERNACIONALES

Series de reservas internacionales.

Series:

  • :reserva_internacional

SERIES_TASAS_DE_INTERES

Series de tasas de interés.

Series:

  • :tasa_objetivo

  • :tasa_interes_interbancaria_tiie_28_dias

  • :tasa_interes_interbancaria_tiie_91_dias

  • :tasa_rendimiento_cetes_28_dias

SERIES_TIPOS_DE_CAMBIO

Series de tipos de cambio.

Series:

  • :dolar_canadiense

  • :dolar_fix

  • :dolar_liquidacion

  • :euro

  • :libra_esterlina

  • :yen

SERIES_UDIS

Series de UDIS ({www.banxico.org.mx/ayuda/temas-mas-consultados/udis–unidades-inversion-.html Unidades de Inversión}).

Series:

  • :udis

TIPOS

Tipos de series.

Tipos:

  • :reservas_internacionales

  • :tasas_de_interes

  • :tipos_de_cambio

  • :udis

Public Class Methods

identificador(tipo, serie) click to toggle source

Obtiene el identificador de acuerdo al tipo y a la serie.

@param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}). @param serie [Symbol] el nombre de la serie.

@return [String] el identificador de la serie.

@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}). @raise [ArgumentError] si `serie` no existe.

# File lib/MX/Banxico/series.rb, line 252
def identificador(tipo, serie)
  raise ArgumentError.new("El tipo no existe (tipo: #{tipo}).") unless TIPOS.has_key?(tipo.to_sym)
  raise ArgumentError.new("La serie no existe (serie: #{serie}).") unless send(tipo.to_sym).has_key?(serie.to_sym)
  send(tipo.to_sym)[serie.to_sym][:id]
end
identificadores(tipo = nil) click to toggle source

Obtiene una lista de identificadores de las series.

Cuando se especifica el `tipo`, la lista de identificadores se limita a los de las series de ese `tipo` únicamente.

@param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}).

@return [Array<String>] arreglo de identificadores.

@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}).

# File lib/MX/Banxico/series.rb, line 269
def identificadores(tipo = nil)
  if tipo.nil?
    TIPOS.inject([]){ |arr, tipo_serie| arr << tipo_serie.last.values.each.map{ |s| s[:id] } }.flatten
  else
    raise ArgumentError.new("El tipo no existe (tipo: #{tipo}).") unless TIPOS.has_key?(tipo.to_sym)
    send(tipo.to_sym).values.map{ |v| v[:id] }
  end
end
nombre(identificador, tipo = nil) click to toggle source

Obtiene el nombre de la serie de acuerdo al identificador dado.

Cuando se especifica el `tipo`, la búsqueda del nombre se limita a los de las series de ese `tipo` únicamente.

@param identificador [String] identificador de la serie. @param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}).

@return [String] el nombre de la serie.

@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}). @raise [ArgumentError] si `identificador` no existe.

# File lib/MX/Banxico/series.rb, line 291
def nombre(identificador, tipo = nil)
  nom = nil
  if tipo.nil?
    tipos.each do |t|
      nom = busca_nombre(identificador, t)
      break unless nom.nil?
    end
    raise ArgumentError.new("El identificador no existe (identificador: #{identificador}).") if nom.nil?
  else
    nom = busca_nombre(identificador, tipo)
    raise ArgumentError.new("El identificador (identificador: #{identificador}) no se encuentra en el tipo de serie dado (tipo: #{tipo}).") if nom.nil?
  end
  nom
end
nombres(tipo = nil) click to toggle source

Obtiene una lista de nombres de las series.

Cuando se especifica el `tipo`, la lista de nombres se limita a los de las series de ese `tipo` únicamente.

@param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}).

@return [Array<String>] arreglo de nombres.

@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}).

# File lib/MX/Banxico/series.rb, line 317
def nombres(tipo = nil)
  if tipo.nil?
    TIPOS.inject([]){ |arr, tipo_serie| arr << tipo_serie.last.keys }.flatten
  else
    raise ArgumentError.new("El tipo no existe (tipo: #{tipo}).") unless TIPOS.has_key?(tipo.to_sym)
    send(tipo.to_sym).keys
  end
end
reservas_internacionales() click to toggle source

Series de reservas internacionales.

Series:

  • :reserva_internacional

@return [Hash] donde cada llave es el nombre de la serie y su valor es otro `Hash`con:

* identificador (`:id`)
* descripción (`:descripcion`)
* título (`:titulo`)
* tipo de la cifra (`:tipo_cifra`), por ejemplo: "Tipo de cambio"
* tipo de la unidad (`:tipo_unidad`), por ejemplo: "Millones de dólares"
# File lib/MX/Banxico/series.rb, line 180
def reservas_internacionales
  SERIES_RESERVAS_INTERNACIONALES
end
tasas_de_interes() click to toggle source

Series de tasas de interés.

Series:

  • :tasa_objetivo

  • :tasa_interes_interbancaria_tiie_28_dias

  • :tasa_interes_interbancaria_tiie_91_dias

  • :tasa_rendimiento_cetes_28_dias

@return [Hash] donde cada llave es el nombre de la serie y su valor es otro `Hash`con:

* identificador (`:id`)
* descripción (`:descripcion`)
* título (`:titulo`)
# File lib/MX/Banxico/series.rb, line 198
def tasas_de_interes
  SERIES_TASAS_DE_INTERES
end
tipos() click to toggle source

Arreglo con los tipos de series. Ver {TIPOS}.

Tipos:

  • :reservas_internacionales

  • :tasas_de_interes

  • :tipos_de_cambio

  • :udis

@return [Array<Symbol>] arreglo con los tipos de series.

# File lib/MX/Banxico/series.rb, line 163
def tipos
  TIPOS.keys
end
tipos_de_cambio() click to toggle source

Series de tipos de cambio.

Series:

  • :dolar_canadiense

  • :dolar_fix

  • :dolar_liquidacion

  • :euro

  • :libra_esterlina

  • :yen

@return [Hash] donde cada llave es el nombre de la serie y su valor es otro `Hash`con:

* identificador (`:id`)
* descripción (`:descripcion`)
* título (`:titulo`)
* tipo de la cifra (`:tipo_cifra`), por ejemplo: "Tipo de cambio"
* tipo de la unidad (`:tipo_unidad`), por ejemplo: "Millones de dólares"
# File lib/MX/Banxico/series.rb, line 220
def tipos_de_cambio
  SERIES_TIPOS_DE_CAMBIO
end
todas() click to toggle source

Todas las series por tipo.

@return [Hash] con el tipo por llave. Cada llave contiene otro `Hash` con las series.

# File lib/MX/Banxico/series.rb, line 149
def todas
  TIPOS
end
udis() click to toggle source

Series de UDIS ({www.banxico.org.mx/ayuda/temas-mas-consultados/udis–unidades-inversion-.html Unidades de Inversión}).

Series:

  • :udis

@return [Hash] donde cada llave es el nombre de la serie y su valor es otro `Hash`con:

* identificador (`:id`)
* descripción (`:descripcion`)
* título (`:titulo`)
* tipo de la cifra (`:tipo_cifra`), por ejemplo: "Tipo de cambio"
* tipo de la unidad (`:tipo_unidad`), por ejemplo: "Millones de dólares"
# File lib/MX/Banxico/series.rb, line 237
def udis
  SERIES_UDIS
end

Private Class Methods

busca_nombre(identificador, tipo) click to toggle source

Busca el nombre de acuerdo al identificador y el tipo dado.

@param identificador [String] identificador de la serie. @param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}).

@return [String] si el nombre de la serie fue encontrado. @return [nil] si el nombre de la serie no fue encontrado.

@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}).

# File lib/MX/Banxico/series.rb, line 338
def busca_nombre(identificador, tipo)
  raise ArgumentError.new("El tipo no existe (tipo: #{tipo}).") unless TIPOS.has_key?(tipo.to_sym)
  send(tipo.to_sym).each_pair{|k, v| return k if v[:id] == identificador }
  nil
end