1 votos

¿Cómo generar una serie aleatoria verdadera que sume 1?

Así que, como dice el título, estoy tratando de generar una serie aleatoria verdadera que sume 1. En esencia, esto debería ser muy fácil ¿no? Bueno, tengo muchos problemas. Esto es lo que necesito: 20 clases de activos, que deben sumar el 100% de una cartera. Todas las clases de activos deben devolver variables aleatorias entre 0 y 100. Hasta ahora, he generado 19 variables aleatorias entre 0 y 1, y luego he limitado mis resultados para conseguir que sumen 1 (bastante simple, simplemente ordena tus series, luego resta tus números intermedios entre sí y resta tu último número de 1, esto limita todos tus resultados a 1 de una manera aleatoria).

Mi problema aquí, es que haciendo esto casi nunca se creará una situación en la que tengo por ejemplo el 90% en la clase de activos 1, o 9 o lo que sea. Al generar 20 clases, esto obliga a que todas las clases sean relativamente pequeñas todo el tiempo.

Me he estado devanando los sesos para encontrar formas de evitarlo, ya sea mediante la conexión en cascada de las series aleatorias, barajando el orden, etc. Pero siempre acabo con un sesgo u otro. No me imagino que sea la primera persona que necesita este tipo de distribución aleatoria, así que imagino que hay una solución por ahí, pero no la encuentro.

Cualquier ayuda será muy apreciada. Como referencia, necesito esto para una simulación tipo Montecarlo que estoy ejecutando con Excel y un módulo de optimización de primera línea. Estoy abierto a hacer esto en Matlab si es más eficiente también.

En última instancia, me gustaría generar 1 millón o más de estas carteras aleatorias y medir sus resultados.

Gracias

1voto

Shabaz Puntos 403

Dices en un comentario "lo que quiero decir es que quiero encontrar en mis 1 millón de escenarios una serie en la que tenga el 99% en la clase de activos 1, y sólo el 1% en todas las demás series, otra en la que tenga el 85% en la clase 5 y el 15% en todas las demás series, etc. En otras palabras, necesito generar 20 series de 1 millón de variables que tengan un valor máximo en torno al 100% y un valor mínimo en torno al 0%"

Puedes hacerlo, sólo tienes que sacar un número al azar de $.1$ a $1$ como el máximo invertido en una clase. A continuación, distribuya el resto en otras clases, limitando cada una de ellas a menos de $0.1$ o el máximo del primer paso. Esto cumple con lo que dices, pero luego puedes quejarte de que no simula dos clases que son casi $50\%$ cada uno y todos los demás son pequeños. El problema es que no has definido claramente el espacio que quieres muestrear. Una vez que lo hagas, podrás generar asignaciones que cumplan el requisito y desechar todo el resto.

El teorema del límite central dice que se tenderá a asignar más o menos la misma cantidad a cada clase si se toma un sobre aleatorio $[0,1]$ para cada clase y luego normalizar. Se puede "mejorar" esto empezando con una distribución con picos en los extremos para aumentar la varianza. La verdadera solución es pensar en la distribución que quieres.

0voto

Gore Hill Puntos 1

En primer lugar, no entiendo qué son las clases de activos. Pero lo que puedo decirte es: si todas tus variables aleatorias son independientes, no puedes esperar que su suma sea igual a un número dado porque es un evento menos probable. Puedes hacer que tengan una expectativa matemática de ser un número determinado, pero eso no significa que cuando generes valores para ellas, su suma sea igual a su expectativa matemática.

En concepto, hay que suponer que una de las variables es dependiente para que puedan sumar e igualar un número determinado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X