Full text
1 COMPUTACIÓN CUÁNTICA APLICADA A LAS FINANZAS TRABAJO FIN DE GRADO CURSO 2022-2023 AUTOR CINTIA Mª HERRERA ARENAS DIRECTORES GUILLERMO BOTELLA JUAN ALBERTO ANTONIO DEL BARRIO GARCÍA GRADO EN INGENIERÍA DE COMPUTADORES FACULTAD DE INFORMÁTICA UNIVERSIDAD COMPLUTENSE DE MADRID
2 ÍNDICE Resumen 8 Palabras clave 9 Abstract 9 Keywords 10 Capítulo 1: Introducción 10 1.1. Motivación 10 1.2. Objetivos 11 1.3. Plan de trabajo 12 Capítulo 2: Estado del Arte 12 ● 2.1. Quantum Computing 12 ● 2.2. VQE 15 ● 2.3. Finanzas 17 ● 2.3.1. SMA Strategy 18 ● 2.3.2. Mean-Variance optimization 20 ● 2.3.3. Convex optimization 21 ● 2.3.4. IBM Finance 22 Capítulo 3: Problema con variables binarias 24 Capítulo 4: Estudio de distintos optimizadores 30 ● 4.1. COBYLA 30 ● 4.2. GSLS 33 ● 4.3. L_BFGS_B 35 ● 4.4. NELDER_MEAD 37 ● 4.5. ADAM 40 ● 4.6. CG 42 ● 4.7. SLSQP 43 ● 4.8. TNC 46 ● 4.9. POWELL 48
3 ● 4.10. NFT 51 ● 4.11. Conclusiones. 53 Capítulo 5: Problema con variables enteras 54 Capítulo 6: Problema con acciones reales 57 ● 6.1. Resultados obtenidos. 61 Capítulo 7: Comparación VQE con algoritmos clásicos 64 7.1. Resultados obtenidos 65 Estudio con 27 acciones 66 Estudio con 15 acciones 68 Capítulo 8: Conclusiones y Trabajo Futuro 70 8.1. Conclusiones 70 8.2. Trabajo Futuro 71 Chapter 8: Conclusions and Future Work 72 8.1. Conclusions 72 8.2. Future Work 73 Bibliografía 74
4 ÍNDICE DE FIGURAS Ilustración 1. Esfera de Bloch. 11 Ilustración 2. VQE Esquema I. 13 Ilustración 3. VQE Esquema II. 14 Ilustración 4. SMA Ejemplo. 16 Ilustración 5. Mean-Variance optimization. 17 Ilustración 6. Convex optimization. 18 Ilustración 7. Problema con variables binarias. Ejemplo parámetros iniciales. 20 Ilustración 8. Problema con variables binarias. Modelo. 21 Ilustración 9. Problema con variables binarias. Restricciones. 21 Ilustración 10. Ejemplo alpha=0.05 (Campana de Gauss). 22 Ilustración 11. Problema con variables binarias. Resultados algoritmos clásico. 23 Ilustración 12. Problema con variables binarias. Resultados algoritmo cuántico. 23 Ilustración 13. COBYLA Gráfica (maxiter=100, alpha=0.35). 25 Ilustración 14. COBYLA Gráfica (maxiter=50, alpha=0.35). 25 Ilustración 15. COBYLA Gráfica (maxiter=100, alpha=0.65). 26 Ilustración 16. COBYLA Gráfica (maxiter=100, alpha=0.15). 26 Ilustración 17. GSLS Gráfica (maxiter=100, alpha=0.35). 27 Ilustración 18. GSLS Gráfica (maxiter=70, alpha=0.35). 27 Ilustración 19. GSLS Gráfica (maxiter=80, alpha=0.15). 27 Ilustración 20. GSLS Gráfica (maxiter=80, alpha=0.65). 28 Ilustración 21. L_BFGS_B Gráfica (maxiter=100, alpha=0.35). 29
5 Ilustración 22. L_BFGS_B Gráfica (maxiter=120, alpha=0.35). 29 Ilustración 23. L_BFGS_B Gráfica (maxiter=120, alpha=0.15). 29 Ilustración 24. L_BFGS_B Gráfica (maxiter=120, alpha=0.65). 30 Ilustración 25. NELDER MEAD. Búsqueda del valor mínimo en la función de Himmelblau. 31 Ilustración 26. NELDER_MEAD Gráfica (maxiter=100, alpha=0.35). 31 Ilustración 27. NELDER_MEAD Gráfica (maxiter=60, alpha=0.35). 31 Ilustración 28. NELDER_MEAD Gráfica (maxiter=60, alpha=0.15). 32 Ilustración 29. NELDER_MEAD Gráfica (maxiter=60, alpha=0.65). 32 Ilustración 30. ADAM Gráfica (maxiter=100, alpha=0.35). 33 Ilustración 31. ADAM Gráfica (maxiter=120, alpha=0.35). 33 Ilustración 32. ADAM Gráfica (maxiter=120, alpha=0.15). 34 Ilustración 33. CG Gráfica (maxiter=100, alpha=0.35). 35 Ilustración 34. CG Gráfica (maxiter=120, alpha=0.35). 35 Ilustración 35. SLSQP Gráfica (maxiter=100, alpha=0.35). 36 Ilustración 36. SLSQP Gráfica (maxiter=150, alpha=0.35). 36 Ilustración 37. SLSQP Gráfica (maxiter=120, alpha=0.65). 37 Ilustración 38. SLSQP Gráfica (maxiter=120, alpha=0.15). 37 Ilustración 39. TNC Gráfica (maxiter=100, alpha=0.35). 38 Ilustración 40. TNC Gráfica (maxiter=120, alpha=0.35). 38 Ilustración 41. TNC Gráfica (maxiter=120, alpha=0.15). 39 Ilustración 42. TNC Gráfica (maxiter=120, alpha=0.65). 39 Ilustración 43. POWELL Gráfica (maxiter=100, alpha=0.35). 40 Ilustración 44. POWELL Gráfica (maxiter=90, alpha=0.35). 40 Ilustración 45. POWELL Gráfica (maxiter=90, alpha=0.15). 41
6 Ilustración 46. POWELL Gráfica (maxiter=90, alpha=0.65). 41 Ilustración 47. NFT Gráfica (maxiter=100, alpha=0.35). 42 Ilustración 48. NFT Gráfica (maxiter=130, alpha=0.35). 42 Ilustración 49. NFT Gráfica (maxiter=130, alpha=0.15). 42 Ilustración 50. NFT Gráfica (maxiter=130, alpha=0.65). 43 Ilustración 51. Problema con variables enteras. Ejemplo parámetros iniciales. 44 Ilustración 52. Problema con variables enteras. Modelo. 45 Ilustración 53. Problema con variables enteras. Resultados algoritmo cuántico. 46 Ilustración 54. Problema con acciones reales. Ejemplo IBEX acciones. 47 Ilustración 55. Problema con acciones reales. Ejemplo IBEX acciones gráfica. 48 Ilustración 56. Problema con acciones reales. Resultados gráfica. 50 Ilustración 57. Problema con acciones reales. Resultados finales. 50 Ilustración 58. Problema con acciones reales. Resultados iteración. 51 Ilustración 59. Comparación VQE con algoritmos clásicos (27 acciones I).53 Ilustración 60. Comparación VQE con algoritmos clásicos (27 acciones II). 53 Ilustración 61. Comparación VQE con algoritmos clásicos (27 acciones III). 54 Ilustración 62. Comparación VQE con algoritmos clásicos (15 acciones I).54 Ilustración 63. Comparación VQE con algoritmos clásicos (15 acciones II). 55 Ilustración 64. Comparación VQE con algoritmos clásicos (15 acciones III). 55
7 Resumen En este trabajo fin de grado, se aborda el desafío de asignar eficientemente un presupuesto limitado a una serie de acciones financieras para maximizar los beneficios, utilizando el algoritmo de optimización variacional cuántica (VQE) y se estudian diferentes optimizadores. Se desarrollan tres versiones del algoritmo VQE para abordar esta problemática de manera integral. En la primera versión, se emplea un enfoque binario, donde se decide si se escoge o no una acción. En la segunda versión, las acciones se codifican con un peso que indica su proporción. Por último, en la versión final (híbrida), se extraen los datos del historial de acciones de IBM y se combinan los dos enfoques anteriores. En esta versión, se aplica inicialmente el algoritmo de variables binarias para seleccionar las acciones óptimas y, posteriormente, se aplica el algoritmo sobre variables enteras para distribuir el presupuesto (Budget) de manera óptima entre las acciones escogidas. El presente TFG busca aprovechar la capacidad de los computadores cuánticos reales y los métodos clásicos de optimización para abordar problemas financieros complejos, ofreciendo una solución innovadora y prometedora en el campo de las finanzas cuánticas. Palabras clave Computación cuántica, VQE, finanzas, banco, acciones.
8 Abstract In this TFG, we study how to efficiently distribute a limited budget to financial stocks to maximize benefits, using the quantum variational optimization algorithm (VQE), and the study of different optimizers. There are three versions of the VQE algorithm developed to comprehensively approach this issue. In the first version, a binary approach is used, where it is decided if a stoke is or not chosen. In the second version, the stokes are coded with a weight indicating their proportion. Finally, in the final version (hybrid), the IBM stock history data is extracted, and the two previous approaches are combined. In this version, we first apply the binary variables algorithm to select the optimal stocks and, later, we apply the algorithm on integer variables to distribute the budget optimally among the chosen actions. This TFG looks to take advantage of the capacity of real quantum computers and classical optimization methods to approach complex financial problems, offering an innovative and promising solution in the sector of quantum finance. Keywords Quantum computing, VQE, finance, bank, stocks.
9 Capítulo 1: Introducción En este capítulo se describe cómo surge la idea de necesitar un programa que ayude y guíe al usuario a la hora de invertir en acciones. Para ello, se recurre a la computación cuántica que, como se explicará más adelante, presenta una mayor ventaja ante la computación clásica. Además, se detallan los objetivos para realizar este proyecto. 1.1. Motivación En este proyecto se busca encontrar un programa que ayude al usuario a la elección sobre qué acciones invertir y de qué manera hacerlo. Se ha propuesto apostar por un algoritmo cuántico, debido a los beneficios que presenta. La computación cuántica presenta una mayor potencia de cálculo y, junto a la superposición y otras propiedades que se explicarán en capítulos posteriores, puede romper con muchos algoritmos de ciberseguridad actuales. Por ello, cada vez más empresas están empezando a interesarse en incorporar tecnologías criptográficas que protejan la información tanto en computadoras clásicas como cuánticas. Además, gracias al escalado que los computadores cuánticos presentan, son capaces de explorar con más facilidad el conjunto de todas las soluciones posibles. Esto es útil en el ámbito de las finanzas, en la que influyen múltiples dimensiones para tener en cuenta para tomar la mejor decisión.
16 ▪ SMA Strategy ▪ Mean-Variance optimization ▪ Convex optimization A continuación, se explica en qué consiste cada uno. ● 2.3.1. SMA Strategy Los datos históricos relacionados con el precio de mercado de un activo tienen indicios de estar relacionados con cómo variará su precio en un futuro, por tanto, merece la pena prestar atención a su historial a la hora de invertir en acciones. La estrategia SMA es una herramienta de análisis técnico ampliamente utilizada para predecir tendencias de precios futuras mediante el análisis de datos de precios históricos. El SMA es el precio medio de mercado de un valor durante un período específico. Se le conoce como el 'moving' average ya que se traza en un gráfico barra por barra y forma una línea que se mueve a lo largo del gráfico a medida que cambia el precio promedio. El SMA se calcula sumando el precio de un valor durante un período y luego dividiendo esa cifra por el número de períodos. Por ejemplo, sumar los precios de cierre de un valor del mes anterior y luego dividir el total por el número de días del mes. La fórmula para un promedio móvil simple es: SMA = (A 1 + A 2 + A 3 + … + A N ) N
17 Ai = el precio del activo en el período i N = el número de períodos totales (personalizable) Ilustración 4. SMA Ejemplo. SMA beneficia a los inversores a corto y largo plazo. Suaviza la volatilidad promediando el precio del valor durante un período determinado y ayuda a identificar tendencias. ● 2.3.2. Mean-Variance optimization La optimización de la varianza media es un elemento clave de la inversión basada en datos . Es el proceso de medir el riesgo de un activo frente a su rendimiento probable e invertir en función de esa relación riesgo/rendimiento. Un análisis de media-varianza es una herramienta que los inversores utilizan para ayudar a distribuir el riesgo en sus carteras , que consta de dos elementos clave: riesgo (risk), expresado como varianza (cuánto ha cambiado el precio del activo y qué tan rápido lo ha hecho durante un período de tiempo), y recompensa (reward), expresada como retorno.
18 En él, el inversor mide el riesgo de un activo, y luego lo compara con el rendimiento probable del activo. El objetivo de una optimización de varianza media es maximizar la recompensa de una inversión en función de su riesgo. Una cartera optimizada debería generar el mayor rendimiento posible en función de la cantidad de riesgo, y generar la menor cantidad de riesgo para el retorno. Ilustración 5. Mean-Variance optimization. ● 2.3.3. Convex optimization A diferencia de los análisis descriptivos y predictivos, que se centran en comprender datos pasados y predecir resultados futuros, los análisis prescriptivos tienen como objetivo optimizar los procesos de toma de decisiones. La optimización convexa es un subcampo de la optimización matemática que estudia el problema de minimizar funciones convexas sobre conjuntos convexos. Muchas clases de problemas de optimización convexa admiten algoritmos de tiempo polinomial, mientras que la optimización matemática es en general NP-difícil .
19 Un problema de optimización convexa es un problema de optimización en el que la función objetivo es una función convexa y el conjunto factible es un conjunto convexo. Su objetivo es encontrar un punto que maximice o minimice la función objetivo. En general, se cumple que: ▪ todo mínimo local es un mínimo global. ▪ el conjunto óptimo es convexo. ▪ si la función objetivo es estrictamente convexa, entonces el problema tiene como máximo un punto óptimo. Ilustración 6. Convex optimization. ● 2.3.4. IBM Finance IBM es una de las empresas que facilita computadores cuánticos al usuario. De esta forma, se pueden ejecutar programas ya sea en un entorno de simulación, o computador real (es decir, con ruido). IBM Finance es una parte de IBM que se encarga de integrar, organizar y supervisar las transacciones financieras. Dentro de IBM, podemos encontrar qiskit, que es un kit de desarrollo de software creado por IBM para trabajar con computadoras cuánticas a nivel de circuitos, pulsos y algoritmos.
20 Si nos vamos al sector de finanzas, se encuentra qiskit finance, que es un framework de código abierto que contiene componentes de incertidumbre para problemas de acciones/valores, aplicaciones para problemas financieros, como la optimización de cartera, y proveedores de datos para obtener datos reales o aleatorios para experimentos financieros.
21 Capítulo 3: Problema con variables binarias Un problema con variables binarias es aquel en el que las variables enteras están restringidas entre los valores 0 y 1, representando el 0 la opción de no escoger una variable, y 1 si se ha escogido. Como primer acercamiento al problema, se verá un enfoque simplificado, en el cual se tiene un número pequeño de acciones (en este caso 6), y se tiene que decidir si se escoge una acción o no (0 o 1). El algoritmo es el siguiente: Primero, se indican las variables iniciales y las restricciones del problema y lo que se quiere (en este caso, que el número de acciones a escoger sea igual al Budget). A continuación, se ejecutará el circuito n veces (haciendo uso del VQE) para conseguir el resultado óptimo. Como se ha mencionado, el número de acciones es 6, y el Budget 3. Cabe destacar que, en este caso, al ser un problema de variables binarias, el Budget es, a parte del dinero que se dispone, el número de acciones a escoger. Para conseguir quedarse con la mejor solución, se recurre a la variable “penalty” (o penalización), la cual “premia” los resultados buenos, de esta manera, se descartan soluciones lejanas a la deseada. La variable mu (𝜇), representa los retornos esperados de los activos, y sigma las covarianzas (o desviación típica) entre los activos. En la Ilustración 7 se puede observar un posible ejemplo de cómo serían los parámetros iniciales del problema.
22 Ilustración 7. Problema con variables binarias. Ejemplo parámetros iniciales. A continuación, se puede ver cómo se crea el modelo (clásico) del problema. En dicho modelo, se indican las restricciones del problema. En este caso, se limita cada variable entre 0 y 1, ya que, como se ha explicado, en este primer modelo solo importa escoger o no una acción. También se indica que la suma del precio de todas las acciones debe ser igual al Budget, ya que, como se trabaja con variables binarias y se busca maximizar el resultado, esto solo se consigue si el número de acciones seleccionadas es igual al Budget. Ilustración 8. Problema con variables binarias. Modelo.
23 Finalmente, se crea el problema cuadrático y se muestra como quedarían los parámetros iniciales. Aquí se puede ver como se detallan las restricciones que se indican, así como el cálculo para poder conseguir el máximo beneficio. Ilustración 9. Problema con variables binarias. Restricciones. Antes de ejecutar el algoritmo cuántico, se debe aplicar el penalty y convertir el problema en un problema linear. A continuación, se procede a ejecutar el VQE. Como se sabe, los algoritmos cuánticos requieren ejecutarse varias veces, ya que, debido al ruido, los resultados pueden verse afectados, y tenemos que quedarnos con el valor que más veces se repita, ya que, ese tendrá más probabilidad de ser el
24 correcto. En este caso, se lanza 100 veces. En futuras versiones se ejecutará un mayor número de veces. Como optimizador, escogemos el COBYLA (más adelante se mostrará un estudio de cómo actúa el algoritmo con distintos optimizadores). Cabe destacar que, en esta primera aproximación, se lanza el circuito en un backend local. El alpha escogido para este problema es de 0.35 (cuanto porcentaje de los extremos de la campana Normal de Gauss despreciamos). Ilustración 10. Ejemplo alpha=0.05 (Campana de Gauss). Se aplica el VQE con los parámetros indicados y, se calcula el valor mínimo. Como se puede observar, los resultados obtenidos con el VQE y el circuito clásico son parecidos. Al ser un problema “pequeño” (problema binario y número de acciones = 6), se puede ejecutar clásicamente, para tener un referente del resultado óptimo, y ver cuánto se ha alejado con el algoritmo cuántico. Resultados algoritmo clásico:
25 Ilustración 11. Problema con variables binarias. Resultados algoritmos clásico. Resultados algoritmo cuántico: Ilustración 12. Problema con variables binarias. Resultados algoritmo cuántico. Como se puede observar, el valor mínimo coincide con la búsqueda realizada en un algoritmo clásico. De estos resultados se puede concluir que, para el Budget dado, la solución óptima será escoger las acciones x0, x1, x3 y, descartar x2 y x5.
32 ▪ Con maxiter = 120 y variando alpha. Conclusión: Si se disminuye alpha por debajo de 0.25, no encuentra la solución. Como se puede apreciar, la gráfica es más inestable cuanto mayor sea alpha. Ilustración 23. L_BFGS_B Gráfica (maxiter=120, alpha=0.15). Ilustración 24. L_BFGS_B Gráfica (maxiter=120, alpha=0.65). ▪ Variando alpha y maxiter. Conclusión: Con alpha = 0.15, encuentra la solución con un maxiter entre 80 y 90. Cuanto mayor sea alpha, más tarda en ejecutarse.
33 ● 4.4. NELDER_MEAD Se usa para optimizar un circuito que no requiere restricciones (debido a esto, no podemos aplicarlo en nuestro problema). (Nelder, 1965) Consiste en encontrar el mínimo de una función objetivo en un espacio multidimensional. En la Ilustración 25 se muestra el proceso para encontrar el valor mínimo. Ilustración 25. NELDER MEAD. Búsqueda del valor mínimo en la función de Himmelblau. ▪ Con alpha = 0.35 y variando maxiter. Conclusión: Con maxiter entre 50 y 60 encuentra la solución (mejor que GSLS). Tarda en ejecutarse parecido al GSLS.
34 Ilustración 26. NELDER_MEAD Gráfica (maxiter=100, alpha=0.35). Ilustración 27. NELDER_MEAD Gráfica (maxiter=60, alpha=0.35). ▪ Variando alpha y maxiter. Conclusión: Parece que no afecta tanto el valor de alpha, si no el del maxiter a la hora de encontrar la solución. Ilustración 28. NELDER_MEAD Gráfica (maxiter=60, alpha=0.15).
35 Ilustración 29. NELDER_MEAD Gráfica (maxiter=60, alpha=0.65). ● 4.5. ADAM Este optimizador basado en gradientes se basa en estimaciones adaptativas de momentos de orden inferior. Además, no necesita mucha memoria y es invariable al cambio de escala diagonal de los gradientes. Dicho algoritmo es usado en redes neuronales para mejorar el proceso de aprendizaje de un modelo. Este utiliza una estimación del momento y de la magnitud de los gradientes anteriores para actualizar los parámetros del modelo en cada iteración, adaptando la tasa de aprendizaje de cada parámetro individualmente en función de su estimación del momento y de la magnitud del gradiente. De esta forma, se consigue que el modelo se ajuste de manera más eficiente a los datos de entrenamiento, aumentando su precisión de predicción. (Raul Murillo, 2020) ▪ Con alpha = 0.35 y variando maxiter. Conclusión: Con maxiter entre 110 y 120 encuentra la solución. Tarda más en ejecutarse que otros optimizadores (5 min).
36 Ilustración 30. ADAM Gráfica (maxiter=100, alpha=0.35). Ilustración 31. ADAM Gráfica (maxiter=120, alpha=0.35). ▪ Variando alpha y maxiter. Conclusión: Con alpha menor de 0.20 no encuentra la solución. Ilustración 32. ADAM Gráfica (maxiter=120, alpha=0.15).
37 ● 4.6. CG CG es la abreviatura de Conjugate Gradient optimizer. CG es un algoritmo para la solución numérica de sistemas de ecuaciones lineales cuyas matrices son simétricas y definidas positivas. Dicho algoritmo iterativo utiliza la suposición inicial para generar una secuencia de mejoras de soluciones aproximadas para un problema, en el cual, cada aproximación se deriva de las anteriores. Este optimizador es bueno para problemas sin restricciones (debido a esto, no lo podemos aplicar a nuestro problema). (Quintana, 2022) ▪ Con alpha = 0.35 y variando maxiter. Conclusión: Con maxiter entre 100 y 110 encuentra la solución. Tarda más que otros optimizadores en ejecutarse. Ilustración 33. CG Gráfica (maxiter=100, alpha=0.35).
38 Ilustración 34. CG Gráfica (maxiter=120, alpha=0.35). ▪ Variando alpha y maxiter. Conclusión: Parece que no afecta tanto el valor de alpha, si no el del maxiter a la hora de encontrar la solución. ● 4.7. SLSQP SLSQP es la abreviatura de Sequential Least SQuares Programming optimizer, es decir, se basa en los cuadrados mínimos para encontrar la solución mínima. (Hwang, 1989) Este optimizador consiste en minimizar una función de varias variables con cualquier combinación de límites, restricciones de igualdad y desigualdad. SLSQP se suele usar para problemas en los que la función objetivo y las restricciones son dos veces diferenciables continuamente. Sin embargo, este optimizador realiza una conversión de los valores en flotantes, lo que hace que trabaje con valores infinitos (aumenta el número de qubits). ▪ Con alpha = 0.35 y variando maxiter. Conclusión: Con maxiter entre 110 y 120 encuentra la solución. A mismo alpha que en COBYLA, necesitas mayor maxiter para encontrar la solución.
39 Ilustración 35. SLSQP Gráfica (maxiter=100, alpha=0.35). Ilustración 36. SLSQP Gráfica (maxiter=150, alpha=0.35). ▪ Con maxiter = 120 y variando alpha. Conclusión: A diferencia de otros optimizadores como el COBYLA, parece que, si el maxiter es lo suficientemente grande, el alpha no afecta para encontrar la solución.
40 Ilustración 37. SLSQP Gráfica (maxiter=120, alpha=0.65). Ilustración 38. SLSQP Gráfica (maxiter=120, alpha=0.15). ▪ Variando alpha y maxiter. Conclusión: Si se disminuye alpha, podemos encontrar la solución con menor maxiter. ● 4.8. TNC TNC es la abreviatura de Truncated Newton, es decir, se basa en un algoritmo de Newton truncado para minimizar una función con variables sujetas a límites. (Stephen G. Nash, 2000) Este optimizador utiliza información de gradiente, al igual que el CG. Se diferencia del optimizador CG, en que este envuelve una
41 implementación en C y permite que cada variable tenga límites superiores e inferiores. ▪ Con alpha = 0.35 y variando maxiter. Conclusión: Con maxiter entre 110 y 120 encuentra la solución. Necesita mayor maxiter para encontrar la solución (peor que COBYLA y GSLS), y tarda más que el COBYLA en ejecutarse. Ilustración 39. TNC Gráfica (maxiter=100, alpha=0.35). Ilustración 40. TNC Gráfica (maxiter=120, alpha=0.35). ▪ Variando alpha y maxiter. Conclusión: Disminuyendo alpha, se puede encontrar la solución con un menor maxiter.
48 Nuevamente, se indican las restricciones para el algoritmo. Al trabajar con un Budget de 16, se le indicará que la suma de las acciones no debe ser superior a éste. Para poder adaptarse al número de qubits, se limitará el valor a escoger de cada acción entre 0 y Budget -1. Se realiza esta resta porque en caso contrario, se necesitaría un qubit más para poder representar el valor. El resto de las restricciones es igual que en la anterior versión. A diferencia de la versión anterior, en esta no se podrá ejecutar el código de un algoritmo clásico para ver cuál sería el resultado óptimo y comparar resultados, ya que, requeriría mucho tiempo debido a la cantidad de cómputo (ventaja del algoritmo cuántico frente al clásico). Ilustración 52. Problema con variables enteras. Modelo.
49 De la misma forma que se hacía en la versión binaria, se debe adaptar el circuito, y convertirlo a un problema lineal y eliminar desigualdades. De forma análoga a la versión anterior, se elige el optimizador (en este caso COBYLA). Se procede a lanzar el circuito. Todo es igual a la versión anterior, excepto que aquí se ha lanzado en un simulador (ibmq_qasm_simulator, de 32 qubits) en vez de ejecutarlo en local. Se procede a “deshacer” el cambio que se hizo al principio sobre ajustar el Budget, y queda la cantidad a invertir en cada acción. Ilustración 53. Problema con variables enteras. Resultados algoritmo cuántico.
50 Capítulo 6: Problema con acciones reales En esta versión final, los datos son extraídos del historial de acciones de IBM. Se combinan la primera y segunda versión. Primero se aplica el algoritmo de variables binarias para escoger las acciones y, después, se aplica el algoritmo sobre variables enteras para la repartición del Budget. Hay que resaltar, que es necesario tener una cuenta en IBM e identificarse con el ID de la cuenta de IBM para poder lanzar el código. Primero se extraen los datos sobre las acciones. Se usan los datos sobre la primera mitad del 2021. En este caso, se escoge un Budget de valor 5 (número de acciones máximo a escoger). A continuación, se muestran los datos obtenidos en formato tabla y diagrama, para poder apreciar cómo cambió cada acción a lo largo de los meses. Ilustración 54. Problema con acciones reales. Ejemplo IBEX acciones.
51 Ilustración 55. Problema con acciones reales. Ejemplo IBEX acciones gráfica. A continuación, se explica el algoritmo con el VQE. La función recibe como parámetros de entrada el Budget, maxiter (número de iteraciones), alpha y el factor de riesgo (probabilidad de que un rendimiento sea menor a lo esperado, es decir, la inversión realizada no proporcione la rentabilidad esperada o que la pérdida supere la inversión inicial).
52 En la primera fase (parte binaria), se aplica el modelo con los valores iniciales de mu y sigma, y se aplica el VQE. De esta forma, el algoritmo escogerá las acciones candidatas para la siguiente fase (parte entera). Por tanto, para cada mes, el algoritmo seleccionará 5 de entre todas las acciones que reciba, escogiendo las mejores que crea que pueden dar mejor beneficio. Como se ha explicado, ahora nos debemos quedar solo con las acciones escogidas en la parte binaria. Por tanto, se recalcula mu y sigma y el número de acciones para la siguiente fase. Para ello, se calculan dichos valores para el número de acciones candidatas de la fase anterior. Se vuelve a aplicar el modelo con el nuevo valor de sigma, mu y número de acciones, y se aplica el VQE. Ahora que nos hemos quedado con los datos de las 5 acciones que interesan, el algoritmo repartirá el Budget de la forma más rentable y beneficiosa posible. Al igual que se hizo en la versión de variables enteras, se debe “deshacer” el cambio para poder obtener los resultados correctos. Se procede a recalcular las acciones totales, es decir, el número de acciones vuelve a ser el original. ● 6.1. Resultados obtenidos. Se ha ejecutado el código anterior con los siguientes parámetros: ▪ alpha = 0.35 ▪ budget = 5 ▪ Optimizador: COBYLA
53 ▪ Maxiter (número de vueltas): 500 El resultado final y la gráfica son los siguientes: Ilustración 56. Problema con acciones reales. Resultados gráfica. Ilustración 57. Problema con acciones reales. Resultados finales.
54 De la Ilustración 57 se pueden observar datos como las ganancias/pérdidas al año, las ganancias que se consiguieron en el mejor mes, el período en el que se lanza el algoritmo, etc. Por último, se muestra una sección de la ejecución del código, para ver los resultados intermedios. Ilustración 58. Problema con acciones reales. Resultados iteración. La Phase 1 corresponde con los resultados obtenidos en la selección de acciones mediante acciones binarias. Se puede observar un array. Cada casilla corresponde a una acción, respectivamente. Si el valor es 1, la acción fue elegida.
55 Por el contrario, la Phase 2 corresponde con los resultados obtenidos en la parte de acciones enteras. Aquí, el algoritmo decidía que peso dar a cada acción (cuánto dinero repartir). Dicho proceso, se repite hasta completar el periodo de tiempo indicado. Siendo un mes por cada par de fases.
56 Capítulo 7: Comparación VQE con algoritmos clásicos En este apartado, se ejecuta el algoritmo anterior junto con varios algoritmos clásicos, y se comparan los resultados. Por el elevado tiempo de ejecución, se ha tenido que disminuir el Budget a 4 (número de acciones a escoger en la fase del VQE). Como se explicó en capítulos anteriores, los algoritmos clásicos con los que se han realizado el estudio del VQE han sido los siguientes: ▪ SMA Strategy ▪ Mean-Variance optimization ▪ Convex optimization Se ha ejecutado el VQE con los siguientes parámetros: ▪ alpha = 0.35 ▪ budget = 4 ▪ Optimizador: COBYLA ▪ Maxiter (número de vueltas): 250 7.1. Resultados obtenidos Se han realizado pruebas en distintos escenarios: usando 27 acciones y 15 acciones del historial de IBM. Cabe destacar que, para las ejecuciones de 27 acciones, el tiempo ha sido de 3-4 días, mientras que en el caso de 15 acciones el tiempo de ejecución ha sido de 1-2 días.
57 El backend utilizado en ambos casos ha sido ibmq_qasm_simulator, y se han realizado las pruebas en entornos sin ruido. A continuación, se muestran algunos de los resultados obtenidos. Estudio con 27 acciones En las siguientes gráficas se pueden apreciar los siguientes algoritmos, VQE (rojo), SMA Strategy o above50sma (azul), Convex optimization (verde), Mean-Variance optimization o classic optimizar (naranja). Ilustración 59. Comparación VQE con algoritmos clásicos (27 acciones I). En esta gráfica se puede apreciar cómo el VQE (rojo) predice de forma correcta en qué acciones invertir comparado con los otros algoritmos clásicos e, incluso, está por encima en algunos meses.
64 Extend/decrease the number of stocks in the IBM selection, and study how the algorithms behave. Make changes to code parameters such as alpha, risk factor, maxiter, etc. In case of having a powerful computer, the number of stocks to choose (budget) could be increased, although we are currently limited by the number of qubits that they offer us.
65 Bibliografía Carrascal de las Heras, G., Hernamperez Manso, P., Botella, G., & del Barrio, A. A. (2023). Backtesting quantum computing algorithms for portfolio optimization. TechRxiv. Preprint . Carrascal, G. d. (2021). First experiences of teaching quantum computing. J Supercomput 77, 2770–2799 . Carrascal, G. R. (2023). Differential Evolution VQE for Crypto-currency Arbitrage. Quantum Optimization with many local minima. Eric R. Johnston, N. H.-S. (2019). Programming Quantum Computers, 1st edition, O’Reilly, . Gines Carrascal, G. B. (2023). EPJ Quantum Technol., 10 1, 13. Grover., L. K. (1996). A fast quantum mechanical algorithm for database search. In Proceedings of the twenty-eighth annual ACM symposium on Theory of Computing (STOC '96). Association for Computing Machinery, New York, NY, USA, 212–219. Hidary, J. D. (2019). Quantum Computing: An Applied Approach, 1st edition, Springer. Jules Tilly, H. C. (2022). The Variational Quantum Eigensolver: A review of methods and best practices, Physics Reports, Volume 986. Pages 1-128. Quintana, D. M. (2022). “Leveraging Posits for the Conjugate Gradient Linear Solver on an Application-Level RISC-V Core,” KTH Royal Institute of Technology, Tech. Rep.,. Raul Murillo, A. A. (2020). Deep PeNSieve: A deep learning framework based on the posit number system, Digital Signal Processing, Volume 102, 102762. Shor, P. (1995). Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer. SIAM Rev., 41, 303-332. Nesterov, Y. and Spokoiny, V. (2017) Random gradient-free mini-mization of convex functions. Foundations of Computa-tional Mathematics, 17(2):527–566.
66 Gonglin Yuan, Xiwen Lu, (2011) An active set limited memory BFGS algorithm for bound constrained optimization, Applied Mathematical Modelling, Volume 35, Issue 7, Pages 3561-3573, ISSN 0307-904X, Nelder, J.A. and Mead, R. (1965), “A simplex method for function minimization”, Comput. J., 7, pp. 308–313 D.M. Hwang, C.T. Kelley, (1989) Sequential Quadratic Programming for Parameter Identification Problems, IFAC Proceedings Volumes, Volume 22, Issue 4, Pages 259-263, ISSN 1474-6670, Stephen G. Nash, (2000) A survey of truncated-Newton methods, Journal of Computational and Applied Mathematics, Volume 124, Issues 1–2, Pages 4559, ISSN 0377-0427 Vassiliadis, V.S., Conejeros, R. (2001). Powell Method . In: Floudas, C.A., Pardalos, P.M. (eds) Encyclopedia of Optimization. Springer, Boston, MA. Nakanishi, K. M., Fujii, K., & Todo, S. (2020). Sequential minimal optimization for quantum-classical hybrid algorithms. Physical Review Research, 2(4), 043158. Gines Carrascal, G. B. (2021) Paper: Portfolio using COBYLA Optimizer.
67