Datanalytics

Archivo

Entradas Etiquetadas ‘finanzas’

Addenda: ¿qué ha pasado en el Ibex durante el último mes?

Jueves, 28 de febrero de 2013 Sin comentarios

Abundando en el tema de ayer, ahora, los mismos datos representados con mapas de calor:

Para obtenerlo, a lo que ya teníamos basta añadirle:

library(gplots)
heatmap.2(as.matrix(ibex.scaled),
          Rowv=F, Colv=T, key=F, trace="none",
          col=redgreen, xlab="valor", ylab="",
          margins=c(5,10))

¿Qué ha pasado en el Ibex durante el último mes?

Miércoles, 27 de febrero de 2013 1 comentario

Pues esencialmente esto:

Es decir, un grupo numeroso de valores ha bajado de precio mientras que otros dos grupos han tenido una evolución en U y ha recuperado, con creces incluso, el valor que tenían hace un mes.

Y, como siempre, el código:

library(tseries)
library(zoo)
library(XML)
library(reshape)
library(ggplot2)
 
foo  <- function( simbolo, final = Sys.time(), profundidad = 30 * 24 * 3600 ){
  precios <- get.hist.quote(instrument= simbolo, start = final - profundidad,
                            end = final, quote=c("AdjClose"),
                            provider="yahoo", origin="1970-01-01",
                            compression="d", retclass="zoo")
  colnames(precios) <- simbolo
  return(precios)
}
 
# lista de símbolos del ibex
 
tmp <- readHTMLTable("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components")[[5]]
tmp <- as.character(tmp$V1[-(1:6)])
tmp <- gsub("-P", "", tmp)
simbolos <- tmp[tmp != "ABG.MC"]
 
ibex <- do.call(merge, sapply(simbolos, foo, simplify = F))
 
ibex.scaled <- scale(ibex)
 
ibex.df <- data.frame(ibex.scaled, fecha = index(ibex.scaled))
ibex.df <- melt(ibex.df, id.vars = "fecha")
ibex.df <- ibex.df[ order(ibex.df$fecha, ibex.df$variable), ]
ibex.df$cluster <- kmeans(data.frame(t(ibex.scaled)), 4)$cluster
 
ggplot(ibex.df, aes(x=fecha, y=value, group=variable)) +
        geom_line() + facet_wrap(~cluster)

Estadísticas oficiales alternativas

Lunes, 25 de febrero de 2013 Sin comentarios

Me reconozco entusiasta de la heterodoxia. Allá donde hay comunión de pensamiento, siento la necesidad imperativa de abrir las ventanas y orear el ambiente. Y en pocos ámbitos la hay menos que en el de las estadísticas oficiales, que se toman como trasunto mismo de la realidad que aspiran a medir.

Por eso traigo a estas páginas la mención a Shadow Government Statistics, un portal que proporciona medidas alternativas de las principales magnitudes macroeconómicas (de los EE.UU.). Su autor, Walter J. Williams, ilustra así de descriptivamente su desencanto con las cifras oficiales:

One of my early clients was a large manufacturer of commercial airplanes, who had developed an econometric model for predicting revenue passenger miles. The level of revenue passenger miles was their primary sales forecasting tool, and the model was heavily dependent on the GNP (now GDP) as reported by the Department of Commerce. Suddenly, their model stopped working, and they asked me if I could fix it. I realized the GNP numbers were faulty, corrected them for my client (official reporting was similarly revised a couple of years later) and the model worked again, at least for a while, until GNP methodological changes eventually made the underlying data worthless.

Por ejemplo, en SGS, las cifras del desempleo se muestran así:

Su autor acompaña las cifras oficiales (que aparecen en el periódico, en rojo) de la medida de desempleo amplio, que suma a la anterior:

  • los desempleados desanimados a corto plazo, es decir, los que pudiendo trabajar, dicen no estar buscando empleo
  • los subempleados, aquellos que tienen trabajos a tiempo parcial con un número de horas que consideran insuficiente

Y sobre las curvas anteriores muestra en azul su propia estimación, que incluye la totalidad de los desempleados desanimados que, según él, fueron oficialmente declarados inexistentes tras la reforma metodológica de 1994.

Los interesados en el asunto encontrarán en Shadow Government Statistics correcciones similares a las cifras de la inflación, del PIB, etc.

Cuando hablé el otro día de la crítica del presidente de la patronal a las cifras de la EPA uno de los comentarios de los lectores señalaba —acertadamente— que la crítica de Rosell llevaba carga ideológica. ¡Obvio! Pero igualmente puede uno preguntarse si las definiciones imperantes de qué es un desempleado, qué computa en el PIB, qué entra en la cesta de la compra con la que se computa el índice de precios, etc. están igualmente cargadas ideológicamente. Aunque luego las defiendan a capa y espada (como dije, ad verecundiam) comentaristas de todo pelaje que en temas menos relevantes suelen hilar más fino y encontrarle los cinco pies al gato más intrascendente.

El Ibex 35 al estilo GapMinder

Miércoles, 9 de enero de 2013 1 comentario

Quiero representar hoy la evolución del Ibex 35 a lo largo del año pasado al estilo GapMinder. En concreto, usando un MotionChart de Google.

Primero, bajo los símbolos de los activos del Ibex de Yahoo! Finance:

library(XML)
simbolos <- readHTMLTable(htmlParse("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components"))
simbolos <- as.character(simbolos[[9]]$Symbol)
simbolos <- gsub("-P", "", simbolos)

Luego, creo una pequeña función y se la aplico a cada símbolo:

library(tseries)
 
foo  <- function( simbolo, final = Sys.time(), profundidad = 365 * 24 * 3600 ){
 
  tmp <- get.hist.quote(instrument= simbolo, start = final - profundidad,
                            end= final, quote="AdjClose",
                            provider="yahoo", origin="1970-01-01",
                            compression="d", retclass="zoo")
 
  precios <- as.data.frame(tmp)
  precios$fecha <- index(tmp)
  rownames(precios) <- NULL
  precios$simbolo <- simbolo
 
  precios$AdjClose <- 100 * precios$AdjClose / precios$AdjClose[1]
  precios$x <- as.numeric(precios$fecha)
  precios$x <- 1 + precios$x - precios$x[1]
  colnames(precios) <- c("precio", "fecha", "simbolo", "dias")
 
  precios
}
 
res <- sapply(simbolos, foo, simplify = F)
res <- do.call(rbind, res)

Finalmente, creo el gráfico:

library(googleVis)
 
M <- gvisMotionChart(res, idvar="simbolo", timevar="fecha",
                     xvar = "dias", yvar = "precio",
                     options = list(width = 1200,
                                    showAdvancedPanel=T,
                                    showChartButtons =F,
                                    showSelectListComponent=F,
                                    showXMetricPicker = F,
                                    showYMetricPicker = F))
plot(M)

El resultado tiene un aspecto similar a la siguiente captura estática:

No puedo insertar aquí el gráfico dinámico pero cualquiera que ejecute el código anterior en su máquina lo debería obtener en su propio navegador.

Sólo el 5% ganan dinero con el “análisis técnico”

Jueves, 6 de diciembre de 2012 2 comentarios

Hojeando la prensa francesa di con este pequeño artículo en Les Echos, Pourquoi les particuliers sont perdants sur les devises. Remite a un artículo reciente, Is Technical Analysis Profitable for Individual Currency Traders? inasequible para quienes creemos que los 45 dólares que cuesta descargarlo tienen mejor empleo en otra parte (es curioso: en muchos otros ámbitos académicos es fácil conseguir los artículos gratis; en finanzas, casi imposible).

¿El resumen? Que prácticamente nadie gana dinero usando el llamado análisis técnico. E incluso podría argumentarse que ese 5% podrían no ser sino el sesgo de supervivencia.

He leído algo sobre análisis técnico y he realizado algunas comprobaciones por mi cuenta en alguna ocasión. Y cuanto más leo y más analizo, más convencido estoy de que detrás de todo esto no hay sino seudociencia. Entonces,

  • ¿qué os parece a vosotros? ¿sois de la misma opinión?
  • y más aún, ¿deberían los organismos públicos pertinentes tomar cartas en el asunto (igual que hacen las autoridades sanitarias con determinados remedios mágicos que ponen en peligro la salud y la cartera de la ciudadanía)?
  • en el peor de los casos, ¿deberían darse a conocer más eficazmente los resultados de este tipo de estudios para contrarrestar la publicidad  manifiestamente engañosa de algunos de quienes se benefician de este negocio?

Algunos gráficos de información bursátil

Jueves, 18 de octubre de 2012 Sin comentarios

Hoy voy a presentar algunos gráficos de información bursátil adaptados a partir de código de Eric Zivot, el instructor del curso Introduction to Computational Finance and Financial Econometrics que estoy siguiendo (un poco como puta por rastrojo: siempre me las arreglo para resolver los ejercicios en el último minuto y antes de haber revisado la teoría) en Coursera.

Por si pueden servir de algo a otros, los reproduzco y comento aquí. Primero, hay que importar las librerías necesarias:

Luego, descargar datos de cotizaciones (de Telefónica, cuyo símbolo es TEF.MC) de Yahoo.

precios.TEF <- get.hist.quote(instrument="TEF.MC", start="1998-01-01",
                              end="2012-10-15", quote="AdjClose",
                              provider="yahoo", origin="1970-01-01",
                              compression="m", retclass="zoo")
rent.TEF <- diff(log(precios.TEF))

Nótese que estoy solicitando datos desde 1998 hasta el 15 de octubre de 2012. Además, sólo una observación por mes (a través de la opción compression). Finalmente, de las varias columnas de información que ofrece Yahoo (precio de apertura, cierre, máximo, mínimo, etc.) me quedo con el AdjClose, es decir, el cierre ajustado. Es el precio que incluye (o tiene en cuenta) fenómenos de relevancia económica pero no reflejados en los precios de cierre tales como los dividendos, los splits, etc.

Haciendo

chart.TimeSeries(rent.TEF, legend.loc = "bottom", main = "Rentabilidad mensual de TEF")

se obtiene entonces

Alternativamente, también puede hacerse

chart.Bar(rent.TEF, legend.loc = "bottom", main = "Rentabilidad mensual de TEF")

para obtener

La función chart.CumReturns con los parámetros que aparecen en

chart.CumReturns(diff(precios.TEF)/lag(precios.TEF, k = -1),
                 legend.loc="topleft", wealth.index = TRUE,
                 main="Valor actual de una inversión de 1€")

representa el valor a lo largo del tiempo de un euro invertido al principio de la serie temporal, es decir, este ruinoso negocio:

Finalmente, haciendo

ret.mat <- coredata(rent.TEF)
 
# here are the 4 panel plots
par(mfrow = c(2, 2))
 
hist(ret.mat[,1], main = "Rentabilidad Mensual de TEF",
     xlab = "VBLTX", probability = TRUE, col = "slateblue1")
boxplot(ret.mat[,1],outchar=T, main="Boxplot", col="slateblue1")
plot(density(ret.mat[,1]), type = "l", main = "Densidad suavizada",
     xlab = "rentabilidad mensual", ylab = "estimación de la densidad", col = "slateblue1")
qqnorm(ret.mat[,1], col = "slateblue1")
qqline(ret.mat[,1])
 
par(mfrow = c(1, 1))

se construye el gráfico

que permite investigar, por ejemplo, si es o no sensato suponer que las rentabilidades mensuales siguen una ley normal.

Categories: finanzas, r Tags: , ,

Balanzas fiscales y periodismo basado en datos

Martes, 9 de octubre de 2012 2 comentarios

Dudo al escribir sobre el asunto porque el contexto del artículo que traigo a colación es ajeno al interés de esta bitácora. Pero me ha parecido un ejercicio inigualable de lo que debería ser el periodismo de datos.

El título es sugerente: ¿Cisne negro o pollo del montón? El déficit fiscal catalán en perspectiva. El tema del cisne negro ya ya sido mencionado aquí previamente, aunque mencionarlo en este contexto sólo es posible sometiendo el término a una cierta violencia léxica.

El artículo en cuestión responde a otro anterior de Germà Bel según el cual el déficit fiscal de Cataluña representa una singularidad impensable en ningún otro tipo de país. Responde Ángel de la Fuente con el siguiente gráfico:

En él, lo que se denomina tasa de retorno es el número de euros recibidos por cada euro contribuido (a través de impuestos).

Recomiendo tanto el artículo aparecido en El País como esta otra versión un poco más académica del mismo.

PER y EV/EBITDA

Miércoles, 19 de septiembre de 2012 Sin comentarios

Muchos portales financieros incluyen información sobre uno de los llamados múltiplos (asociados a empresas que cotizan en bolsa), el PER. Es fácil de calcular a partir de información pública más o menos fiable y se usa en la práctica para estimar muy a groso modo si determinadas empresas (o mercados) están o no sobrepreciadas.

El PER es el cociente entre la capitalización bursátil de una empresa (que es público y se actualiza segundo a segundo) y su beneficio, que se conoce con cierta regularidad. Tiene sus ventajas —como la señalada más arriba— y desventajas —por ejemplo, que está influido por el desempeño pasado, los beneficios de ejercicios anteriores, cuando a un inversor le interesa más el desempeño futuro—.

Hoy traigo a colación otra desventaja quizás menos conocida: que el PER está muy influenciado por la estructura de capital de las empresas. Por ello no es un indicador adecuado para, sin más, realizar comparaciones. En efecto, de McKinsey Quarterly extraigo el siguiente diagrama:

En él se comparan dos empresas imaginarias similares, que solo se diferencian en su estructura de capital: la una tiene una deuda sustancial y la otra no.

A quienes piensen que la estructura de capital resulta irrelevante, les espantará averiguar cómo el PER parece ofrecer imágenes distintas de una misma realidad. El otro indicador alternativo, el EV/EBITA (o el EV/EBITDA) es idéntico para ambos.

Se trata de un múltiplo neutro frente a la estructura de capital aunque también presenta algunos problemas: el numerador, el valor de la empresa, es difícil de calcular a partir de datos públicos.

La tal vez excesiva popularidad del PER para evaluar el desempeño de las distintas empresas pudiera haber contribuido a que estas acumulasen más deuda de la que, a la vista de la actual situación, debieron haber asumido. El uso de indicadores neutrales podría ayudar a que los gestores de las empresas se volviesen igualmente neutrales frente a la estructura de capital y que esto constribuyese a reforzar la solidez del sistema.

¿Estaría el BCE a ciegas?

Miércoles, 29 de agosto de 2012 Sin comentarios

David Cabo me hizo llegar el otro día este artículo, To what degree is the ECB flying blind? Y con buen criterio, porque, como veremos, toca temas ya conocidos de los lectores de estas páginas.

El artículo se resume en lo siguiente: si un día el Banco Central Europeo va a sumar a sus funciones la de la supervisión bancaria, va a encontrarse los dos problemas siguientes:

  • La confidencialidad de los datos
  • Sus niveles de desglose (y agregación)

Son dos problemas, además, interrelacionados. Por un lado, la supervisión bancaria exige un conocimiento íntimo de la cartera crediticia de las entidades. De hecho, son lo que el columnista llama tail risks, riesgos grandes que afectan a un número pequeño de préstamos, los que pueden tumbar al banco más pintado (véase esto y esto otro). Y estos riesgos en la cola quedan opacados tras las agregaciones.

Así, si un banco tuviese los pies en el horno y la cabeza en la nevera, es probable que ni él mismo se diese cuenta de que está en problemas.

Resolver este problema exige por una parte, imponer niveles de desglose distintos en función del riesgo de las posiciones. Por la otra, adaptar la legislación. Porque, aunque el Banco de España tiene autoridad para analizar con meticulosidad cada detalle del activo de una entidad, ¿estamos preparados para que lo haga igualmente un hombre de negro que habla holandés? En resumen, más estadística y más Europa.

La media y el riesgo (de nuevo)

Lunes, 30 de julio de 2012 Sin comentarios

Hoy me han preguntado una cosa algo rara. Era alguien del departamento de riesgos de una conocida entidad financiera que quería saber cómo calcular (con SAS) la media del LTV. El LTV, aunque tiene otras acepciones, significa en este contexto loan to value, el cociente entre el valor de un préstamo y valor del colateral que lo respalda.

(Este LTV tiene que ver con el famoso le financiamos el 80% del valor de la inversión de otras épocas. Un préstamo con un LTV bajo es seguro: el banco puede con más o menos facilidad recuperar el 100% del capital prestado; un préstamo con un LTV alto es mucho más problemático.)

El problema con el que se encontraba era que, en algunos casos, para ciertos contratos, los importes que tienen en el sistema eran (o parecían ser) erróneos y había casos de LTV con valores ridículamente altos que afectaban a la media. De ahí su interés por filtrarlos.

Mi respuesta automática: usa la mediana. Pero una sinapsis me ha hecho eco y ha rebotado la señal hacia capas más lúcidas de mi cerebro y me llevó a pensar cómo, para un departamento de riesgos, una medida de centralidad de la LTV es irrelevante. Por varios motivos.

  • En primer lugar por las ponderaciones: muchos préstamos pequeños con una LTV baja pueden enmascarar unos préstamos grandes con una LTV grande (y de mucho riesgo, por tanto). Y si se calcula la media de la LTV usando ponderando por el tamaño del préstamo, el resultado global es la suma del capital prestado dividido entre la suma del colateral. ¡Algo de masiado rudimentario para todo un departamento de riesgos!
  • En segundo lugar, y de manera más importante, porque el riesgo puede no estar en la masa de préstamos con un LTV razonable sino en un subconjunto de los de mayor LTV. ¿Por qué entonces la media y no una selección de cuantiles altos? ¿Por qué no ya la misma distribución del LTV en lugar de resúmenes tan cuestionables como caducos?

Luego se burlan de nosotros. Nos atribuyen un comentario gañán a eso de cuando alguien mete la cabeza en el horno y los pies en la nevera. Pero luego van los departamentos de riesgos y… media al canto. Y también el Banco de España desaporta su granito de arena.

Uno querría pensar, también, que algunos de los economistas más reputados de este país estarían libres de ese vicio. Sin embargo, recientemente, en su bitácora plantearon una competición: crear una entrada para el mismo usando datos procedentes del recientemente inaugurado centro de información estadística del notariado. Y el áccesit lo recibió Gabi Foix, de quien tomo el gráfico que figura más arriba, que escribió sobre, ¡sorpresa!, la evolución del LTV medio (aunque no lo aclara en la entrada). En descarga del autor, hay que indicar que los notarios no se han esmerado mucho y que la información que publican, como ya hice constar, deja bastante que desear. Y, efectivamente, los notarios sólo publican las medias. ¡Como son notarios!

(Que conste que pensé en participar en esa competición, pero visto lo visto en el portal del notariado, lo dejé pasar).

¡Spiegelhalter, ven a España y libera nos a malo!