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
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
# 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