Class: MX::Banxico::Series

Inherits:
Object
  • Object
show all
Defined in:
lib/MX/Banxico/series.rb

Overview

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

Constant Summary collapse

SERIES_RESERVAS_INTERNACIONALES =

Series de reservas internacionales.

Series:

  • :reserva_internacional
{
  reserva_internacional: {
    id: "SF43707",
    titulo: "Reserva internacional",
    descripcion: "Reserva internacional en millones de dólares",
    tipo_cifra: "Saldos",
    tipo_unidad: "Millones de dólares"
  }
}.freeze
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
{
  tasa_objetivo:{
    id: "SF61745",
    titulo: "Tasa objetivo",
    descripcion: "Tasa objetivo"
  },
  tasa_interes_interbancaria_tiie_28_dias: {
    id: "SF60648",
    titulo: "Tasa de interés interbancario TIIE a 28 días",
    descripcion: "Tasa de interés interbancario TIIE a 28 días"
  },
  tasa_interes_interbancaria_tiie_91_dias: {
    id: "SF60649",
    titulo: "Tasa de interés interbancario TIIE a 91 días",
    descripcion: "Tasa de interés interbancario TIIE a 91 días"
  },
  tasa_rendimiento_cetes_28_dias: {
    id: "SF60633",
    titulo: "Tasa de rendimiento resultado de la subasta semanal Cetes a 28 días",
    descripcion: "Tasa de rendimiento resultado de la subasta semanal Cetes a 28 días"
  }
}.freeze
SERIES_TIPOS_DE_CAMBIO =

Series de tipos de cambio.

Series:

  • :dolar_canadiense
  • :dolar_fix
  • :dolar_liquidacion
  • :euro
  • :libra_esterlina
  • :yen
{
  dolar_canadiense: {
    id: "SF60632",
    titulo: "Cotización de las divisas que conforman la canasta del DEG respecto al Peso mexicano vs. el Dólar canadiense",
    descripcion: "Peso mexicano vs. el Dólar canadiense",
    tipo_cifra: "Tipo de cambio",
    tipo_unidad: "Peso mexicano"
  },
  dolar_fix: {
    id: "SF43718",
    titulo: "Tipo de cambio Pesos mexicanos por Dólar E.U.A. para solventar obligaciones en moneda extranjera (fecha de determinación - Fix)",
    descripcion: "Peso mexicano vs. el Dólar E.U.A. (fecha de determinación - Fix)",
    tipo_cifra: "Tipo de cambio",
    tipo_unidad: "Peso por dólar"
  },
  dolar_liquidacion: {
    id: "SF60653",
    titulo: "Tipo de cambio Pesos mexicanos por Dólar E.U.A. para solventar obligaciones en moneda extranjera (fecha de liquidación)",
    descripcion: "Peso mexicano vs. el Dólar E.U.A. (fecha de liquidación)",
    tipo_cifra: "Tipo de cambio",
    tipo_unidad: "Peso por dólar"
  },
  euro: {
    id: "SF46410",
    titulo: "Cotización de las divisas que conforman la canasta del DEG respecto al Peso mexicano vs. el Euro",
    descripcion: "Peso mexicano vs. el Euro",
    tipo_cifra: "Tipo de cambio",
    tipo_unidad: "Peso mexicano"
  },
  libra_esterlina: {
    id: "SF46407",
    titulo: "Cotización de las divisas que conforman la canasta del DEG respecto al Peso mexicano vs. la Libra esterlina",
    descripcion: "Peso mexicano vs. la Libra esterlina",
    tipo_cifra: "Tipo de cambio",
    tipo_unidad: "Peso mexicano"
  },
  yen: {
    id: "SF46406",
    titulo: "Cotización de las divisas que conforman la canasta del DEG respecto al Peso mexicano vs. el Yen japonés",
    descripcion: "Peso mexicano vs. el Yen japonés",
    tipo_cifra: "Tipo de cambio",
    tipo_unidad: "Peso mexicano"
  }
}.freeze
SERIES_UDIS =

Series de UDIS (Unidades de Inversión).

Series:

  • :udis
{
  udis: {
    id: "SP68257",
    titulo: "Valor de UDIS",
    descripcion: "Valor de UDIS",
    tipo_cifra: "Tipo de cambio",
    tipo_unidad: "UDI"
  }
}.freeze
TIPOS =

Tipos de series.

Tipos:

  • :reservas_internacionales
  • :tasas_de_interes
  • :tipos_de_cambio
  • :udis
{
  reservas_internacionales: SERIES_RESERVAS_INTERNACIONALES,
  tasas_de_interes: SERIES_TASAS_DE_INTERES,
  tipos_de_cambio: SERIES_TIPOS_DE_CAMBIO,
  udis: SERIES_UDIS,
}.freeze

Class Method Summary collapse

Class Method Details

.busca_nombre(identificador, tipo) ⇒ String? (private)

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

Parameters:

  • identificador (String)

    identificador de la serie.

  • tipo (Symbol)

    el tipo de la serie (ver TIPOS o tipos).

Returns:

  • (String)

    si el nombre de la serie fue encontrado.

  • (nil)

    si el nombre de la serie no fue encontrado.

Raises:

  • (ArgumentError)

    si tipo no existe (no es una llave en TIPOS o un elemento de tipos).



338
339
340
341
342
# 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

.identificador(tipo, serie) ⇒ String

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

Parameters:

  • tipo (Symbol)

    el tipo de la serie (ver TIPOS o tipos).

  • serie (Symbol)

    el nombre de la serie.

Returns:

  • (String)

    el identificador de la serie.

Raises:

  • (ArgumentError)

    si tipo no existe (no es una llave en TIPOS o un elemento de tipos).

  • (ArgumentError)

    si serie no existe.



252
253
254
255
256
# 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) ⇒ Array<String>

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.

Parameters:

  • tipo (Symbol) (defaults to: nil)

    el tipo de la serie (ver TIPOS o tipos).

Returns:

  • (Array<String>)

    arreglo de identificadores.

Raises:

  • (ArgumentError)

    si tipo no existe (no es una llave en TIPOS o un elemento de tipos).



269
270
271
272
273
274
275
276
# 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) ⇒ String

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.

Parameters:

  • identificador (String)

    identificador de la serie.

  • tipo (Symbol) (defaults to: nil)

    el tipo de la serie (ver TIPOS o tipos).

Returns:

  • (String)

    el nombre de la serie.

Raises:

  • (ArgumentError)

    si tipo no existe (no es una llave en TIPOS o un elemento de tipos).

  • (ArgumentError)

    si identificador no existe.



291
292
293
294
295
296
297
298
299
300
301
302
303
304
# 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) ⇒ Array<String>

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.

Parameters:

  • tipo (Symbol) (defaults to: nil)

    el tipo de la serie (ver TIPOS o tipos).

Returns:

  • (Array<String>)

    arreglo de nombres.

Raises:

  • (ArgumentError)

    si tipo no existe (no es una llave en TIPOS o un elemento de tipos).



317
318
319
320
321
322
323
324
# 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_internacionalesHash

Series de reservas internacionales.

Series:

  • :reserva_internacional

Returns:

  • (Hash)

    donde cada llave es el nombre de la serie y su valor es otro Hashcon:

    • 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"


180
181
182
# File 'lib/MX/Banxico/series.rb', line 180

def reservas_internacionales
  SERIES_RESERVAS_INTERNACIONALES
end

.tasas_de_interesHash

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

Returns:

  • (Hash)

    donde cada llave es el nombre de la serie y su valor es otro Hashcon:

    • identificador (:id)
    • descripción (:descripcion)
    • título (:titulo)


198
199
200
# File 'lib/MX/Banxico/series.rb', line 198

def tasas_de_interes
  SERIES_TASAS_DE_INTERES
end

.tiposArray<Symbol>

Arreglo con los tipos de series. Ver TIPOS.

Tipos:

  • :reservas_internacionales
  • :tasas_de_interes
  • :tipos_de_cambio
  • :udis

Returns:

  • (Array<Symbol>)

    arreglo con los tipos de series.



163
164
165
# File 'lib/MX/Banxico/series.rb', line 163

def tipos
  TIPOS.keys
end

.tipos_de_cambioHash

Series de tipos de cambio.

Series:

  • :dolar_canadiense
  • :dolar_fix
  • :dolar_liquidacion
  • :euro
  • :libra_esterlina
  • :yen

Returns:

  • (Hash)

    donde cada llave es el nombre de la serie y su valor es otro Hashcon:

    • 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"


220
221
222
# File 'lib/MX/Banxico/series.rb', line 220

def tipos_de_cambio
  SERIES_TIPOS_DE_CAMBIO
end

.todasHash

Todas las series por tipo.

Returns:

  • (Hash)

    con el tipo por llave. Cada llave contiene otro Hash con las series.



149
150
151
# File 'lib/MX/Banxico/series.rb', line 149

def todas
  TIPOS
end

.udisHash

Series de UDIS (Unidades de Inversión).

Series:

  • :udis

Returns:

  • (Hash)

    donde cada llave es el nombre de la serie y su valor es otro Hashcon:

    • 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"


237
238
239
# File 'lib/MX/Banxico/series.rb', line 237

def udis
  SERIES_UDIS
end