Python para el trading algorítmico - página 24

 

Cómo calcular la volatilidad de la cartera de inversiones en acciones con Python, NumPy y Pandas


Cómo calcular la volatilidad de la cartera de inversiones en acciones con Python, NumPy y Pandas

En este video, el presentador demuestra cómo calcular la volatilidad de una cartera de inversiones usando Python e incluye las ecuaciones matemáticas detrás de esto. La atención se centra en una cartera de dos valores, ya que se calcula fácilmente en una calculadora de mano. Sin embargo, el presentador menciona que para carteras con más de tres valores, se utiliza la multiplicación de matrices para calcular la volatilidad. El presentador utiliza la biblioteca NumPy y otras bibliotecas de apoyo para realizar los cálculos.

El video comienza con la configuración del entorno de Python y la importación de los módulos necesarios. Luego, el presentador define las variables que se utilizarán a lo largo del proceso.

Para obtener datos en tiempo real para la cartera, el presentador menciona el uso de una API y demuestra específicamente el uso de datos históricos al final del día. Explican que se requiere una clave API para acceder a los datos y brindan instrucciones sobre cómo registrarse y obtener la clave. La fecha de inicio de los datos se establece hace aproximadamente un año. El presentador configura la cartera, asigna pesos iguales a cada valor y crea una lista vacía para almacenar los datos descargados.

Mediante un bucle for, el presentador realiza llamadas a la API para cada símbolo de la cartera y recupera los datos. Demuestran cómo construir la llamada a la API obteniendo la URL del punto final del sitio web del proveedor de datos y realizando las modificaciones necesarias. Los datos se recuperan como una cadena JSON, que se convierte en un DataFrame de pandas para su posterior procesamiento. Los precios de cierre se extraen del DataFrame y se agregan a la lista de datos.

Después de completar el bucle for, el presentador convierte la lista de datos en un DataFrame, la transpone, cambia el nombre de las columnas con los nombres de los símbolos y cambia el índice a fechas. Luego muestran el DataFrame resultante que contiene los precios de cierre de cada valor.

Para calcular la volatilidad, el presentador explica que es necesario calcular las tasas de rendimiento instantáneas. Crean un nuevo DataFrame usando la función de logaritmo de NumPy en los precios de cierre y luego calculan las diferencias entre valores consecutivos. El DataFrame resultante representa las tasas de rendimiento instantáneas de cada valor. El presentador elimina la primera fila del DataFrame para manejar cualquier valor de NaN y demuestra el cálculo de la varianza para cada valor.

Para calcular la volatilidad de cada valor, el presentador utiliza la raíz cuadrada de la varianza. Muestran las volatilidades resultantes como porcentajes.

Para la volatilidad de la cartera, el presentador explica que se puede calcular como el promedio ponderado de las volatilidades de cada valor. Dado que los valores del ejemplo tienen la misma ponderación, el presentador solo necesita la media de las volatilidades. Lo formatean como un porcentaje.

A continuación, el presentador presenta el concepto de matriz de covarianza y demuestra cómo calcularla utilizando el marco de datos de retorno. Ajustan la covarianza diaria a una covarianza anual y muestran la matriz de covarianza resultante.

Finalmente, el presentador calcula la volatilidad de la cartera utilizando la multiplicación de matrices. Multiplican los pesos por la matriz de covarianza y sacan la raíz cuadrada del resultado. La volatilidad de la cartera se muestra como un porcentaje, que representa la desviación estándar.

En conclusión, el video proporciona una demostración paso a paso de cómo calcular la volatilidad de la cartera usando Python. El presentador explica los cálculos necesarios, presenta bibliotecas relevantes como NumPy y enfatiza los beneficios de la diversificación para reducir la volatilidad de la cartera.

How to Calculate Stock Investment Portfolio Volatility with Python, NumPy & Pandas
How to Calculate Stock Investment Portfolio Volatility with Python, NumPy & Pandas
  • 2021.08.18
  • www.youtube.com
#python #numpy #pandaslearn how to use Python and NumPy to calculate investment portfolio volatilityhttps://alphabench.com/data/python-portfolio-volatil...
 

Primeros pasos con Steamlit para Python: cree una aplicación web funcional en minutos



Primeros pasos con Steamlit para Python: cree una aplicación web funcional en minutos

En este video, demostraré cómo usar Streamlit para Python para crear una aplicación web. Streamlit es una interfaz de usuario basada en la web que es de uso gratuito y le permite crear y compartir aplicaciones de alta calidad sin ninguna experiencia de desarrollo front-end. Construiremos una aplicación simple que nos permita descargar datos de precios de acciones usando una API y graficarlos. ¡Empecemos!

Primero, usaré PyCharm como mi IDE, pero puede usar cualquier IDE de su elección. Si no está familiarizado con PyCharm, proporcioné un enlace en la descripción del video para un video de "Introducción a PyCharm". No dudes en echarle un vistazo si quieres saber más.

Ya configuré un nuevo proyecto en PyCharm llamado "Streamlit Demo" y agregué un archivo de Python. Dado que estamos comenzando con un entorno virtual nuevo, necesitamos instalar algunas dependencias. Necesitaremos Pandas, la biblioteca de solicitudes y Streamlit. Dependiendo de su configuración de PyCharm, es posible que ya tenga Pandas y Requests instalados, pero definitivamente necesitará instalar Streamlit. Además, utilizaremos la API "Datos históricos del final del día" para nuestra aplicación, que permite llamadas API gratuitas con un límite de unas 20 por día. Si necesita más que eso, ofrecen opciones de suscripción en su sitio web.

Una vez que Streamlit esté instalado, echemos un vistazo a su aplicación de muestra. Abriré la terminal y ejecutaré Streamlit llamando a Python desde la línea de comando y luego ejecutando el comando Streamlit. Su aplicación de muestra está en un archivo llamado "hola". Después de unos segundos, la aplicación se iniciará y verá una página web con un encabezado, texto e hipervínculos. En el lado izquierdo, hay varias demostraciones que puede explorar. Lo bueno de sus demostraciones es que proporcionan el código utilizado para generar la salida. Por ejemplo, hay una demostración con un gráfico y, debajo, puede ver el código utilizado para generar ese gráfico. Streamlit se encarga de formatear y colocar contenido en la página web, por lo que solo debe concentrarse en escribir el código para producir el resultado deseado.

Una vez que esté satisfecho con su aplicación, puede solicitar permiso a Streamlit para publicarla en vivo. Todavía ofrecen publicación gratuita, pero debe comunicarse con ellos para configurarlo. Luego, puede enviar sus archivos a GitHub y compartir su aplicación en vivo en segundos.

Ahora pasemos a crear nuestra propia aplicación. Demostraré algunas características de Streamlit antes de comenzar a escribir el código de nuestra aplicación. Streamlit proporciona varios elementos que puede usar, como botones, selectores de color, barras laterales, cuadros de texto y selectores de fecha. El elemento más utilizado es la función "escribir", que le permite mostrar texto en la página web. También puede usar la sintaxis de rebajas dentro de la función "escribir" para dar formato al texto. Además, si desea mostrar texto de forma libre, simplemente puede usar una cadena de documentos y Streamlit lo representará como un descuento.

Probemos algunas de estas características escribiendo una aplicación básica. Definiré algunas dependencias y luego le mostraré cómo usar los elementos Streamlit. Comenzaremos con la función "st" y exploraremos sus diferentes capacidades. Por ejemplo, podemos usar "st.button" para mostrar un botón, "st.color_picker" para un selector de color y "st.sidebar" para crear una barra lateral. La función "escribir" también es bastante útil para mostrar texto, y puede usar la sintaxis de reducción dentro de ella. Demostraré estas características comunes, pero tenga en cuenta que Streamlit ofrece muchas más opciones.

Para ejecutar la aplicación, detendré el servidor Streamlit actual y lo iniciaré de nuevo ejecutando el comando de Python con el nombre.

Aquí hay un ejemplo de una aplicación Streamlit simple que le permite descargar y graficar datos de precios de acciones:

import streamlit as st
import pandas as pd
import requests

# Set the title and page layout
st.title( "Stock Price Data" )
st.sidebar.header( "Settings" )

# Create input fields in the sidebar
symbol = st.sidebar.text_input( "Enter a stock symbol (e.g., AAPL)" , value= "AAPL" )
start_date = st.sidebar.text_input( "Enter the start date (YYYY-MM-DD)" , value= "2022-01-01" )
end_date = st.sidebar.text_input( "Enter the end date (YYYY-MM-DD)" , value= "2022-12-31" )

# Create a button to trigger the data retrieval
if st.sidebar.button( "Get Data" ):
     # Make an API request to retrieve the stock price data
    url = f " https://api.example.com/stock/ {symbol}/history?start_date={start_date}&end_date={end_date}"
    response = requests.get(url)
    
     # Check if the API request was successful
     if response.status_code == 200 :
        data = response.json()
        df = pd.DataFrame(data)
        
         # Display the downloaded data
        st.write(df)
        
         # Create a line chart of the stock prices
        st.line_chart(df[ "close" ])
     else :
        st.write( "Error retrieving data from the API" )

# Add some additional information to the sidebar
st.sidebar.info( "This is a simple app to download and graph stock price data." )
st.sidebar.info( "Enter the stock symbol and date range, then click 'Get Data' to retrieve the data." )

En este ejemplo, primero importamos las bibliotecas necesarias: Streamlit, Pandas y Requests. Luego configuramos el título y el diseño de la página usando las funciones st.title() y st.sidebar.header().

A continuación, creamos campos de entrada en la barra lateral usando la función st.sidebar.text_input(). Los usuarios pueden ingresar un símbolo de cotización, una fecha de inicio y una fecha de finalización en estos campos.

Luego creamos un botón usando la función st.sidebar.button(). Cuando se hace clic en el botón, se activa el proceso de recuperación de datos. Construimos la URL de solicitud de API utilizando el símbolo ingresado, la fecha de inicio y la fecha de finalización. Realizamos una solicitud GET a la API mediante la función request.get().

Si la solicitud de API es exitosa (código de estado 200), recuperamos los datos de la respuesta y creamos un Pandas DataFrame. Mostramos los datos descargados usando la función st.write() y luego creamos un gráfico de líneas de los precios de las acciones usando la función st.line_chart().

Si la solicitud de API falla, mostramos un mensaje de error usando la función st.write().

Finalmente, agregamos información adicional a la barra lateral usando la función st.sidebar.info().

Para ejecutar esta aplicación, puede guardarla en un archivo de Python (p. ej., stock_app.py) y ejecutarla con el comando streamlit run stock_app.py en su terminal.

Este es solo un ejemplo básico, y puede personalizarlo aún más según sus necesidades. Streamlit ofrece muchas más capacidades para crear aplicaciones web interactivas, incluidos menús desplegables, casillas de verificación, controles deslizantes y más. Puede explorar la documentación de Streamlit ( https://docs.streamlit.io/ ) para obtener más información y ejemplos.

Getting Started with Steamlit for Python - Build a Functioning Web App in Minutes
Getting Started with Steamlit for Python - Build a Functioning Web App in Minutes
  • 2021.10.18
  • www.youtube.com
#python #streamlitHow to use streamlit - full-featured GUI for Pythonhttps://alphabench.com/data/python-streamlit-app.html*Please SUBSCRIBE:https://www.yo...
 

Use la API de datos históricos de fin de día (EOD) para encontrar la hora de máximo/mínimo diario



Use la API de datos históricos de fin de día (EOD) para encontrar la hora de máximo/mínimo diario

En este video, vamos a explorar la API de datos históricos al final del día, que nos permite extraer los precios de negociación máximos y mínimos diarios de una acción. Esta API es parte de un modelo freemium para datos financieros, que ofrece 20 llamadas API gratuitas por día. La ventaja de esta API es que brinda acceso a datos de más de 70 intercambios globales. Puede encontrar el enlace a su sitio web y precios especiales en la descripción del video.

Para comenzar, necesitamos configurar nuestro entorno. Usaremos el módulo de fecha y hora para manipular fechas, la biblioteca de ayuda para acceder a datos históricos, pandas para manipular y filtrar datos, y solicitudes para realizar llamadas API. A continuación, necesitamos obtener nuestra clave API, que se puede almacenar en un archivo o directamente en el cuaderno para simplificar.

También definiremos la fecha de inicio de nuestros datos, que normalmente se remonta a unos 10 días. La API tiene diferentes limitaciones según el tipo de datos, con datos minuto a minuto limitados a 120 días y datos de intervalos de cinco minutos limitados a 600 días. La API indexa los datos utilizando la marca de tiempo de Unix, que representa la cantidad de segundos transcurridos desde el 1 de enero de 1970. Convertimos la fecha de inicio deseada en una marca de tiempo de Unix para la solicitud de la API.

Una vez completada la configuración necesaria, podemos crear una instancia del objeto "Datos históricos del final del día" utilizando nuestra clave API. Este objeto nos permite recuperar los datos que necesitamos. La biblioteca de ayuda proporciona varios puntos finales que se pueden explorar para diferentes tipos de datos. En este ejemplo, nos centraremos en recuperar los precios intradiarios de Tesla utilizando intervalos de un minuto, a partir de la fecha de inicio especificada.

Para visualizar los datos, podemos envolver la llamada API en un constructor para un DataFrame de Pandas. Esto hace que sea más fácil trabajar con los datos y visualizarlos. Mostramos las primeras filas del DataFrame para verificar los datos recuperados, incluida la marca de tiempo, la fecha y la hora de Unix.

Si prefiere no usar la biblioteca de ayuda, el video proporciona un enfoque alternativo que usa la biblioteca de solicitudes para acceder directamente al extremo de la API y recuperar los datos JSON.

A continuación, realizamos una limpieza de datos. Reemplazamos el índice basado en números enteros con la fecha y la hora de los datos. Agregamos columnas separadas para la hora y la fecha, y eliminamos las columnas innecesarias, como el desplazamiento GMT y la fecha y hora original. El DataFrame resultante muestra la estructura revisada con las columnas añadidas.

Para centrarnos en el horario comercial habitual, creamos una copia de los datos originales. Dado que el índice es un objeto de fecha y hora, podemos usar el método between_time para filtrar las horas deseadas. Como menciona el video, la zona horaria para estos datos es GMT-5, por lo que ajustamos los tiempos en consecuencia. También convertimos los tiempos a la Hora del Este (ET) para facilitar la interpretación.

Para filtrar solo la hora de la columna de fecha y hora, realizamos algunos pasos adicionales. Como ya realizamos un cálculo, debemos volver a formatear los datos antes de aplicar el método de fecha y hora para extraer la hora. El DataFrame resultante muestra los tiempos ajustados en la ciudad de Nueva York.

Finalmente, abordamos la pregunta original de cuándo ocurren los máximos y mínimos durante el día de negociación. Primero recuperamos el máximo y mínimo general de cada día usando la función groupby y los métodos min y max. Para determinar el tiempo específico de estos máximos y mínimos, ubicamos el índice de los valores mínimos y máximos dentro del DataFrame, respectivamente. Esto proporciona información sobre el momento de estos puntos de precio, lo que nos permite observar cualquier patrón o tendencia.

En general, este video proporciona una guía paso a paso para usar la API de datos históricos al final del día, recuperar datos de precios de acciones y analizar el momento de los precios de negociación altos y bajos.

Use End of Day (EOD) Historical Data API to Find Time of Daily High/Low
Use End of Day (EOD) Historical Data API to Find Time of Daily High/Low
  • 2021.11.22
  • www.youtube.com
@MattMacarty #python #pandas #EODHistoricalDataUse a financial services API to find the time a stock trades at it lowest or highest each dayUse a financi...
 

Cómo realizar pruebas retrospectivas de algoritmos comerciales y métricas de cartera con Python y QuantStats



Cómo realizar pruebas retrospectivas de algoritmos comerciales y métricas de cartera con Python y QuantStats

Hoy, lo guiaré a través de una descripción general completa de las estadísticas de Quant, una extensa biblioteca de métricas financieras creada como una herramienta de creación de perfiles de cartera. Con las estadísticas de Quant, puede generar informes detallados sin esfuerzo con solo una sola línea. Esta herramienta le permite medir de forma eficaz el rendimiento de la cartera y realizar pruebas retrospectivas de los algoritmos de negociación.

Quant stats se basa en conocidas bibliotecas de ciencia de datos con las que quizás ya esté familiarizado y utilice. Para esta demostración, estoy trabajando en PyCharm y he comenzado un nuevo proyecto. Si está siguiendo, asegúrese de tener instaladas las dependencias necesarias. Estoy usando una versión un poco más antigua de Pandas porque las estadísticas de Quant no se han actualizado en aproximadamente seis meses y puede haber algunos problemas de compatibilidad con las últimas versiones de Pandas.

Para asegurarse de tener las dependencias requeridas, puede agregarlas a un archivo requirements.txt e instalarlas usando Pip. Además, Quant stats consta de tres módulos: estadísticas, gráficos e informes. Debido a la amplia funcionalidad, no podré cubrir todo en este único video. Sin embargo, le proporcionaré una descripción general y lo guiaré sobre cómo comenzar. A continuación, puede explorar más en función de sus necesidades e intereses específicos.

Antes de sumergirnos en los detalles, tomemos un momento para escuchar a nuestro patrocinador. Si está interesado en aprender a crear algoritmos comerciales con Python, permita que Looming Wealth lo ayude con su curso de comercio algorítmico. En este curso, aprenderá a crear bots que negocien automáticamente en su nombre, implementará y utilizará métricas técnicas y financieras, y usará el aprendizaje automático para desarrollar algoritmos comerciales únicos. Puede aprender a su propio ritmo o unirse a clases en vivo para una experiencia de aprendizaje colaborativo. Siga el enlace a continuación para obtener más información sobre Looming Wealth y obtenga un 15% de descuento en cualquiera de sus cursos comerciales.

Ahora, volvamos a las estadísticas cuánticas. En un nuevo archivo en blanco, comience importando la biblioteca de estadísticas de Quant. A continuación, establezca un símbolo de cotización para analizar. Para este ejemplo, usaré el S&P 500 ETF (SPY). Usaremos las estadísticas de Quant para examinar su desempeño en los últimos tres años.

Para descargar los datos de devoluciones, utilizaremos las utilidades de estadísticas de Quant, que se basan en los datos de Yahoo Finance. Puede utilizar cualquier fuente de datos que prefiera; aquí no hay magia. Imprimamos las declaraciones para ver qué obtenemos. El resultado será una Serie Pandas con rendimientos diarios que abarcan el período de tiempo especificado.

Una vez que tengamos los datos de retorno, podemos calcular varias estadísticas utilizando las estadísticas de Quant. Hay numerosas funciones disponibles, muchas más de las que podemos cubrir en este video. Puede obtener una lista de estadísticas disponibles imprimiendo el atributo available_stats. Vamos a mostrar una lista de comprensión de las estadísticas disponibles, excluyendo las funciones privadas.

Comentaré algo de la comprensión de la lista para mantenerla concisa. Procederemos a imprimir un par de estadísticas comunes para el S&P 500 durante los últimos tres años. Calculemos la relación de Sharpe usando qs.stats.sharpe_ratio(). Además, encontraremos el mejor día y mes llamando a qs.stats.best_day() y qs.stats.best_month() respectivamente. Puede modificar estas llamadas para agregar datos de manera diferente si es necesario.

Alternativamente, Quant stats proporciona un contenedor para Pandas, lo que le permite realizar llamadas de método directamente en el objeto de la cartera. Al extender Pandas, puede usar frases ingeniosas para acceder a varias estadísticas. Por ejemplo, puede llamar a Quant stats.extend_pandas() y luego usar el objeto de cartera para recuperar estadísticas como el rendimiento bruto anual compuesto y la reducción máxima.

Además de las estadísticas, Quant stats también ofrece la posibilidad de crear carteras.

A continuación, calcularé las señales en función de la estrategia de cruce de la media móvil. Si la media móvil rápida está por encima de la media móvil lenta, es una señal de compra. De lo contrario, es una señal de venta. Agregaré estas señales al marco de datos.

Después de eso, calcularé las posiciones en función de las señales. Si es una señal de compra, estableceré la posición en 1 (que indica una posición larga), y si es una señal de venta, estableceré la posición en -1 (que indica una posición corta). Todos los demás casos se establecerán en 0 (lo que indica que no hay posición).

Ahora que tenemos las posiciones, voy a calcular los retornos de la estrategia. Para hacer esto, multiplicaré las posiciones por los rendimientos diarios del activo. Esto nos dará los retornos de la estrategia diaria.

A continuación, calcularé los rendimientos acumulativos de la estrategia tomando el producto acumulativo de los rendimientos diarios. Esto nos dará el crecimiento de la estrategia en el tiempo.

Finalmente, voy a generar el informe utilizando la función quantstats.reports.html. Esta función toma los datos de retorno acumulativos y genera un informe HTML con varias métricas y visualizaciones de rendimiento. Guardaré el informe como un archivo HTML.

Para ver el informe automáticamente, abriré el archivo con el navegador web. Y eso es todo por el código.

Ahora, cuando ejecute este código con los parámetros elegidos, generará la estrategia cruzada de promedio móvil, calculará las métricas de rendimiento y generará un informe HTML con los resultados. Puede personalizar los parámetros de la estrategia, como los períodos de promedio móvil o la ventana de tiempo, para satisfacer sus necesidades.

How to Backtest Trading Algorithms and Portfolio Metrics with Python and QuantStats
How to Backtest Trading Algorithms and Portfolio Metrics with Python and QuantStats
  • 2022.12.07
  • www.youtube.com
​@MattMacarty #python #trading #algotrading How to Backtest Trading Strategies and Algorithms, Generate Portfolio Metrics✅ Please SUBSCRIBE:https://w...
Razón de la queja: