資源の読み込みに... 荷物...

筆付取引に基づく高周波回音システムとK線回音の欠陥

作者: リン・ハーン小草, 作成日:2020-06-04 16:48:02, 更新日:2023-10-08 19:46:18

img

私はここにいますビンアンは空の超高で多超低多通貨ヘッジ戦略同時期に,K線回帰エンジンが公開され,最初の報告は1時間のK線回帰に基づいたもので,この戦略の有効性を検証した.しかし,実際の公開戦略の休眠時間は1sであり,かなり高い頻度で,時間K線回帰は明らかに正確な結果を得ることができない戦略である.分間線回帰結果として,回測利益は大きく向上したが,秒次状態ではどのパラメータを使用すべきかを定めるのが困難であり,全体策略の理解も明確ではない.主な原因は,K線に基づく回測の重要な欠点である.

K線復習に基づく問題

まず,歴史K線とは何か.K線データには4つの価格,開始時間2つ,区間取引が含まれます.ほとんどの量化プラットフォームおよびフレームワークはK線回測に基づいています.FMZ量化プラットフォームもティックレベルの回測を提供しています.K線回測のスピードは高速で,ほとんどの場合問題ありません.しかし,非常に深刻な欠陥もあります.特に,多種回測戦略と高周波戦略は,正しい結論を出すことはほとんどできません.

まず,時間の問題である.K線データの最高価格と最低価格の時間は与えられていない,考慮する必要はないが,最も重要な開盤と閉盤価格の始まりは開盤と閉盤時間ではない.

2つの品種の利息を分岐点で回転させると想像してください. 通常は10ドルの差です. 10:01時に,A契約が100ドル,B契約が112ドル,利息が12ドルで閉じることがわかりました.

実際には10:00:45にA契約が100ドルの取引を発生させ,その後取引がなくなり,B契約が10:00:58に112ドルの取引を発生させ,この瞬間10:01で両価格も存在しない.この時点で取引価格がどのくらいで,ヘッジがどのくらいの差を食うことができるのか,誰も知らない.ある可能性は,10:00:58にA契約の買い/売は101.9-102.1で,根本的に2つの差はない.これは我々の戦略最適化に大きな誤解をもたらす.

次に撮影の問題である.実際の撮影は価格優先,時間優先である.もし買い手が1値を超える場合は,通常,直接1値以上で取引を行い,代わりに注文簿に待機します.K線データは明らかに1値以上で撮影できません.

最後に,戦略そのものの取引の市場への影響は,小額回転の場合,影響はほとんどない.しかし,取引比率が大きい場合,市場への衝撃をもたらす.ただし,即時取引時に価格滑り点は大きくなるだけでなく,あなたの請求書の回転が完了した場合,実際に他の原発の買い手取引を奪う場合,蝶の効果が市場に影響を与える.この影響は量化することはできません.高頻度取引は小さな資金しか容認できないという経験に基づいてのみ与えることができます.

リアルタイムで深さとティックの回測

FMZはリアルディスク回路を提供し,実際の歴史的20フィートの深さ,リアルタイムで2秒単位のティック,一筆毎の取引などのデータを入手し,それに基づいて行う.リアルディスク再生機能■このような回測データは非常に多く,回測速度も遅い.通常は2日しか回測できない.比較的高い周波数や時間判断に厳格な戦略のために,実盤回測は必須である.FMZが収集する取引対と時間は長くないが,700億以上の歴史的データもある.現在の回測メカニズムでは,一発売よりも大きい請求がすぐに完全に撮影され,一発売よりも少ない回測が列列に入ると考えられない.この回測メカニズムでは,K線回測の最初の2つの問題を解決したが,最後の問題を解決することができなかった.そして,データ測定が非常に大きいため,回測速度と時間範囲は制限されている.

img

決済注文流をベースにした回計メカニズム

K線情報は少ないし,深さは偽深さもある可能性があるが,あるデータは市場の真の取引意向であり,最もリアルな取引の歴史のを反映する.これは注文流に基づいた高周波回測システムを示唆し,実際の回測量の量を大幅に削減し,一定程度はアニメ化成交が市場に影響を与える.

私は最近5日間のXTZ永続契約の決済をダウンロードしました.https://www.fmz.com/upload/asset/1ff487b007e1a848ead.csvメディアの報道によると,この記事では,SNSのニュース記事や,SNSのニュース記事など,SNSのニュース記事や,SNSのニュース記事などについて,

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

データとは2次元リストであり,取引時間の順序に順序付けされている.具体的には,種類名,取引価格,取引時間帯,取引数,販売单の主動取引かどうかである. 売買がある場合,各取引には買い手と売り手が含まれ,買い手は市場メーカーであり,売り手は主動取引テイカーである場合,最後のデータはTrueである.

まず,取引方向に基づいて,市場での買取と売却をかなり正確に推測することができます.主動的な出荷注文の場合,この時点で買取価格は取引価格であり,主動的な買取注文の場合,販売価格は取引価格であり,新しい取引が新しい表盤を更新し,更新されていない最後の結果を保持します. 上記のデータの最後の瞬間を簡単に推し進める. 買取価格は2.903,販売価格は2.904です.

オーダーフローにより,次のように撮影することができる:例えば1回の購入で価格が価格で,下注量は金額で,このときの盘口は購入・販売をそれぞれbid,ask.として設定する.価格がaskより低ければbidより高い場合はmakerとして判断し,優先撮影ができます.その後,オーダーの存在時間中のすべての取引価格が priceよりも低かまたは等しい場合は,このオーダーに撮影されます.

この撮影の問題は,注文がテイカーである場合,実際に新しい注文が撮影されるのを待つのではなく,即座に取引が可能であることが容易に見えます. まず,我々はリストアップの注文量について考えていません.データがある場合でも,直接判断する取引も深さを変化させ,市場に影響します. そして,新しい注文に基づく撮影は,歴史上の実際の注文をあなたの注文に代入することに等しいです. いずれにせよ,市場自体での取引量の制限を超えており,最終利益も感情によって生じる最大利益を超えてはならない. 部分的な撮影メカニズムも,注文の取引量に影響し,利益に影響する戦略の収益,定量的な戦略の容量を表しています. 従来の測定ではなく,資金の倍増で利益が倍増するケースはありません.

また,小細かい点もあります. もし注文の買取価格が1つに等しい場合,実際に買取価格が撮影される確率がまだあるので,予約の優先度や取引の確率が考慮する必要があります.

コード撮影

取引所のオブジェクトは,最初の紹介を参照することができます. 基本的には変更されていません. ただ,メーカーとテイカーの手続料の違いを追加し,再テストの速度を最適化しました. 下には主に撮影コードが紹介されます.

    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

この記事へのトラックバック一覧です.

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

網の戦略を復習する

そして,実際に再テストの段階に達すると,最も古典的な格子戦略を再テストし,期待された効果が達成されたかどうかを確認します. 戦略原理は,価格上昇ごとに1%の値上がりで,私たちはある価値の空白なリストを保持します (反して,複数の注文を保持します). 売り札を計算して,予約を押します. コードが放出されません. すべてのコードを包装します.Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)函数では,パラメータは,それぞれ:取引対,価格偏差1%の保有値,挂单密度0.3%,休眠間隔ms,挂单手续費,食单手续費である.

XTZは5日間の波動期を過ごしており,格子にぴったりです.img

まず,異なる保有量による収益への影響を回計する.従来の回計メカニズムの回計による収益は,保有量増加に伴い一定に増加する.

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

100,1000,10000,100000,および1つのセットを合計して再測定した.

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

最終的に達成された利益はそれぞれ保有価値の28.4%,27.5%,26.9%,22.6%である. これは,実際の状況にも一致する.保有価値が大きいほど,挂牌価値が大きいほど,部分取引が起こる可能性が高い状況,最終的に達成された利益は,挂牌数量と比較して小さい. 下の図は,保有価値がそれぞれ100と10,000の相対的な利益の比較である.img

また,異なるパラメータが回線回帰への影響を回線回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回帰回

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

収益は少し向上した.これは,戦略が1つのセットだけを掲げているため,いくつかの注文が変動する価格のために食べられない可能性があるため,睡眠時間の減少がこの問題を改善した.これはまた,ネットワーク戦略が複数のセットを掲げていることの重要性を示しています.

概要

本文の革新は,注文流に基づいた新しい回計システムを示し,部分的に予約,注文,部分的な取引,延期などの撮影状況を模擬し,部分的に戦略資金の収益への影響を反映し,高周波戦略とヘッジ戦略にとって重要な参照値であり,高精度回計は戦略パラメータの最適化のために方向性を示し,長期にわたって実用化され,回計のデータ量と回計速度が非常に速く,より良く制御されている.


関連性

もっと

可能性戦略的には,価格が上昇するごとに1%です. どれくらいの時間で1%上昇するのでしょうか?

可能性戦略的には,価格が上昇するごとに1%です. ほら ほら どれくらいの時間で1%上昇するのでしょうか?

説教検索結果もGBに載っています.

言ったウェブは,このデータ量について,非常に多くの情報を共有しています.

小草/upload/asset/1ff487b007e1a848ead.csv ロープをアップロードする

小草深い回路で回路を回すのは,とても難しいです.

小草1Mから20Mの取引量です.