Este es un nuevo post sobre la rentabilidad conseguida por los gestores activos, el azar, y por qué la inversión pasiva tiene sentido.
Es una justificación de que «rentabilidades pasadas no aseguran rentabilidades futuras».
Este post hereda de este otro Extremely Successful? Extremely Lucky!, del CFA Institute. Hay elementos comunes, pero fundamentalmente es una elaboración propia de la misma idea.
Este post va en la línea de muchos otros que tratan el tema de por qué la inversión pasiva es una buena idea para un pequeño inversor. Vea por ejemplo:
- Justificación de la Inversión Pasiva: La Importancia del Coste
- Justificación de la Inversión Pasiva: Familia Propietaria de Todas las Acciones
- Inversión Activa vs Pasiva, Comparando Fondos para Invertir en Empresas Europeas
- Comparativa entre Inversión Pasiva e Inversión Activa: Informe SPIVA Europa
- Los Grandes Inversores Son Normales (de nuevo)
Y este tema está muy tratado en nuestros libros:
- Libertad Financiera con ETFs (libro físico en Amazon, PDF en PayHip)
- Carteras para Pequeños Inversores (libro físico en Amazon, PDF en PayHip)
Bueno, comencemos.
Introducción
Las personas a las que les va bien en la vida tienden a pensar que es porque ellas tienen mejores habilidades que los demás, y trabajan más duro.
Sin duda, las habilidades y el trabajo duro son muy importantes. Pero hay otra componente: la suerte.
En muchos aspectos de nuestra vida el azar es importante. Pero en inversiones, lo es aún más. Si alguien ha obtenido rentabilidades excepcionalmente buenas con las inversiones, muy seguramente habrá sido por suerte.
Esto no es una ofensa al lector, ni a los grandes inversores, es solo reconocer la importancia de la fortuna.
Nuestra primera intuición («los mejores inversores son necesariamente los que obtienen los mejores resultados») nos engaña hasta el momento que se ven las gráficas y se confronta la realidad. Fooled by randomness, que diría Nassim Taleb.
Descripción de las Simulaciones
Hemos simulado tres grupos de inversores según el alfa (la rentabilidad por encima del promedio del mercado) que proporcionan. Es alfa después de pagar costes de gestión.
Alfa | Proporción de Inversores | Descripción | |
Excelentes | +2% | 25% | Gestores que toman muy buenas decisiones de inversión. Son ejemplos de este grupo los gestores de pequeños fondos de autor, que tienen unos incentivos alineados con los de sus partícipes. |
Normales | 0 | 50% | Proporcionan la rentabilidad promedio del mercado. Son ejemplos de este grupo la mayor parte de los pequeños inversores. |
Malos | -2% | 25% | ¡Alfa negativa! Son ejemplos de este grupo gestores mediáticos que invierten de manera estrambótica; o los fondos de inversión de los grandes bancos, que cobran su sueldo independientemente del resultado, y que simplemente compran un ETF del índice y se llevan el 2% anual de comisión sin riesgo. |
Vamos a suponer también las características de un mercado bursátil típico: las acciones de EEUU de gran capitalización (fuente: base datos de CRSP, Center for Research in Security Prices), de la Reserva Federal de EEUU, via el libro All About Asseet Allocation de Rick Ferri).
- Rentabilidad anual: 9.3% (rentabilidad geométrica, CAGR, Compound Annual Growth Rate, no aritmética)
- Volatilidad anual: 18.1%
Simulemos 20 mil inversores, que es el orden de magnitud de fondos de inversión disponibles en la base de datos de MorningStar.es
Estos inversores toman sus decisiones durante el año. En promedio obtienen la rentabilidad del mercado (9.3% anual), con una volatilidad del 18.1%. Como invierten en una cartera diversificada de acciones que forman parte del mercado, es razonable suponer que obtienen la misma volatilidad que el mercado.
Esta volatilidad se simula como ruido gaussiano, una distribución «normal», con forma de campana, de números aleatorios donde 1 sigma de la distribución es exactamente 18.1%.
Además, los inversores excelentes consiguen añadir un +2% anual, y los malos inversores toman tan malas decisiones que pierden un 2% anual.
Simulamos la rentabilidad de cada inversor, anualmente, con la siguiente fórmula:
rentabilidad_del_inversor = rentabilidad_promedio_del_mercado + [alfa] + número_aleatorio_volatilidad
En años sucesivos, las rentabilidades de cada año se van multiplicando. Y al final se calcula la rentabilidad anualizada (CAGR).
El hecho de que la volatilidad sea el doble que la rentabilidad esperada, y casi 10 veces más que el alfa que queremos medir, es es meollo de la cuestión.
Simulación de 1 Año
Veamos en un año cualquiera cuál sería la distribución de rentabilidades.

La Figura 1 muestra las tres distribuciones de rentabilidades. En el eje horizontal se encuentran las rentabilidades, y en el vertical el número de inversores que han obtenido esas rentabilidades.
Como era de esperar, son distribuciones «normales», en campana de Gauss. Esto es así porque los números aleatorios siguen esta distribución. En primera aproximación nos vale.
- Los malos inversores (en rojo) obtienen una rentabilidad promedio de 9.3%-2%=7.3%.
- Los inversores normales (en naranja) obtienen una rentabilidad igual a la del promedio del mercado: 9.3%. Son el grupo más grande, con el doble de inversores que cualquiera de los otros dos grupos.
- Los inversores excelentes (en verde) obtienen una rentabilidad promedio del 9.3%+2%=11.3%
En la Figura 1 se aprecia que la gran mayoría de los inversores obtienen rentabilidades en la zona central, cerca del promedio del marcado, y muy pocos obtienen rentabilidades o muy altas o muy bajas.
En vez de poner a los tres grupos por separado, podemos combinarlos en una sola gráfica. Esta es la Figura 2.

La Figura 2 muestra que en un año apenas se aprecia diferencia entre los tres grupos. Uno esperaría que los inversores excelentes (los verdes) se encontrarían más a la derecha (hacia la zona de mayores rentabilidades). Pero no es así, los tres grupos son aparentemente equivalentes. Esto es así porque en un año el azar es la principal contribución a la rentabilidad de los inversores.
Podríamos fijarnos qué es lo que sucede con los inversores que han obtenido los mejores resultados. Los inversores que se encuentran en el décimo decil, el 10% de los mejores inversores (los 2000 mejores inversores). Son inversores con rentabilidades mejores que 32.7%. Esto es lo que muestra la Figura 3.

Como muestra la Figura 3, los 2000 mejores inversores están muy repartidos. Los inversores excelentes no son mayoría. Incluso encontramos gestores malos en este grupo, a pesar de que han perdido un -2% por su alfa negativa. Un buen ejemplo de cómo el azar es más importante que la habilidad.
Simulación de 5 Años
Las gráficas correspondientes a una simulación de 5 años de duración son las siguientes.

Se aprecia que ahora las distribuciones son más estrechas. Con el paso de los años, el azar se compensa. Ya sabe, «unas veces se pierde, otras se gana», «las gallinas que entran por las que salen».
De hecho, en la Figura 5 se intuye que la distribución de gestores excelentes está ligeramente escorada a la derecha (hacia mayores rentabilidades), con respecto a los malos inversores, que parece estar ligeramente más hacia la izquierda (menores rentabilidades).

Ahora mire la Figura 6. Muestra la composición del 10% de los mejores inversores (de nuevo el décimo decil, que han obtenido una rentabilidad mejor que 18.9% anual), vemos que hay un poco de todo. Hay más inversores excelentes, pero hay más aún inversores normales, e incluso encontramos a malos inversores que han llegado allí por pura suerte.

Simulación de 30 Años
Vayamos ahora a lo grande. Supongamos que tenemos datos históricos de los 20 mil inversores durante 30 años. ¿Qué resultados habrían obtenido?
La Figura 7 muestra claramente que aunque todos los inversores tienen una distribución similar en campana de Gauss, los inversores excelentes están más desplazados a la derecha (mejores rentabilidades) y los malos inversores más desplazados hacia la izquierda (peores rentabilidades).

La Figura 8 muestra los mismos datos que la Figura 7, pero ahora se aprecia que, en su conjunto, los inversores excelentes obtienen en promedio mejores rentabilidades que los demás. Bien, eso es lo que esperamos.

Centrémonos ahora en el 10% mejor de los inversores, aquellos que obtienen una rentabilidad anual igual o mejor a 12.5%, mostrado en la Figura 9. Podríamos haber supuesto que después de 30 años, los inversores con mejores resultados son todos ellos los inversores excelentes. Pero no es así. De los inversores que han obtenido las mejores rentabilidades, la mitad de ellos son normales o incluso malos ¡Están ahí por suerte!

Simulación de 30 Años Con Pocos Inversores
Pero las gráficas a 30 años anteriores no son realistas, porque el número de fondos disminuye con los años. En vez de suponer que hay 20 mil fondos con 30 años de historia, supongamos solo 200 fondos, que es una cantidad más razonable. Esto se muestra en la Figura 10. Cuando hay pocos casos, queda aún más claro el azar.
- Hay un inversor que ha obtenido un 15% de rentabilidad anual durante 30 años, a pesar de ser un mal inversor, ¡a pesar de que sus decisiones (o sus costes) le restan un -2% anual!
- El mejor inversor (rentabilidad anualizada del 17%)… ¡es un inversor normal!

Esto es solo una simulación, no una descripción de la realidad. Pero necesariamente, la realidad se ha de comportar de manera similar.
Estadística
Veamos ahora la Tabla 2, que muestra la composición del décimo decil, el 10% de los mejores inversores (básicamente un recuento de las Figuras 3, 6, y 9). Son los resultados de la estadística con 20 mil inversores.
Inversores Malos | Inversores Normales | Inversores Excelentes | Inversores Total | |
1 año | 20% | 50% | 30% | 100% |
5 años | 15% | 49% | 36% | 100% |
30 años | 11% | 46% | 43% | 100% |
Si nos fijamos solo en el 10% de los mejores inversores, los inversores excelentes ni siquiera son mayoría. Son como mucho el 43% tras 30 años. Esto quiere decir que si escoge un inversor del décimo decil al azar, lo más probable es que no sea de los excelentes.
Más aún, el número de malos inversores entre el 10% de mejores rentabilidades es relativamente grande ¡Hasta un 11% después de 30 años!
Si elige el gestor de su fondo de inversión de entre este 10% de los mejores, y tiene la mala suerte de elegir a un mal inversor que está ahí por suerte, en el futuro no puede esperar más que la rentabilidad del mercado menos el 2% del alfa negativo del mal gestor.
Notas Finales
Un primer comentario consiste en indicar que si usted está leyendo esto, su salario sea de 50 kEUR brutos al año o equivalente. O más. Si es así, enhorabuena. Además, sepa que eso le coloca confortablemente en el 1% de los ricos del mundo (fuente: How Rich Am I?). ¿Cuánto ha contribuido la suerte?
Si encuentra un gestor con 30 años de historial excelente, eso ni siquiera le garantiza que proporcione alfa positivo. Recuerde: «rentabilidades pasadas no aseguran rentabilidades futuras». Confirmado está.
Si encuentra un gestor excelente con 30 años de historial, debe de estar cerca de jubilarse, así que de poco le va a servir empezar a ser partícipe de su fondo ahora.
Si en vez de fijarnos en el 10% de los mejores inversores nos fijáramos en el 1%, las cifras mejoran un poco a favor de los inversores excelentes. Pero es una estadística de números pequeños. Hay muy pocos inversores con muchos años de historial y uno se puede encontrar con cualquier tipo de inversor, como bien indica la Figura 10.
Esta no es una crítica a los gestores de fondos de inversión. No es que sean poco habilidosos. Es que compiten con otros gestores que también buscan la excelencia. Y la componente de azar es grande y no es controlable por nadie.
Los inversores pasivos simplemente aprovechamos el mercado eficiente creado por estos inversores activos. Debido a sus decisiones, la rentabilidad promedio del mercado tiene sentido. Como inversores pasivos, no podemos mas que dar las gracias a los inversores activos.
No es que los inversores pasivos seamos gorrones que vivimos a costa de los inversores activos. No. Nosotros también valoramos mucho la excelencia en el trabajo. Por eso damos lo mejor de nosotros mismos en la empresa. Y en las facetas de nuestra vida en las que no somos excepcionales, nos conformamos con ser normales. Por eso invertimos pensando en obtener la rentabilidad promedio del mercado.
Descargo de Responsabilidad
Recuerde que la inversión implica riesgos y podría llevar a la pérdida de lo invertido. No somos asesores financieros, nada de lo que hay aquí escrito es una recomendación de compra de un producto determinado. En este post no hay enlaces de afiliados.
Código
Como es natural, «no confíe, verifique» toda fuente de información. Si sabe programar en Python y quiere comprobar las cifras, aquí tiene el programa original que realiza las simulaciones. Si encuentra algún error, cuéntenoslo en los comentarios.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Jul 4 15:34:30 2022
@author: Willyfog
"""
import random
import numpy as np
import matplotlib.pyplot as plt
import statistics
# There are 3 groups of investors:
# 25% of them are excellent and provide alpha=+1%/year
# 50% of them are normal and provide alpha=0%/year
# 25% of them are awful and provide alpha=-1%/year
alpha=0.02
fraction_of_excellent_investors=0.25
fraction_of_normal_investors=0.50
fraction_of_awful_investors=0.25
# Stock market averages
# Fuente: base datos de CRSP, Center for Research in Security Prices),
# de la Reserva Federal de EEUU, via el libro All About Asseet Allocation
# de Rick Ferri).
average_annual_return=0.093
average_annual_volatility=0.181
number_of_investors=20000 # Change this number for different simulations
bin_min=-60.
bin_max=+60
bin_number=31
sigmas=3.2
IS_COLOR=True
if IS_COLOR:
color_excellent='green'
color_normal='orange'
color_awful='red'
else:
color_excellent='black'
color_normal='gray'
color_awful='lightgray'
# Fixing random state for reproducibility
random.seed(110)
# Labels for plotting
label_excellent='Excelentes α=+%1.0f%%' % (alpha*100.)
label_normal='Normales'
label_awful='Malos α=-%1.0f%%' % (alpha*100.)
# Loop to simulations with these number of years
for number_of_years in [1,3,5,10,30]:
# Annual return of excellent investors
number_of_excellent_investors=round(fraction_of_excellent_investors*number_of_investors)
total_return_excellent_investors=np.zeros(number_of_excellent_investors)
for n in range(number_of_excellent_investors):
this_total_return=1.0
for nYear in range(number_of_years):
this_total_return = this_total_return* \
(1.+random.gauss(average_annual_return,average_annual_volatility)+alpha)
total_return_excellent_investors[n]=this_total_return**(1./number_of_years)-1.
# Annual return of normal investors
number_of_normal_investors=round(fraction_of_normal_investors*number_of_investors)
total_return_normal_investors=np.zeros(number_of_normal_investors)
for n in range(number_of_normal_investors):
this_total_return=1.0
for nYear in range(number_of_years):
this_total_return = this_total_return* \
(1.+random.gauss(average_annual_return,average_annual_volatility))
total_return_normal_investors[n]=this_total_return**(1./number_of_years)-1.
# Annual return of awful investors
number_of_awful_investors=round(fraction_of_awful_investors*number_of_investors)
total_return_awful_investors=np.zeros(number_of_awful_investors)
for n in range(number_of_awful_investors):
this_total_return=1.0
for nYear in range(number_of_years):
this_total_return = this_total_return* \
(1.+random.gauss(average_annual_return,average_annual_volatility)-alpha)
total_return_awful_investors[n]=this_total_return**(1./number_of_years)-1.
#--- Display the 3 different histograms side by side
fig, axs = plt.subplots(ncols=3, nrows=1, sharey=True, sharex=True)
fig.subplots_adjust(wspace=0)
this_bin_max=100.*(average_annual_return + alpha + average_annual_volatility*sigmas/np.sqrt(number_of_years))
this_bin_min=100.*(average_annual_return - alpha - average_annual_volatility*sigmas/np.sqrt(number_of_years))
my_bins=np.linspace(this_bin_min,this_bin_max,bin_number)
axs[0].hist(100.*total_return_awful_investors,color=color_awful,bins=my_bins)
axs[0].set_title(label_awful)
axs[0].set_ylabel('Número de Inversores')
axs[1].hist(100.*total_return_normal_investors,color=color_normal,bins=my_bins)
axs[1].set_title(label_normal)
axs[1].set_xlabel('Rentabilidad Anual [%]')
axs[2].hist(100.*total_return_excellent_investors,color=color_excellent,bins=my_bins)
axs[2].set_title(label_excellent)
output_file='histograms_'+str(number_of_years)+'years_3independent.png'
print('Save: '+output_file)
plt.savefig( output_file, dpi=300, transparent=True, bbox_inches='tight' )
plt.close()
#--- Display the 3 histograms stacked
plt.figure()
output=plt.hist(100.*total_return_excellent_investors,color=color_excellent,bins=my_bins,stacked=True,label='Excelentes',histtype='bar',fill=True)
number_of_excellent_investors_in_bin=output[0]
output=plt.hist(100.*total_return_normal_investors,color=color_normal,bins=my_bins,stacked=True,label='Normales',histtype='bar',fill=True)
number_of_normal_investors_in_bin=output[0]
output=plt.hist(100.*total_return_awful_investors,color=color_awful,bins=my_bins,stacked=True,label='Malos',histtype='bar',fill=True)
number_of_awful_investors_in_bin=output[0]
plt.close()
fig, ax = plt.subplots()
my_width=(this_bin_max-this_bin_min)/bin_number
my_linewidth=0.5
plt.bar(my_bins[:-1],number_of_excellent_investors_in_bin,color=color_excellent,width=my_width,edgecolor='white',linewidth=my_linewidth,label=label_excellent)
plt.bar(my_bins[:-1],number_of_normal_investors_in_bin,color=color_normal,width=my_width,bottom=number_of_excellent_investors_in_bin,edgecolor='white',linewidth=my_linewidth,label=label_normal)
plt.bar(my_bins[:-1],number_of_awful_investors_in_bin,color=color_awful,width=my_width,bottom=number_of_excellent_investors_in_bin+number_of_normal_investors_in_bin,edgecolor='white',linewidth=my_linewidth,label=label_awful)
# Reverse the order of the labels in the legend
handles, labels = ax.get_legend_handles_labels()
plt.legend(reversed(handles), reversed(labels))
plt.xlabel('Rentabilidad Anual [%]')
plt.ylabel('Número de Inversores')
output_file='histograms_'+str(number_of_years)+'years_3stacked.png'
print('Save: '+output_file)
plt.savefig( output_file, dpi=300, transparent=True, bbox_inches='tight' )
plt.close()
#--- Display the 3 histograms stacked, only the best quartile/decile
total_return_all_investors = np.concatenate( (total_return_excellent_investors,
total_return_normal_investors,
total_return_awful_investors) )
number_of_fractions=10 # 10=decils, 4=quartils
my_quantiles=statistics.quantiles(total_return_all_investors,n=number_of_fractions)
#my_quantiles=statistics.quantiles(total_return_all_investors,n=4)
#this_label='Quartil'
this_label='Decil'
threshold_best_investors=my_quantiles[-1]
print('number_of_years='+str(number_of_years))
print('threshold_best_investors='+str(threshold_best_investors*100.)+' %')
total_return_excellent_investors_best=total_return_excellent_investors[np.where(total_return_excellent_investors>threshold_best_investors)]
total_return_normal_investors_best =total_return_normal_investors [np.where(total_return_normal_investors>threshold_best_investors)]
total_return_awful_investors_best =total_return_awful_investors [np.where(total_return_awful_investors>threshold_best_investors)]
this_bin_max=round(100.*(average_annual_return + average_annual_volatility*sigmas/np.sqrt(number_of_years)))
this_bin_min_float=threshold_best_investors*100.
# Round to higher integer, to avoid strange histogram
this_bin_min_int=int(this_bin_min_float)
if (this_bin_min_float-this_bin_min_int)<0.5:
this_bin_min=this_bin_min_int+0.5
else:
this_bin_min=this_bin_min_int+1.0
this_bin_number=round((this_bin_max-this_bin_min)*2+1)
my_bins_best=np.linspace(this_bin_min,this_bin_max,this_bin_number)
my_width=(this_bin_max-this_bin_min)/this_bin_number
plt.figure()
output=plt.hist(100.*total_return_excellent_investors_best,bins=my_bins_best,histtype='bar')
number_of_excellent_investors_in_bin=output[0]
output=plt.hist(100.*total_return_normal_investors_best,bins=my_bins_best,histtype='bar')
number_of_normal_investors_in_bin=output[0]
output=plt.hist(100.*total_return_awful_investors_best,bins=my_bins_best,histtype='bar')
number_of_awful_investors_in_bin=output[0]
plt.close()
number_of_best_investors=number_of_investors/number_of_fractions
print('excellent=%5.2f, normal=%5.2f, awful=%5.2f (10%% best)' % (
len(total_return_excellent_investors_best)/number_of_best_investors*100.,
len(total_return_normal_investors_best)/number_of_best_investors*100.,
len(total_return_awful_investors_best)/number_of_best_investors*100. ))
plt.figure()
plt.bar(my_bins_best[:-1],number_of_excellent_investors_in_bin,color=color_excellent,width=my_width,edgecolor='white',linewidth=my_linewidth,label='Excelentes')
plt.bar(my_bins_best[:-1],number_of_normal_investors_in_bin,color=color_normal,width=my_width,bottom=number_of_excellent_investors_in_bin,edgecolor='white',linewidth=my_linewidth,label='Normales')
plt.bar(my_bins_best[:-1],number_of_awful_investors_in_bin,color=color_awful,width=my_width,bottom=number_of_excellent_investors_in_bin+number_of_normal_investors_in_bin,edgecolor='white',linewidth=my_linewidth,label='Malos')
plt.xlim(this_bin_min-0.25,this_bin_max-0.25)
# Reverse the order of the labels in the legend
handles, labels = ax.get_legend_handles_labels()
plt.legend(reversed(handles), reversed(labels))
plt.xlabel('Rentabilidad Anual [%]')
plt.ylabel('Número de Inversores')
plt.title('Mejor '+this_label)
output_file='histograms_'+str(number_of_years)+'years_3stacked_OnlyBest.png'
print('Save: '+output_file)
plt.savefig( output_file, dpi=300, transparent=True, bbox_inches='tight' )
plt.close()
#--- Display the 3 histograms stacked, only the 1% very best
total_return_all_investors = np.concatenate( (total_return_excellent_investors,
total_return_normal_investors,
total_return_awful_investors) )
number_of_fractions=100 # 10=decils, 4=quartils
my_quantiles=statistics.quantiles(total_return_all_investors,n=number_of_fractions)
this_label='1%'
threshold_best_investors=my_quantiles[-1]
print('number_of_years='+str(number_of_years))
print('threshold_best_investors='+str(threshold_best_investors*100.)+' %')
total_return_excellent_investors_best=total_return_excellent_investors[np.where(total_return_excellent_investors>threshold_best_investors)]
total_return_normal_investors_best =total_return_normal_investors [np.where(total_return_normal_investors>threshold_best_investors)]
total_return_awful_investors_best =total_return_awful_investors [np.where(total_return_awful_investors>threshold_best_investors)]
this_bin_max=round(100.*(average_annual_return + average_annual_volatility*sigmas/np.sqrt(number_of_years)))
this_bin_min_float=threshold_best_investors*100.
# Round to higher integer, to avoid strange histogram
this_bin_min_int=int(this_bin_min_float)
if (this_bin_min_float-this_bin_min_int)<0.5:
this_bin_min=this_bin_min_int+0.5
else:
this_bin_min=this_bin_min_int+1.0
this_bin_number=round((this_bin_max-this_bin_min)*2+1)
my_bins_best=np.linspace(this_bin_min,this_bin_max,this_bin_number)
my_width=(this_bin_max-this_bin_min)/this_bin_number
plt.figure()
output=plt.hist(100.*total_return_excellent_investors_best,bins=my_bins_best,histtype='bar')
number_of_excellent_investors_in_bin=output[0]
output=plt.hist(100.*total_return_normal_investors_best,bins=my_bins_best,histtype='bar')
number_of_normal_investors_in_bin=output[0]
output=plt.hist(100.*total_return_awful_investors_best,bins=my_bins_best,histtype='bar')
number_of_awful_investors_in_bin=output[0]
plt.close()
number_of_best_investors=number_of_investors/number_of_fractions
print('excellent=%5.2f, normal=%5.2f, awful=%5.2f (1%% best)' % (
len(total_return_excellent_investors_best)/number_of_best_investors*100.,
len(total_return_normal_investors_best)/number_of_best_investors*100.,
len(total_return_awful_investors_best)/number_of_best_investors*100.) )
plt.figure()
plt.bar(my_bins_best[:-1],number_of_excellent_investors_in_bin,color=color_excellent,width=my_width,edgecolor='white',linewidth=my_linewidth,label='Excelentes')
plt.bar(my_bins_best[:-1],number_of_normal_investors_in_bin,color=color_normal,width=my_width,bottom=number_of_excellent_investors_in_bin,edgecolor='white',linewidth=my_linewidth,label='Normales')
plt.bar(my_bins_best[:-1],number_of_awful_investors_in_bin,color=color_awful,width=my_width,bottom=number_of_excellent_investors_in_bin+number_of_normal_investors_in_bin,edgecolor='white',linewidth=my_linewidth,label='Malos')
plt.xlim(this_bin_min-0.25,this_bin_max-0.25)
# Reverse the order of the labels in the legend
handles, labels = ax.get_legend_handles_labels()
plt.legend(reversed(handles), reversed(labels))
plt.xlabel('Rentabilidad Anual [%]')
plt.ylabel('Número de Inversores')
plt.title('Mejor '+this_label)
output_file='histograms_'+str(number_of_years)+'years_3stacked_OnlyVeryBest.png'
print('Save: '+output_file)
plt.savefig( output_file, dpi=300, transparent=True, bbox_inches='tight' )
plt.close()
# --- The End ---
excelente
Me gustaMe gusta