Deficiência do sistema de retorno de alta frequência baseado em transações por papel e retorno de linha K

Autora:Ervas daninhas, Criado: 2020-06-04 16:48:02, Atualizado: 2023-10-08 19:46:18

img

Estou aqui.O Bitcoin é uma estratégia de hedge de moeda mais alta ou mais baixa.No entanto, o tempo de repouso da estratégia pública atual é de 1s, uma estratégia bastante alta, e não é possível obter resultados precisos com o repouso da linha K.Retorno da linha do minutoComo resultado, o retorno do retorno foi muito melhorado, mas ainda não foi possível determinar quais parâmetros devem ser usados em segundos, e a compreensão da estratégia como um todo não é muito clara. A principal razão é a importante desvantagem do retorno baseado na linha K.

Questões baseadas na retrospecção da linha K

Primeiro, o que é a linha K histórica? Um dado da linha K contém quatro preços, dois horários iniciais e transações intercalares. A maioria das plataformas e estruturas de quantificação são baseadas no retorno da linha K, a plataforma de quantificação FMZ também oferece retorno de nível de tique. A velocidade do retorno da linha K é rápida e, na maioria dos casos, sem problemas, mas também há falhas muito graves, especialmente as estratégias de retorno de múltiplas variedades e as estratégias de alta frequência, que dificilmente podem chegar às conclusões corretas.

Primeiro é a questão do tempo, o tempo de preços mais altos e mais baixos dos dados da linha K não é dado, não é necessário considerar, mas o mais importante é que o início do preço de abertura e fechamento não é o início do tempo de abertura e fechamento. Mesmo as variedades de negociação menos frias, muitas vezes não são negociadas por dez segundos, e quando analisamos as estratégias de várias variedades, muitas vezes assumimos que o preço de abertura e o preço de fechamento são simultâneos, o que também é a base para o cálculo do preço de fechamento.

Imaginem que os ganhos de duas variedades, que costumam ter um diferencial de 10 dólares, são retrospectivamente analisados em linha de minuto e agora são descobertos às 10:01, quando o contrato A fecha com um preço de 100 dólares, o contrato B com 112 dólares e o diferencial é de 12 dólares, então a estratégia começa a ser hedgeada e, em algum momento, o diferencial retorna e a estratégia ganha 2 dólares de retorno.

A situação real pode ser que, às 10h45min, o contrato A produza uma transação de US$100, depois não há transação, o contrato B, às 10h58min, ocorre uma transação de US$112, e, neste momento, às 10h01min, ambos os preços não existem. Qual é o preço da transação e quanto diferencial o hedge pode comer?

Em seguida, o problema da captura, a captura real é prioridade de preço, prioridade de tempo. Se o comprador exceder um preço de venda, geralmente transaciona diretamente com um preço de venda, em vez disso, entra no livro de pedidos de espera.

Finalmente, o impacto da estratégia em si na transação no mercado, se for um pequeno retorno de capital, não tem grande impacto. Mas se a proporção de transações for grande, causará um impacto no mercado. Não só o deslizamento de preço no momento da transação imediata será grande, mas se o retorno da transação for feito, efetivamente se apropriar das transações de outros comerciantes que deveriam ser comprados, o efeito borboleta terá impacto no mercado.

Retrospecção baseada em profundidade e tick em tempo real

O FMZ fornece um retrospecto em disco real, capaz de obter dados históricos reais de profundidade de 20 arquivos, ticks em segundo real, transações por letra e muito mais.Função de reprodução de disco realO FMZ recolhe pares de transações de curta duração, mas também mais de 70 mil milhões de dados históricos. O mecanismo de captura atual é de que se uma compra for maior do que uma venda, não importa se a compra for imediatamente completa, e menor do que uma venda entrar em fila. Este mecanismo resolve os dois primeiros problemas de captura de linha K, mas não resolve o último problema. E, como a medida de dados é muito grande, a velocidade e o tempo de captura são limitados.

img

Mecanismo de retrospecção baseado no fluxo de pedidos transacionados por bilhete

Há pouca informação sobre a linha K, e a profundidade pode ser falsa, mas há um tipo de dados que reflete a verdadeira vontade de negociação do mercado, o que reflete a história mais real de transações. Este artigo propõe um sistema de retomada de alta freqüência baseado no fluxo de pedidos, que reduz significativamente o volume de retomada em disco real e, até certo ponto, o impacto do retomado analógico no mercado.

Eu descarreguei o recente contrato de permanência do XTZ por 5 dias (http://www.xtz.com/)https://www.fmz.com/upload/asset/1ff487b007e1a848ead.csvA partir de agora, o número de casos confirmados de doenças cardiovasculares aumentou para cerca de 2 milhões, o que significa que o número de casos confirmados de doenças cardiovasculares aumentou para cerca de 2 milhões.

[['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'],

Os dados são uma lista bidimensional, ordenada por ordem de tempo de transação. Os significados específicos são: nome da variedade, preço da transação, horário da transação, número de transações, se o pedido foi realizado ativamente.

Em primeiro lugar, de acordo com a direção da transação, pode-se inferir com bastante precisão o preço de compra e venda no mercado, se for uma ordem de venda ativa, o preço de compra neste momento é o preço da transação, se for uma ordem de compra ativa, o preço da venda é o preço da transação, se houver uma nova transação, a nova disputa será atualizada, o resultado da última vez não será atualizado.

De acordo com o fluxo de pedidos, pode ser feito da seguinte forma: em um pedido, por exemplo, o preço é o preço, a quantidade de pedido é o montante, neste momento, o disco é comprado e vendido, respectivamente, como bid, ask. Se o preço for menor que o preço do pedido é maior que o bid, o primeiro julgamento é feito pelo maker, e a troca pode ser priorizada, então todas as transações individuais com preços inferiores ou iguais ao preço do pedido devem ser filmadas com esse pedido.

É fácil ver um problema com esse tipo de captura, se o pedido é o tomador, a realidade é que pode ser transacionado imediatamente, em vez de esperar por um novo pedido para ser filmado. Primeiro, não consideramos o volume de pedidos no prato, mesmo que haja dados, o julgamento direto da transação também mudou de profundidade e afeta o mercado. Em vez disso, a captura baseada em novos pedidos é o equivalente a substituir um pedido histórico real por seu pedido, que não ultrapassa os limites do volume de transações do mercado em si, e o lucro final não pode exceder o lucro máximo gerado pelo sentimento.

Há ainda alguns pequenos detalhes, se o preço de compra do pedido é igual ao preço de compra, na verdade, ainda há uma certa probabilidade de que o preço de compra seja capturado, e é necessário considerar a prioridade do pedido e a probabilidade de transação, etc. É mais complexo, não é considerado aqui.

Captura de códigos

Os objetos da troca podem ser referenciados na introdução inicial, basicamente inalterada, somente adicionando a diferença entre os custos do fabricante e do tomador e otimizando a velocidade de retrospecção.

    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

O que é que ele está a fazer?

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

Reavaliação da estratégia da rede

Finalmente, chegando à fase de retrospecção real, nós aqui retrospeccionamos uma das estratégias mais clássicas da rede, para ver se alcançamos o efeito esperado. O princípio estratégico é que, com cada aumento de preço de 1%, temos uma lista vazia de um determinado valor (ao contrário, temos vários pedidos), calculamos a lista de venda e venda. O código não é liberado.Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)Na função, os parâmetros são: pares de transações, desvio de preço de 1% do valor de detenção, densidade de pendências de 0,3%, intervalo de repouso ms, taxa de pendências de pendências e taxa de alimentação de pendências.

O XTZ está em uma fase de convulsão nos últimos cinco dias, o que é bom para a grelha.img

Primeiro, analisamos o impacto dos diferentes tamanhos de estoque nos ganhos, e os ganhos analisados pelos mecanismos tradicionais certamente aumentam com o aumento dos estoques.

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'])

O total de quatro grupos foi re-mesurado, com valores de armazenamento de 100, 1000, 10000, 100000, respectivamente. O resultado foi o seguinte:

{'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}

Pode-se ver que o lucro finalmente alcançado é de 28,4%, 27,5%, 26,9%, 22,6% do valor da detenção, respectivamente. Isso também está de acordo com a realidade, quanto maior o valor da detenção, maior o valor da listagem, maior a probabilidade de ocorrer transações partiais, e o lucro final alcançado é menor em relação ao volume da listagem.img

Também podemos reverter o efeito de diferentes parâmetros sobre os ganhos de reverter, como densidade de ligação, tempo de sono, custos de processamento, etc. Por exemplo, o tempo de sono é alterado para 100 ms, em comparação com o tempo de sono de 1000 ms, para ver o ganho. Os resultados do reverter são os seguintes:

{'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}

Os ganhos aumentaram um pouco, o que explica a importância de uma estratégia de rede para pendurar vários grupos de pedidos.

Resumo

Esta inovação propõe um novo sistema de retrospecção baseado no fluxo de pedidos, que pode simular em parte a captura de pedidos pendurados, pedidos, transações, atrasos, etc., em parte refletindo o impacto do volume de capital estratégico nos ganhos, tem um importante valor de referência para estratégias de alta frequência e estratégias de hedge, retrospecção de alta precisão indica a direção para a otimização de parâmetros estratégicos.


Relacionados

Mais.

É possível.A estratégia é 1% por cada aumento de preço. Quanto tempo para um aumento de 1%?

É possível.A estratégia é 1% por cada aumento de preço. - O que foi? Quanto tempo para um aumento de 1%?

homilhaO índice está em GB.

DsaidasiO que é que o site está a fazer com esse volume de dados?

Ervas daninhas/upload/asset/1ff487b007e1a848ead.csv

Ervas daninhasE isso é muito bom, porque o volume de dados de retomada de profundidade é muito grande.

Ervas daninhasO preço é muito menor do que o retorno do disco real, considerando o volume de negócios, 1M-20M por dia.