7. Estrategias comerciales de arbitraje entre productos (versión educativa equivalente)
Fuente de referencia: docs/_joinquant_migration_source/Example_07_跨商品套利.ipynb Primera celda de Markdown. Nota: El cuaderno original estaba marcado como «Problemas de información que requieren corrección». Este ejemplo se basa en la implementación reproducible en qteasy.
7.1. Estrategia e ideas
Seleccione dos instrumentos comerciales altamente correlacionados y construya un diferencial de precios
spread = p1 - p2;La media y la desviación estándar de la diferencia de precio se calculan dentro de una ventana de desplazamiento para obtener el zscore.
Cuando zscore está por encima del umbral superior, se abren spreads cortos (vender el primero y comprar el segundo); cuando zscore está por debajo del umbral inferior, se abren diferenciales largos.
Cierre la posición cuando el precio vuelva a acercarse al umbral de salida.
7.2. QtEasy Instrucciones de implementación
Este artículo utiliza la señal
PTy la clase de estrategia esExample07CrossSymbolSpread;Para reducir la dependencia de los datos, el script de ejemplo utiliza pares de índices diarios (aproximados para fines didácticos) de forma predeterminada, en lugar de los pares de contratos de futuros por minutos originales;
Si tiene datos de minutos de futuros locales, puede reemplazar
asset_type/asset_pool/freqen el script con la versión de futuros.
from examples.strategies.example_strategies import Example07CrossSymbolSpread
import qteasy as qt
stg = Example07CrossSymbolSpread()
op = qt.Operator(stg, signal_type='PT')
op.op_type = 'stepwise'
op.set_blender('1.0*s0')
res = qt.run(
op,
mode=1,
asset_type='IDX',
asset_pool=['000300.SH', '000905.SH'],
benchmark_asset='000300.SH',
invest_start='20190101',
invest_end='20211231',
invest_cash_amounts=[1000000],
trade_batch_size=0.01,
sell_batch_size=0.01,
allow_sell_short=True,
trade_log=True,
)
7.3. Script ejecutable
examples/strategy_example_07.py