Encabezado Facultad de Ciencias
Presentación

Actuaría (plan 2015) 2021-1

Optativas, Seminario de Finanzas I

Grupo 9271, 150 lugares. 127 alumnos.
Seminario de Finanzas I: Finanzas Cuantitativas con Python
Profesor Mauricio Labadie Martínez lu mi vi 9 a 10
Ayudante Alejandro Hérnandez Cuevas ma ju 9 a 10
 

Seminario de Finanzas I: Finanzas Cuantitativas con Python

A los alumnos oficialmente inscritos:

  1. Si aún no han hecho su pre-inscripción y/o no han ingresado al servidor de Discord del curso, contacten al ayudante y/o el profesor a nuestros correos electrónicos @ciencias
  2. Los que lo deseen y necesiten, tendrán acceso libre a Datacamp durante el curso: click aquí para ver los cursos ofrecidos por Datacamp

Recursos didácticos:

  1. El curso se da en streaming en tiempo real por Twitch los Lunes, Miércoles y Viernes de 9 a 10 am: canal "mevaquant"
  2. Los videos de los streams se suben el mismo día a YouTube: canal "Finanzas Cuantitativas Py"
  3. Hay un servidor privado para el curso en Discord: ahí se encuentran todos los recursos necesarios (chats en tiempo real, links, material del curso, etc)
  4. En el servidor de Discord se harán los avisos, se resolverán dudas en tiempo real y se abrirán foros de discusión
  5. Los archivos de código en Python y de datos de mercado en csv están en GitHub: canal "finanzascuantitativasfc"

Criterio de evaluación:

  1. Cinco tareas prácticas de programación en Python
  2. Cada tarea contará 20% de la nota final

Objetivos:

  1. Aprender a programar y a hacer análisis de datos con Python
  2. Aplicar conocimientos de Finanzas Cuantitativas, en especial la optimización de portafolios, en el ámbito práctico de la modelación financiera en Python

Asignaturas antecedentes obligatorias. El seminario es mínimo de quinto semestre y exige las siguientes materias:

  1. Algebra Lineal I
  2. Cálculo Diferencial e Integral III / Matemáticas para Ciencias Aplicadas II
  3. Probabilidad II
  4. Programación

Asignaturas antecedentes recomendadas. Llevar el seminario en séptimo semestre es ideal por las materias siguentes:

  1. Inferencia Estadística / Estadística I
  2. Mercados Financieros y Valuación de Instrumentos
  3. Métodos Cuantitativos en Finanzas
  4. Procesos Estocásticos I
  5. Carteras de Inversión

Conocimientos y herramientas necesarios:

  1. No es necesario que el alumno conozca Python o Finanzas de antemano: el curso es auto-contenido en estas dos áreas
  2. Es indispensable una primera experiencia en programación (Python, Java, C#, C++) y/o manejo de software científico (R, Matlab, Octave)

Temario:

  1. Introducción a Python:
    1. Instalación de Python: Anaconda, Spyder y librerías utiles
    2. Cómo correr programas en Python: “hello world”
  2. Distribuciones en Python:
    1. Cálculo de funciones estadísticas, momentos, percentiles y Valor en Riesgo (VaR)
    2. Visualización de datos en Python: histogramas
    3. Tests de Normalidad o Gaussianidad: Jarque-Bera
    4. Los límites del p-value y los tests estadísticos: cuando una distribución normal falla el test de normalidad
  3. Datos de mercado en Python:
    1. Recuperar datos de mercado: descargar series de tiempo
    2. Operaciones con series de tiempo: dataframes y rendimientos
    3. Distribuciones empíricas de activos financieros reales: los rendimientos no son normales y presentan colas largas
  4. Funciones y clases en Python:
    1. Utilizar funciones en Python para evitar código repetido
    2. Los principios de la programación orientada objeto: A-PIE (abstraction, polymorphism, inheritance, encapsulation)
    3. El arte del refactoring y de la programación “minimalista”: re-escribir el código utilizado anteriormente en unas pocas líneas
  5. Betas y Capital Asset Pricing Model (CAPM) en Python:
    1. Regresiones lineales de activos financieros en Python: alfas, betas y r cuadrada
    2. Operaciones con dos series de tiempo: sincronización y cálculo de betas vs benchmark
    3. Visualización de datos en Python: plots de series de tiempo de precios y scatterplots de rendimientos
    4. Análisis de sensibilidades: comparación de betas vs diferentes benchmarks; caso de VIX vs S&P 500
  6. Algoritmos de optimización y de cobertura de portafolios en Python:
    1. Aprender a utilizar el método “minimize” de la librería scipy.optimize
    2. Crear funciones de costo con parámetros: ejemplo de test unitario
    3. Crear un algoritmo de cobertura de portafolios beta-neutral y delta-neutral con datos de mercado reales
  7. Matriz de Varianza-Covarianza en Python:
    1. Matrices simétricas: vectores propios, valores propios, ortogonalidad
    2. Matriz de varianza-covarianza y Análisis de Componentes Principales (PCA)
    3. Cálculo de la matriz de varianza-covarianza con datos reales: ejemplo de inestabilidad
    4. Gestión de activos: cálculo de portafolios de mínima varianza y PCA
  8. Optimización de portafolios y Asset Allocation en Python:
    1. Problema de minimización de la varianza con restricciones: multiplicadores de Lagrange
    2. Utilizar el método scipy.optimize.minimize con restricciones
    3. Calcular portafolios con restricciones: Markowitz, long-only
    4. Calcular portafolios clásicos de la gestión de activos: equi-ponderado y ponderado por volatilidad
  9. Frontera Eficiente en Python:
    1. Teoría Moderna de Portafolios: optimización mean-variance y análisis de portafolios admisibles
    2. Cálculo y plot de la frontera eficiente para portafolios de Markowitz
  10. Arbitraje estadístico
    1. Diferentes tipos de quants: estadística, probabilidad, machine learning
    2. Principios e hipótesis del arbitraje estadístico
    3. Ejemplo de arbitraje estadístico: pairs trading usando bandas de Bollinger
    4. Creación de un programa de backtesting en Python para estrategias de trading
  11. Simulaciones de Montecarlo
    1. Principios básicos de las simulaciones de Monte Carlo: Ley de los Grandes Números, Teorema de Límite Central, intervalos de confianza
    2. Comparación de dos estrategias de trading
    3. Ejemplo de utilización de simulaciones de Monte Carlo en videojuegos: ¿Cómo maximizar mi daño en los raids de un MMORPG?

Tareas prácticas:

Se le facilitará al alumno el código de base en Python, así como los datos de entrada necesarios para las tareas. Se le pedirá al alumno que escriba algunas líneas de código y se calificará que el resultado sea el esperado:

  1. Dada una lista de activos y una lista de métricas de riesgo, generar una tabla para analizar y comparar su perfil de rendimiento-riesgo
  2. Dada una lista de activos y una lista de benchmarks, generar la tabla de betas correspondientes
  3. Dada una posición en un activo, crear diferentes estrategias de cobertura de portafolios beta y delta neutrales y generar una tabla comparativa
  4. Dada una lista de activos, calcular varios portafolios óptimos (varianza mínima, PCA, Markowitz, long-only, equi-ponderado y comparar varias métricas
  5. Dado un portafolios de N activos, modificarlo ligeramente para obtener un portafolios "óptimo": mayor rendimiento, menor riesgo, mayor Sharpe

Referencias básicas:

  1. Hilpisch. Python for Finance. O’Reilly
  2. Mood, Graybill, Boes. Introduction to the theory of statistics. McGraw-Hill

Referencias complementarias:

  1. Elton, Grube, Brown, Goetzmann. Modern Portfolio Theory and Investment. Wiley
  2. Hull. Options, Futures and Other Derivatives. Pearson
  3. Shreve, Stochastic Calculus for Finance II. Continuous-Time Models. Springer
  4. Wilmott. Quantitative Finance. Wiley

 


Hecho en México, todos los derechos reservados 2011-2016. Esta página puede ser reproducida con fines no lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica. De otra forma requiere permiso previo por escrito de la Institución.
Sitio web administrado por la Coordinación de los Servicios de Cómputo de la Facultad de Ciencias. ¿Dudas?, ¿comentarios?. Escribenos. Aviso de privacidad.