2012-05-20 11 views
5

Espero que esto no se cierre porque está relacionado con algoritmos que no he podido descifrar (también es bastante largo porque estoy tan confundido acerca de cómo se hace). Básicamente, hace muchos años, solía trabajar en un fondo mutuo y utilizamos diferentes herramientas para seleccionar carteras de optimización, así como para cubrir las existentes. Tomaríamos estos resultados y haríamos nuestras propias modificaciones para luego venderlas a los clientes. Después de que mi empresa se redujo, decidí que quería intentarlo (para crear el software e incluir mis personalizaciones) pero no tengo idea de cómo se generan realmente las combinaciones para el software.¿Cómo generan los portafolios las sugerencias de sus portafolios tan rápidamente cuando las posibilidades son enormes?

Después de 6 meses de intentarlo, estoy aceptando que mi enfoque es imposible. Intenté usar algoritmos de combinación como los del libro de Knuth, así como también hacer combinaciones de bit para tratar de encontrar todas las carteras posibles (lo limité a 30 acciones) en la Bolsa de Nueva York (más de 5.000 acciones). Pero según todos los que he hablado esto me llevará miles de millones de millones de años obtener solo resultados de un día (para mí en una GPU lo detuve después de 2 días de procesamiento directo).

Entonces, ¿qué es lo que me falta? Entraríamos en nuestra tolerancia al riesgo y en la visión del mercado (expectativas de crecimiento del mercado de valores, expectativas de inflación, expectativas de fondos federales, etc.) y nos daría el portafolio ideal (en teoría ...) en unos pocos segundos/minutos. Con miles de posibilidades y cuatrillones de posibles combinaciones de pesos de acciones, ¿cómo pueden calcular los resultados tan rápido (o incluso nada)? Como administrador del sistema, sé que hemos descargado un archivo todos los días (menos de 100 mb y cargado en una base de datos mssql, probablemente solo datos de mercado ... así que no es como si tuviéramos todas las posibilidades. Utilizando mi enfoque anterior obtendría un 5 gig archivo en un min de hacer mi versión del algoritmo de combinación de Knuth) y las aplicaciones funcionaron fuera de línea (por lo que debe haber estado haciéndolo localmente en la computadora de escritorio/laptop no en una supercomputadora masiva en algún lado y tardó uno o dos minutos en ejecutarse.15 minutos fue el más largo para un fondo global que incluye todas las acciones en el mundo). Es muy confuso porque su trabajo requería la correlación de todo el fondo (no creo que solo estuvieran enviando las mejores acciones que precalcularon porque todos obtuvieron resultados diferentes). Entonces, si quería un fondo de 30 acciones que me diera un 2% de rendimiento y tuviera una correlación negativa con el mercado, y tenía una cobertura del 60%, ¿cómo podría el software generar esa cartera de miles de millones de posibilidades tan rápidamente? nota, no estoy preguntando sobre la parte de matemática o finanzas, estoy preguntando cómo fue capaz de generar 30 acciones de todo el mercado que dieron rendimientos del 2% cuando para hacer eso necesitaría conocer los rendimientos de todos los 30 portafolios de acciones (Eso solo lo haría funcionar durante miles de millones de años, ¿no? las otras restricciones lo hacen más complejo).

Entonces, ¿cómo se hace esto programáticamente? Estoy empezando a creer que no están usando el algoritmo de combinación de Knuth para generar todas las posibilidades, sin embargo, sus resultados no parecen seleccionados al azar y la selección individual de las existencias parece pasar por alto la parte de correlación. ¿Cómo pueden tantos softwares de inversión hacer cosas como esta?

+2

"Es un secreto". – bmargulies

Respuesta

3

Es casi seguro que estos algoritmos no generen todas las posibilidades, ya que con razón se observa que sería poco práctico.

La selección de cartera es, sin embargo, muy fácil de hacer con otras técnicas que le darán una muy buena respuesta. Los dos más probables son:

  • Si realiza la simplificación de las hipótesis en torno riesgo/rentabilidad se puede resolver de una cartera óptima matemáticamente (ver http://en.wikipedia.org/wiki/Capital_asset_pricing_model para algunas de las matemáticas)
  • Un algoritmo genético que hace las operaciones de mutación/de cruce en las carteras de muestras aleatorias encontrará una muy buena solución bastante rápido. Puede combinar esto con los enfoques de modelado de estilo Monte-Carlo para comprender el rango de posibles resultados.

Personalmente, probablemente sugeriría el enfoque del algoritmo genético - aunque no es matemáticamente puro, le dará buenas respuestas y debería ser capaz de manejar cualquier restricción que quiera lanzar con bastante facilidad (por ejemplo, número máximo de las acciones en una cartera)

+0

Gracias por la respuesta (después de realizar 6 meses de trabajo en algoritmos combinacionales no pude lograrlo, ese fue mi semi-rant). Voy a pasar la noche leyendo sobre algoritmos genéticos, pero ¿cómo superan el problema de encontrar el portafolio correcto? Por ejemplo, dices que quieres un portafolio de 30 acciones que tenga un rendimiento del 3%. Primero necesita encontrar 30 acciones, luego debe calcular rendimientos del 3% (que es peor que el problema del combo 30 porque tienen valores negativos que amortiguan los retornos de las acciones de mayor retorno. Un + 5% con un -2% daría usted el regreso). –

+0

Lo siento si no lo estoy obteniendo, pero ¿el algoritmo genético no tendría que superar de algún modo ese problema? Si solo hacen algunas, quizás no obtengan los mejores resultados, ¿verdad? –

+0

Tiene que definir una función objetivo para el algoritmo genético. Presumiblemente, si deseaba rendimientos del 3%, en realidad quiere decir "lo más cercano al 3% de devoluciones posible con una varianza mínima". Por lo tanto, podría definir una función objetivo como '- (return - 3%)^2 - (k * varianza)' para alguna constante k, y desarrollar soluciones para maximizar ese valor – mikera

2

La teoría de la cartera moderna es un tema en sí mismo, con libros como "Teoría moderna de la cartera y análisis de inversiones", y una introducción al http://en.wikipedia.org/wiki/Modern_portfolio_theory.

Una forma de resolver los problemas que realmente puede resolver es tratarlo como un problema matemático de optimización. Si tiene un vector que le da la cantidad de cada acción que compra, entonces - bajo varias suposiciones - el retorno es una función lineal de este vector, y el riesgo es una función cuadrática de este vector. Maximizar el rendimiento para un riesgo dado, o minimizar el riesgo para el rendimiento dado, es un problema matemático bien entendido, incluso para un gran número de acciones: http://en.wikipedia.org/wiki/Quadratic_programming.

Un problema práctico con esto es que la respuesta que obtenga probablemente le dirá comprar una fracción de casi todas las acciones en el mercado. Supongo que los programas de la vida real usan alguna heurística de "salsa secreta" que no garantiza la respuesta perfecta, sujeta a una restricción sobre la cantidad de acciones que realmente está preparado para comprar, pero que funciona bastante bien en la práctica. Devolver la respuesta perfecta parece ser un problema difícil: consulte p. Ej. http://arxiv.org/ftp/arxiv/papers/1105/1105.3594.pdf

Cuestiones relacionadas