PaperBroker y ejecución simulada
PaperBroker es el simulador de ejecución de AQE para:
- backtesting
- trading simulado
- validación del comportamiento del ciclo de vida de los insights
Se encarga de:
- envío de órdenes
- ejecuciones de órdenes
- cancelaciones
- solicitudes de cierre
- órdenes vinculadas de tipo bracket
- ejecución de stops dinámicos
- emisión de eventos de operaciones
- estado de la cuenta y del patrimonio
También se encarga de evitar estados no válidos en la cuenta simulada, como órdenes que superarían el poder de compra disponible.
YahooFinanceDataFeed
Sección titulada «YahooFinanceDataFeed»YahooFinanceDataFeed proporciona:
- metadatos de símbolos
- velas históricas
- últimas cotizaciones
- últimas velas
- suscripción a flujos de velas en vivo
Esta es la ruta de datos de mercado predeterminada para la investigación histórica y los flujos de ejecución orientados a la simulación.
Modelo de costes de los activos
Sección titulada «Modelo de costes de los activos»AQE modela los costes de los activos por separado del PnL bruto de las operaciones. Asset.fees contiene:
commission.entry.longycommission.entry.shortpara abrir posiciones largas y cortascommission.exit.longycommission.exit.shortpara cerrar posiciones largas y cortasswap.longyswap.shortpara la financiación o el abono nocturno de posiciones largas y cortas
Largo y corto se refieren a la dirección de la posición, no solo a la acción inmediata de la orden. Una orden de compra que abre exposición usa la comisión de entrada de una posición larga. Una orden de venta que abre exposición usa la comisión de entrada de una posición corta. Cuando se cierra una posición, AQE aplica la comisión de salida y el swap correspondientes a la dirección original de la posición, por lo que commission.exit.short es la comisión de cierre de una posición corta aunque la acción de cierre sea una compra.
La comisión y el swap usan la misma enumeración pública de tipos de coste, AssetFee. Los tipos de coste disponibles son:
AssetFee::NoneAssetFee::Points(points), usado para el cálculo de swap basado en puntosAssetFee::PercentageFee(rate), donde0.001significa el 0,1 % del valor nocional negociadoAssetFee::FixedFee(amount), un importe fijo por ejecuciónAssetFee::PerContractFee(amount), multiplicado por la cantidad negociadaAssetFee::PercentagePerContractFee(rate), aplicado comoprice * contract_size * quantity * rate
Los cálculos de comisión aceptan valores positivos de PercentageFee, FixedFee, PerContractFee y PercentagePerContractFee. Points está presente en la enumeración compartida porque el swap lo necesita; si se usa en un campo de comisión, AQE lo trata como cero.
Los valores de swap pueden ser positivos o negativos. Un swap positivo aumenta el PnL y uno negativo lo reduce. En la ejecución simulada, AQE calcula el PnL neto de cierre así:
gross PnL + swap - entry commission - exit commissionConfigurar los costes de PaperBroker
Sección titulada «Configurar los costes de PaperBroker»Usa with_asset_fees(...) al crear el bróker de ejecución simulada. Los backtests generados por AQS usan la misma ruta.
use aq_engine::core::broker::paper_broker::PaperBroker;use aq_engine::core::broker::types::{ AccountType, AssetCommissionFees, AssetFee, AssetFees, AssetSideFees, AssetSwapFees,};
let fees = AssetFees { commission: AssetCommissionFees { entry: AssetSideFees { long: AssetFee::PercentageFee(0.0005), short: AssetFee::PercentageFee(0.0007), }, exit: AssetSideFees { long: AssetFee::FixedFee(1.0), short: AssetFee::FixedFee(1.0), }, }, swap: AssetSwapFees { long: AssetFee::PerContractFee(-3.25), short: AssetFee::PercentagePerContractFee(0.000041), }, ..AssetFees::default()};
let execution = PaperBroker::new(AccountType::Paper, 100_000.0, 1).with_asset_fees(fees);Los campos heredados entry y exit de AssetFees se siguen aceptando como alternativa de compatibilidad cuando el objeto de comisiones por lado está vacío. Las configuraciones nuevas deben usar los objetos commission y swap.
Código fuente relacionado
Sección titulada «Código fuente relacionado»aq-engine/src/core/broker/paper_broker.rsaq-engine/src/core/broker/types/mod.rsaq-engine/src/core/broker/data_feeds/yahoo.rs
Usamos cookies y almacenamiento esenciales para el inicio de sesión, la seguridad de la cuenta, las preferencias de tema de color, este aviso y las métricas internas necesarias de PostHog sobre uso, calidad de las sesiones y fiabilidad. No usamos cookies publicitarias.
