Defectos de los sistemas de resonancia de alta frecuencia basados en transacciones por letra y resonancia de línea K

El autor:Las hierbas, Creado: 2020-06-04 16:48:02, Actualizado: 2023-10-08 19:46:18

img

Estoy enEl cambio de divisas es una estrategia de cobertura de divisas.En la actualidad, la estrategia está en suspensión durante un tiempo de 1s, una estrategia de bastante alta frecuencia que no puede dar resultados precisos con la retrospección de la línea K de la hora.Retroceso de la línea de minutosComo resultado, los beneficios de la retrospección se han mejorado mucho, pero aún no se puede determinar qué parámetros se deben usar en el nivel de segundos, y la comprensión de la estrategia en general no es muy clara.

Problemas basados en la retrospección de la línea K

Primero, ¿qué es la línea K histórica? Un dato de línea K contiene cuatro precios de cobro, dos tiempos de inicio y transacciones intercalares. La mayoría de las plataformas y marcos de cuantificación se basan en la retrospección de línea K, y la plataforma de cuantificación FMZ también ofrece retrospección a nivel de tick. La velocidad de retrospección de línea K es rápida y en la mayoría de los casos no es un problema, pero también hay deficiencias muy graves, especialmente las estrategias de retrospección de múltiples variedades y las estrategias de alta frecuencia, que casi no pueden llegar a las conclusiones correctas.

En primer lugar, la cuestión del tiempo, los datos de la línea K de los precios más altos y más bajos no se dan, no se tiene en cuenta, pero lo más importante es que los precios de apertura y cierre no comienzan con el tiempo de apertura y cierre. Incluso las variedades de operaciones menos frías, a menudo no se negocian durante diez segundos, y cuando revisamos las estrategias de varias variedades, a menudo se suele considerar por defecto que el precio de apertura y el precio de cierre son simultáneos, lo que también es la base para la medición del precio de cierre basado en la revisión.

Imagínese que las ganancias de dos variedades se replican en línea de minuto, su diferencia es generalmente de 10 dólares, y ahora se descubre que a las 10:01, el precio de cierre del contrato A es de 100 dólares, el contrato B es de 112 dólares, y la diferencia es de 12 dólares, por lo que la estrategia comienza a cubrir, y en algún momento la diferencia regresa, ganando un beneficio de retorno de 2 dólares.

La situación real puede ser que a las 10:45 a.m. el contrato A genere una transacción de $100 y luego no haya transacción, el contrato B tenga una transacción de $112 a las 10:58 a.m. y ambos precios no existan a las 10:01 a.m. ¿Cuál es el precio de negociación en este momento y cuánto diferencial puede comer el arriesgo?

Luego está el problema de la toma de fotografías, la toma de fotografías real es prioridad de precio, prioridad de tiempo. Si el comprador supera el precio de venta, generalmente se transacciona directamente con el precio de venta, en cambio, entra en el libro de pedidos. Los datos de la línea K obviamente no compran ni venden, es una toma de fotografías que no puede simular el nivel de detalle.

Finalmente, el efecto de la estrategia en sí misma en el mercado de transacciones, si es un pequeño retorno de fondos, no tiene gran impacto. Pero si la proporción de transacciones es grande, causará un impacto en el mercado. No solo es un gran punto de deslizamiento de precios en el momento de la transacción inmediata, si el retorno de la transacción de tu compra se realiza, en realidad se aprovecha de otras transacciones de los comerciantes que se iban a comprar, el efecto mariposa tendrá un impacto en el mercado.

Retrospección basada en profundidad y ticks en tiempo real

FMZ ofrece retrospección en disco real, que permite obtener datos reales históricos de profundidad de 20 grados, ticks de segundo en tiempo real, transacciones por letra, etc. y basado en esto.Función de reproducción de disco realLos datos de retraso son enormes y lentos, y generalmente se retrasan en solo dos días. Los retraso a nivel de disco real son necesarios para estrategias de alta frecuencia o estricta determinación del tiempo. Las transacciones que FMZ recopila no son largas, pero también hay más de 70 mil millones de datos históricos.

img

Mecanismos de retroevaluación basados en el flujo de pedidos de transacción por pieza

La información de la línea K es muy escasa, y la profundidad también puede ser falsa, pero hay un dato que es la voluntad de negociación real del mercado, que refleja la historia más real de las transacciones, que es la transacción por piezas. Este artículo propone un sistema de retroevaluación de alta frecuencia basado en el flujo de pedidos, que reducirá enormemente la cantidad de datos de retroevaluación en el disco real y, en cierta medida, el impacto de la transacción simulada en el mercado.

He descargado el reciente contrato perpetuo de XTZ de 5 días (WEBhttps://www.fmz.com/upload/asset/1ff487b007e1a848ead.csvEn la actualidad, hay un total de 213.000 datos, pero primero veamos la composición de los datos:

[['XTZ', 1590981301905, 2.905, 0.4, 'False\n'],
 ['XTZ', 1590981303044, 2.903, 3.6, 'True\n'],
 ['XTZ', 1590981303309, 2.903, 3.7, 'True\n'],
 ['XTZ', 1590981303738, 2.903, 238.1, 'True\n'],
 ['XTZ', 1590981303892, 2.904, 0.1, 'False\n'],
 ['XTZ', 1590981305250, 2.904, 0.1, 'False\n'],
 ['XTZ', 1590981305643, 2.903, 197.3, 'True\n'],

Los datos son una lista bidimensional, ordenada por el tiempo de transacción. Los significados específicos son: nombre de variedad, precio de transacción, fecha de transacción, número de transacciones, si se realizó una transacción activa. Hay compras y ventas, cada transacción incluye a un comprador y a un vendedor.

En primer lugar, de acuerdo con la dirección de la transacción, se puede deducir con bastante precisión el precio de compra y venta en el mercado, si se trata de un pedido de venta activa, el precio de compra en este momento es el precio de la transacción, si se compra un pedido de venta activa, el precio de venta es el precio de la transacción, hay una nueva transacción para actualizar el nuevo cuadro, no se actualiza el resultado de la última vez.

De acuerdo con el flujo de pedidos, se puede capturar de la siguiente manera: por ejemplo, en un pedido, el precio es el precio, el volumen de pedido es el monto, en este momento, el disco de compra y venta es el bid, ask. Si el precio es menor que el precio de pedido es mayor que el bid, primero se decide como creador, y se puede tomar una decisión de prioridad, y luego todas las transacciones por transacción por precio inferior o igual al precio de pedido en el tiempo de existencia de la orden se toman con este pedido.

Se puede ver fácilmente un problema con este tipo de toma, si el pedido es el tomador, la realidad es que se puede realizar inmediatamente, en lugar de esperar que se realicen nuevos pedidos. Primero, no consideramos el volumen de la lista de pedidos, aunque haya datos, el juicio directo de la transacción también cambia la profundidad y afecta al mercado. Y la toma basada en la nueva orden, es equivalente a reemplazar el pedido real en la historia por tu pedido, que de todos modos no excederá los límites de la transacción del mercado en sí mismo, y la ganancia final no puede exceder la ganancia máxima generada por la emoción.

También hay algunos pequeños detalles, si el precio de compra de la orden es igual al de compra, en realidad todavía hay una cierta probabilidad de que se compre un precio que se haya capturado, se necesita considerar la prioridad del pedido y la probabilidad de transacción, etc.

Tomar el código

Los objetos de intercambio se pueden referir a la introducción inicial, básicamente sin cambios, solo se agrega la diferencia entre las tarifas de los fabricantes y tomadores, y se optimiza la velocidad de repetición.

    symbol = 'XTZ'
    loop_time = 0
    intervel = 1000 #策略的休眠时间为1000ms
    init_price = data[0][2] #初始价格
    e = Exchange([symbol],initial_balance=1000000,maker_fee=maker_fee,taker_fee=taker_fee,log='') #初始化交易所
    depth = {'ask':data[0][2], 'bid':data[0][2]} #深度
    order = {'buy':{'price':0,'amount':0,'maker':False,'priority':False,'id':0},
             'sell':{'price':0,'amount':0,'maker':False,'priority':False,'id':0}} #订单
    for tick in data:
        price = int(tick[2]/tick_sizes[symbol])*tick_sizes[symbol] #成交价格
        trade_amount = tick[3] #成交数量
        time_stamp = tick[1] #成交时间戳
        if tick[4] == 'False\n':
            depth['ask'] = price
        else:
            depth['bid'] = price
        
        if depth['bid'] < order['buy']['price']:
            order['buy']['priority'] = True
        if depth['ask'] > order['sell']['price']:
            order['sell']['priority'] = True
        if price > order['buy']['price']:
            order['buy']['maker'] = True
        if price < order['sell']['price']:
            order['sell']['maker'] = True
        
        #订单网络延时也可以作为撮合条件之一,这里没考虑
        cond1 = order['buy']['priority'] and order['buy']['price'] >= price and order['buy']['amount'] > 0
        cond2 = not order['buy']['priority'] and order['buy']['price'] > price and order['buy']['amount'] > 0
        cond3 = order['sell']['priority'] and order['sell']['price'] <= price and order['sell']['amount'] > 0
        cond4 = not order['sell']['priority'] and order['sell']['price'] < price and order['sell']['amount'] > 0

        if cond1 or cond2:
            buy_price = order['buy']['price'] if order['buy']['maker'] else price
            e.Buy(symbol, buy_price, min(order['buy']['amount'],trade_amount), order['buy']['id'], order['buy']['maker'])
            order['buy']['amount'] -= min(order['buy']['amount'],trade_amount)
            e.Update(time_stamp,[symbol],{symbol:price})
        if cond3 or cond4:
            sell_price = order['sell']['price'] if order['sell']['maker'] else price
            e.Sell(symbol, sell_price, min(order['sell']['amount'],trade_amount), order['sell']['id'], order['sell']['maker'])
            order['sell']['amount'] -= min(order['sell']['amount'],trade_amount)
            e.Update(time_stamp,[symbol],{symbol:price})

        if time_stamp - loop_time > intervel:
            order = get_order(e,depth,order) #交易逻辑,这里未给出
            loop_time += int((time_stamp - loop_time)/intervel)*intervel

En este sentido, el gobierno de la República Popular China (PRC) ha aprobado una ley que prohíbe el uso de armas nucleares.

  • 1.当有新成交时,要先去撮合订单,再去根据最新的价格去下单。
  • 2.每个订单都有两个属性:maker——是否为maker,priority——撮合优先级,以买单为例,当买价小于卖一,标记为maker,当买价大于买一是标记为优先撮合,priority决定了价格等于买价是是否撮合,maker决定了手续费。
  • 3.订单的maker和priority是更新的,如下了一笔很大的超过盘口的买单,当出现一个价格大于买价时,此时剩余的成交量将是maker。
  • 4.策略的intervel是必须的,它可以代表行情的延时。

Reevaluación de la estrategia de la red

Finalmente llegamos a la etapa de la revisión real, aquí revisamos una de las estrategias de red más clásicas para ver si se alcanza el efecto esperado. El principio de la estrategia es que por cada aumento de precio del 1%, tenemos una lista vacía de un cierto valor (en lugar de tener varios pedidos), calculamos la compra de la venta de la lista de venta y la colocamos de antemano.Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)En la función, los parámetros son: pares de transacciones, valor de mantenimiento del 1% de desviación del precio, densidad de menús de suspensión de 0.3%, intervalo de reposo ms, tarifa de mantenimiento de menús de suspensión, tarifa de consumo de menús de mantenimiento.

El mercado de XTZ ha estado en una fase de agitación durante los últimos 5 días, lo que es muy adecuado para la red.img

Primero, revisamos el impacto de los diferentes tamaños de tenencia en los beneficios, y los beneficios de los mecanismos de retroevaluación tradicionales aumentarán con el aumento de los activos.

e1 = Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e1.account['USDT'])
e2 = Grid('XTZ',1000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e2.account['USDT'])
e3 = Grid('XTZ',10000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e3.account['USDT'])
e4 = Grid('XTZ',100000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e4.account['USDT'])

En total, se reanudaron cuatro grupos, con valores de almacenamiento de 100, 1000, 10000, 100000, respectivamente, y se reanudaron con un tiempo total de 1.3 s. Los resultados fueron los siguientes:

{'realised_profit': 28.470993031132966, 'margin': 0.7982662957624465, 'unrealised_profit': 0.0104554474048441, 'total': 10000028.481448, 'leverage': 0.0, 'fee': -0.3430967859046398, 'maker_fee': -0.36980249726699727, 'taker_fee': 0.026705711362357405}
{'realised_profit': 275.63148945320177, 'margin': 14.346335829979132, 'unrealised_profit': 4.4382117331794045e-14, 'total': 10000275.631489, 'leverage': 0.0, 'fee': -3.3102045933457784, 'maker_fee': -3.5800688964477048, 'taker_fee': 0.2698643031019274}
{'realised_profit': 2693.8701498889504, 'margin': 67.70120400534114, 'unrealised_profit': 0.5735269329348516, 'total': 10002694.443677, 'leverage': 0.0001, 'fee': -33.984021415250744, 'maker_fee': -34.879233866850974, 'taker_fee': 0.8952124516001403}
{'realised_profit': 22610.231198585603, 'margin': 983.3853688758861, 'unrealised_profit': -20.529965947304365, 'total': 10022589.701233, 'leverage': 0.002, 'fee': -200.87094000385412, 'maker_fee': -261.5849078470078, 'taker_fee': 60.71396784315319}

Se puede ver que el beneficio final se ha logrado en el valor de la tenencia de 28.4%, 27.5%, 26.9%, 22.6% respectivamente. Esto también se ajusta a la realidad, cuanto mayor sea el valor de la tenencia, mayor sea el valor de los pedidos, más probable es que se produzca una transacción parcial, y el beneficio final se realice en relación con el volumen de pedidos.img

También podemos retrospectar los efectos de diferentes parámetros en los beneficios de retrospección, como la densidad de los mensajes, el tiempo de reposo, los costos de los procedimientos, etc. Por ejemplo, el tiempo de reposo se cambia a 100 ms, en comparación con el tiempo de reposo de 1000 ms, para ver los beneficios. Los resultados de retrospección son los siguientes:

{'realised_profit': 29.079440803790423, 'margin': 0.7982662957624695, 'unrealised_profit': 0.0104554474048441, 'total': 10000029.089896, 'leverage': 0.0, 'fee': -0.3703702128662524, 'maker_fee': -0.37938946377435134, 'taker_fee': 0.009019250908098965}

Los ingresos aumentaron un poco, esto es debido a que la estrategia solo colgaba un grupo de pedidos, algunos pedidos no podían comer debido a los precios fluctuantes que no podían cambiar, y la reducción del tiempo de descanso mejoró este problema. Esto también muestra la importancia de la estrategia de la red para colgar varios grupos de pedidos.

Resumen

Esta innovación propone un nuevo sistema de retrospección basado en el flujo de pedidos, que puede simular en parte el estado de las capturas de pedidos pendientes, pedidos, transacciones, retrasos, etc., que refleja en parte el efecto del capital estratégico en las ganancias, que tiene un importante valor de referencia para las estrategias de alta frecuencia y las estrategias de cobertura, que indica la dirección para la optimización de los parámetros estratégicos.


Relacionados

Más.

Es posible.El principio estratégico es el 1% por cada aumento de precio. ¿Cuánto tardará en subir un 1%?

Es posible.El principio estratégico es el 1% por cada aumento de precio. ¿Qué es esto? ¿Cuánto tardará en subir un 1%?

La homilíaLos índices están en GB.

¿Qué quieres decir?¿Cuánta cantidad de datos es suficiente para que el sitio sea aceptado?

Las hierbas/upload/asset/1ff487b007e1a848ead.csv /upload/asset/1ff487b007e1a848ead.csv /upload/asset/1ff487b007e1a848ead.csv /upload/asset/1ff487b007e1a848ead.csv /upload/asset/

Las hierbasEsta es una buena manera de hacer una revisión, pero con una gran cantidad de datos de retroevaluación de profundidad.

Las hierbasEn comparación con la escala de disco real, es mucho más pequeño, en función del volumen de operaciones, 1M-20M al día.