BÁSICOS
68
TRADERS´ 07/08.2018
operar sobre él, vamos a disponer de la misma resolución
de datos cuando nos conectemos al mercado a tiempo
real, y eso es mucho suponer: lo más común es que ni
dispongamos de dicha granularidad ni seamos capaces
de actuar sobre ella para capturar el siguiente tick.
Así que será mucho mejor para nosotros reconvertir la
información de ticks en un formato tradicional de velas,
con precios Open, High, Low, Close que resumen la acti-
vidad en un determinado intervalo de tiempo, así como
un Volumen agregado. Esta operación se conoce como
resampling (o, para ser exactos, upsampling ya que
pasamos de mayor a menor granularidad temporal) y
backtrader cuenta con recursos propios para manejar
la tarea sin ningún problema, basta con cargar los datos
mediante la función resampledata en lugar de adddata y
proporcionar unos pocos parámetros adicionales acerca
de cómo queremos que se realice el proceso. Por nuestra
parte, como vamos a estar iterativamente ejecutando una
serie de backtests sobre los mismos datos preferimos
guardar previamente los datos resumidos en disco para
acelerar significativamente el trabajo; esa es la función
de nuestro archivo
Resample.py. Para nuestro artículo
hemos elegido una resolución de 15 minutos – un tiempo
razonable para operar, además del hecho de que muchas
fuentes de información están retrasadas 15 minutos en
su versión de acceso libre – obteniendo pero si lo desea
puede modificar la propiedad mins por otro valor en
minutos para obtener una granularidad diferente.
El archivo resultante, krakenUSD_15m.csv, además de ser
muchísimo más compacto y manejable (6 MB en lugar de
500), cuenta ya con un formato directamente legible por
backtrader - con la salvedad de que deberemos rellenar
el Open Interest con valores nulos porque carecemos de
dicha información.
Date,Open,High,Low,Close,Volume
2014-01-07 18:30:00,883.32614,892.06753,874.48165,
874.48165,0.04276811
2014-01-07 19:15:00,866.10944,866.10944,860.0,860.0,
0.17440196000000002
2014-01-07 19:30:00,870.0,870.0,830.00001,835.02002,
6.227191829999995
Benchmark: Escenario Base
Es importante resaltar que para mantener todos nuestros
tests ceteris paribus operaremos siempre una cuenta de
apenas 1,000 EUR, entrando o saliendo del mercado prácti-
camente con todo el capital disponible en cuenta (menos un
margen de seguridad del 5%). Para acercar nuestro entorno
lo más posible a las condiciones reales del mercado, apli-
caremos una comisión del 0.3% tanto a las entradas como
a las salidas, y tendremos en cuenta el volumen de la barra
actual, suponiendo que, debido a la presencia de otros
operadores, sólo podemos aspirar a un 25% del volumen de
cada barra para llenar nuestras órdenes.
También incluiremos en nuestro sistema un leve apalan-
camiento de 2. Dicho apalancamiento no es fundamental
para que el sistema opere, pero nos permite extraer un
plus de rentabilidad en los momentos de subida libre –
aunque por otro lado hará más peligrosos los momentos
de caída libre, ya que el efecto multiplicador del apalan-
camiento opera tanto para las pérdidas como para las
ganancias. Por supuesto, este
apalancamiento no implica que
nuestro bróker nos posibilite operar
con cuentas apalancadas o comprar
con margen, puede ser tan sencillo
como pedir prestado otros 10,000
EUR a nuestro tío rico con el acuerdo
de devolverle dicho capital inicial al
final de nuestro periodo de inversión.
Finalmente, para evaluar si nuestro
sistema es bueno o no, hemos de
compararlo siempre con un esce-
nario base o benchmark. Ya que en
el fondo queremos evaluar si nuestra
acción sobre la criptodivisa produce
un resultado positivo, lo más sensato
será compararlo con… no actuar. Es
decir, una estrategia pasiva consis-
tente simplemente en comprar y
Al tratarse de una estrategia “Buy and Hold”, toda la actividad compradora se concentra en los periodos
iniciales y se mantiene hasta el final.
Fuente:
www.backtrader.comG1
Resultados del backtest de benchmark