Bibliotecas de finanzas cuantitativas de Python

Aprende algunas bibliotecas de Python comúnmente utilizadas en el campo de las finanzas cuantitativas, por ejemplo:

  • zipline: Biblioteca utilizada para backtesting e implementación de algoritmos de trading, comando de instalación:pip install zipline。

  • Quantlib: Biblioteca utilizada para valorar instrumentos financieros y realizar cálculos financieros, comando de instalación:pip install Quantlib。

  • TA-Lib: Biblioteca utilizada para análisis técnico, comando de instalación:pip install TA-Lib。

  • pyfolio: Es una biblioteca utilizada para evaluar el rendimiento de carteras de inversión. Puede integrarse con herramientas de backtesting como zipline y ofrece herramientas para analizar rendimientos, riesgos, etc. Comando de instalación:pip install pyfolio。

  • statsmodels: Es una biblioteca para estimar modelos estadísticos, incluyendo regresión lineal, análisis de series temporales, etc. En finanzas cuantitativas, puede utilizarse para construir y probar estrategias de trading. Comando de instalación:pip install statsmodels。


zipline

zipline es un framework de código abierto para la investigación en finanzas cuantitativas y el trading algorítmico.

Fue desarrollado por la empresa Quantopian, con el objetivo de proporcionar a investigadores y desarrolladores una herramienta conveniente para construir, probar y ejecutar estrategias de trading cuantitativo.

Antes de usar zipline, asegúrate de haber instalado la biblioteca. Puedes instalarla con el siguiente comando:

conda install -c conda-forge zipline

Aquí usamosAnacondapara instalar zipline, para evitar problemas extraños más adelante.

A continuación, iniciamos sesión enquandlel sitio web oficial, nos registramos y obtenemos la API key:https://data.nasdaq.com/account/profile。

Luego configuramos la API key y descargamos el paquete de datos. Los comandos específicos son los siguientes:

set QUANDL_API_KEY=your_key

En macOS, use el siguiente comando:

export QUANDL_API_KEY=your_key-zZQN

Descargar el paquete de datos:

zipline ingest -b quandl

Consultar el paquete de datos:

# zipline bundles
csvdir <no ingestions>
quandl 2023-12-09 06:02:03.178299
quandl 2023-12-09 05:59:04.273082
quandl 2023-12-09 05:54:57.277732
quandl 2023-12-09 05:52:15.532504
quandl 2023-12-09 03:32:03.853032
quantopian-quandl <no ingestions>

Ahora, usemos zipline para realizar una prueba simple.

El siguiente es un script de estrategia Zipline simple para realizar backtesting de operaciones bursátiles:

Ejemplo

from zipline.api import order, record, symbol


def initialize(context):
    pass


def handle_data(context, data):
    order(symbol('AAPL'), 10)
    record(AAPL=data.current(symbol('AAPL'), 'price'))

Lo anterior es una estrategia simple que compra 10 acciones de Apple a precio actual cada día de trading, y registra el precio actual de AAPL en cada día de trading.

  • order(symbol('AAPL'), 10): Esta línea indica comprar 10 acciones de Apple (AAPL) al precio actual en cada día de trading.symbol('AAPL')Se utiliza para obtener el símbolo bursátil de AAPL.

  • record(AAPL=data.current(symbol('AAPL'), 'price')): Esta línea indica registrar el precio actual de AAPL en cada día de trading.data.current(symbol('AAPL'), 'price')Se utiliza para obtener el precio actual de la acción de AAPL.

Luego ejecute el siguiente comando:

# zipline run -f my_strategy.py --start 2016-1-1 --end 2018-1-1 -o buyapple_out.pickle --no-benchmark
Simulated 503 trading days
 first open: 2016-01-04 14:30:00+00:00
 last close: 2017-12-29 21:00:00+00:00

Si la ejecución es exitosa, se generarábuyapple_out.picklearchivo, podemos usarpicklemódulo para leerlo.

Descripción de los comandos:

  • zipline run:Inicia Zipline para ejecutar el backtesting.

  • -f my_strategy.py:Especifica el archivo de estrategia. En este ejemplo,my_strategy.pyes el archivo Python que contiene la estrategia que usted escribió.

  • --start 2016-1-1y--end 2018-1-1:Especifica las fechas de inicio y fin del backtesting. En este ejemplo, el período de backtesting es del 1 de enero de 2016 al 1 de enero de 2018.

  • -o buyapple_out.pickle:Especifica el nombre del archivo de salida. En este ejemplo, el resultado del backtesting se guardará comobuyapple_out.picklearchivo. Este archivo contiene varios tipos de información de salida del backtesting, como registros de operaciones, métricas de rendimiento, etc.

  • --no-benchmark:Deshabilita el benchmark (punto de referencia). En el backtesting, a veces se utiliza un benchmark para comparar el rendimiento de la estrategia. Usar--no-benchmarkopción indica que no se utiliza ningún benchmark.

El módulo pickle se utiliza para serializar y deserializar objetos, lo que permite guardar objetos en un archivo o cargarlos desde un archivo de manera conveniente.

A continuación se muestra cómo leer el contenido del archivo buyapple_out.pickle:

Ejemplo

import pickle

# Especifica la ruta del archivo pickle
pickle_file_path = 'buyapple_out.pickle'

# Lee el archivo pickle
with open(pickle_file_path, 'rb') as file:
    buyapple_out_data = pickle.load(file)

# Imprime los datos leídos
print(buyapple_out_data)

El contenido de salida se muestra a continuación:

                                        period_open              period_close  short_value          pnl  long_exposure  ...  max_leverage  excess_return treasury_period_return trading_days  period_label
2016-01-04 21:00:00+00:00 2016-01-04 14:31:00+00:00 2016-01-04 21:00:00+00:00          0.0      0.00000            0.0  ...      0.000000            0.0                    0.0            1       2016-01
2016-01-05 21:00:00+00:00 2016-01-05 14:31:00+00:00 2016-01-05 21:00:00+00:00  
Otras extensiones