3
fokus pada
1444
Pengikut

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

Dicipta dalam: 2023-08-08 22:31:47, dikemas kini pada: 2023-09-18 19:51:25
comments   2
hits   2751

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

Artikel sebelumnya mengkaji selang ketibaan pesanan dan menunjukkan sebab kita perlu melaraskan parameter secara dinamik dan cara menilai kualiti anggaran. Artikel ini akan menumpukan pada data yang mendalam dan mengkaji harga pertengahan (juga dipanggil harga saksama, harga mikro, dll.).

Data Kedalaman

Binance menyediakan muat turun data sejarah bagi petikan terbaik, termasuk best_bid_price: harga bida terbaik, iaitu harga bida maksimum, best_bid_qty: bilangan harga bida terbaik, best_ask_price: harga permintaan terbaik, best_ask_qty: bilangan harga permintaan terbaik , transaction_time: cap waktu. Data ini tidak termasuk peringkat kedua dan pesanan belum selesai yang lebih mendalam. Situasi pasaran yang dianalisis di sini ialah YGG pada 7 Ogos. Turun naik pasaran pada hari itu sangat drastik, dan jumlah data mencapai lebih daripada 9 juta.

Pertama, mari kita lihat pasaran hari ini Ia mempunyai pasang surut yang hebat Di samping itu, bilangan pesanan yang belum selesai pada hari itu juga telah berubah dengan ketara dengan turun naik pasaran (perbezaan antara harga jualan dan harga belian) telah menunjukkan dengan ketara keadaan Turun Naik pasaran. Mengikut statistik pasaran YGG pada hari itu, 20% daripada masa penyebaran adalah lebih besar daripada 1 tanda Pada era ini apabila pelbagai robot bersaing di pasaran, situasi ini jarang berlaku.

from datetime import date,datetime
import time
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
books = pd.read_csv('YGGUSDT-bookTicker-2023-08-07.csv')
tick_size = 0.0001
books['date'] = pd.to_datetime(books['transaction_time'], unit='ms')
books.index = books['date']
books['spread'] = round(books['best_ask_price'] - books['best_bid_price'],4)
books['best_bid_price'][::10].plot(figsize=(10,5),grid=True);

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

books['best_bid_qty'][::10].rolling(10000).mean().plot(figsize=(10,5),grid=True);
books['best_ask_qty'][::10].rolling(10000).mean().plot(figsize=(10,5),grid=True);

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

(books['spread'][::10]/tick_size).rolling(10000).mean().plot(figsize=(10,5),grid=True);

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

books['spread'].value_counts()[books['spread'].value_counts()>500]/books['spread'].value_counts().sum()
0.0001    0.799169
0.0002    0.102750
0.0003    0.042472
0.0004    0.022821
0.0005    0.012792
0.0006    0.007350
0.0007    0.004376
0.0008    0.002712
0.0009    0.001657
0.0010    0.001089
0.0011    0.000740
0.0012    0.000496
0.0013    0.000380
0.0014    0.000258
0.0015    0.000197
0.0016    0.000140
0.0017    0.000112
0.0018    0.000088
0.0019    0.000063
Name: spread, dtype: float64

Petikan Tidak Seimbang

Daripada perkara di atas, kita dapat melihat bahawa jumlah pesanan beli dan jual adalah sangat berbeza pada kebanyakan masa Perbezaan ini mempunyai kesan ramalan yang kuat pada keadaan pasaran jangka pendek. Alasannya adalah sama dengan alasan yang disebutkan dalam artikel sebelum ini bahawa pesanan belian kecil sering membawa kepada penurunan. Jika pesanan belum selesai di satu pihak adalah jauh lebih kecil daripada pesanan di sebelah yang lain, dan dengan mengandaikan bahawa jumlah pesanan beli dan jual aktif sudah hampir, bahagian dengan pesanan belum selesai yang lebih kecil akan lebih berkemungkinan untuk dimakan, dengan itu mendorong harga perubahan. Petikan tidak seimbang diwakili oleh I: Pemikiran tentang strategi perdagangan frekuensi tinggi (4) Di mana Q_b mewakili kuantiti pesanan beli (best_bid_qty), dan Q_a mewakili kuantiti pesanan jual (best_ask_qty).

Tentukan harga pertengahan: Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

Rajah berikut menunjukkan hubungan antara kadar perubahan harga pertengahan dalam selang berikutnya dan ketidakseimbangan I. Seperti yang dijangkakan, apabila saya meningkat, harga lebih berkemungkinan meningkat dan semakin hampir kepada 1, magnitud perubahan harga juga semakin pantas. Dalam perdagangan frekuensi tinggi, tujuan memperkenalkan harga pertengahan adalah untuk meramalkan perubahan harga masa depan dengan lebih baik, dengan kata lain, lebih kecil perbezaan dari harga masa depan, lebih baik harga pertengahan ditakrifkan. Jelas sekali, ketidakseimbangan pesanan belum selesai memberikan maklumat tambahan untuk ramalan strategi Dengan mengambil kira perkara ini, kami mentakrifkan harga pertengahan wajaran. Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

books['I'] = books['best_bid_qty'] / (books['best_bid_qty'] + books['best_ask_qty'])
books['mid_price'] = (books['best_ask_price'] + books['best_bid_price'])/2
bins = np.linspace(0, 1, 51)
books['I_bins'] = pd.cut(books['I'], bins, labels=bins[1:])
books['price_change'] = (books['mid_price'].pct_change()/tick_size).shift(-1)
avg_change = books.groupby('I_bins')['price_change'].mean()
plt.figure(figsize=(8,5))
plt.plot(avg_change)
plt.xlabel('I Value Range')
plt.ylabel('Average Mid Price Change Rate');
plt.grid(True)

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

books['weighted_mid_price'] = books['mid_price'] + books['spread']*books['I']/2
bins = np.linspace(-1, 1, 51)
books['I_bins'] = pd.cut(books['I'], bins, labels=bins[1:])
books['weighted_price_change'] = (books['weighted_mid_price'].pct_change()/tick_size).shift(-1)
avg_change = books.groupby('I_bins')['weighted_price_change'].mean()
plt.figure(figsize=(8,5))
plt.plot(avg_change)
plt.xlabel('I Value Range')
plt.ylabel('Weighted Average Mid Price Change Rate');
plt.grid(True)

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

Laraskan harga pertengahan wajaran

Daripada rajah, kita dapat melihat bahawa harga pertengahan wajaran berubah jauh lebih sedikit daripada I yang berbeza, yang bermaksud harga pertengahan wajaran adalah lebih sesuai. Tetapi masih terdapat beberapa ketetapan, seperti sekitar 0.2 dan 0.8, di mana sisihan agak besar. Ini menunjukkan bahawa saya masih boleh menyumbang maklumat tambahan. Oleh kerana harga pertengahan berwajaran mengandaikan bahawa istilah pembetulan harga adalah linear sepenuhnya dengan I, ini jelas tidak benar Seperti yang dapat dilihat daripada rajah di atas, apabila saya menghampiri 0 dan 1, sisihan adalah lebih cepat dan ia bukan a. hubungan linear.

Untuk paparan yang lebih intuitif, saya ditakrifkan semula di sini:

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

pada masa ini:

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

Memerhatikan borang ini, kita boleh mendapati bahawa harga pertengahan wajaran ialah pembetulan kepada harga pertengahan purata Pekali bagi istilah pembetulan ialah Spread, dan istilah pembetulan ialah fungsi I. Harga pertengahan wajaran hanya menganggap bahawa. hubungan ini ialah I/2. Pada masa ini, kelebihan taburan terlaras I (-1,1) dicerminkan adalah simetri tentang asalan, yang memudahkan kita mencari hubungan yang sesuai bagi fungsi tersebut. Perhatikan graf, fungsi ini harus memenuhi hubungan kuasa ganjil I, yang konsisten dengan pertumbuhan pantas kedua-dua belah dan simetri tentang asalan Di samping itu, dapat diperhatikan bahawa nilai berhampiran asalan adalah hampir dengan linear, dan apabila saya ialah 0, fungsi Hasilnya ialah 0, dan apabila saya ialah 1, hasil fungsi ialah 0.5. Jadi rasa fungsi ini kelihatan seperti:

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

Di sini N ialah nombor genap positif Selepas ujian sebenar, adalah lebih baik apabila N ialah 8. Setakat ini, artikel ini mencadangkan harga pertengahan wajaran yang disemak semula:

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

Pada ketika ini, perubahan dalam harga pertengahan yang diramalkan pada dasarnya tidak ada kaitan dengan I. Walaupun keputusan ini lebih baik daripada harga pertengahan wajaran yang mudah, ia tidak boleh digunakan dalam perdagangan sebenar Ia hanya idea yang diberikan di sini. Artikel 2017 oleh S Stoikov memperkenalkan kaedah rantai MarkovMicro-Price, dan memberikan kod yang berkaitan, anda juga boleh mengkajinya.

books['I'] = (books['best_bid_qty'] - books['best_ask_qty']) / (books['best_bid_qty'] + books['best_ask_qty'])
books['weighted_mid_price'] = books['mid_price'] + books['spread']*books['I']/2
bins = np.linspace(-1, 1, 51)
books['I_bins'] = pd.cut(books['I'], bins, labels=bins[1:])
books['weighted_price_change'] = (books['weighted_mid_price'].pct_change()/tick_size).shift(-1)
avg_change = books.groupby('I_bins')['weighted_price_change'].sum()
plt.figure(figsize=(8,5))
plt.plot(avg_change)
plt.xlabel('I Value Range')
plt.ylabel('Weighted Average Mid Price Change Rate');
plt.grid(True)

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

books['adjust_mid_price'] = books['mid_price'] + books['spread']*(books['I'])*(books['I']**8+1)/4
bins = np.linspace(-1, 1, 51)
books['I_bins'] = pd.cut(books['I'], bins, labels=bins[1:])
books['adjust_mid_price'] = (books['adjust_mid_price'].pct_change()/tick_size).shift(-1)
avg_change = books.groupby('I_bins')['adjust_mid_price'].sum()
plt.figure(figsize=(8,5))
plt.plot(avg_change)
plt.xlabel('I Value Range')
plt.ylabel('Weighted Average Mid Price Change Rate');
plt.grid(True)

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

books['adjust_mid_price'] = books['mid_price'] + books['spread']*(books['I']**3)/2
bins = np.linspace(-1, 1, 51)
books['I_bins'] = pd.cut(books['I'], bins, labels=bins[1:])
books['adjust_mid_price'] = (books['adjust_mid_price'].pct_change()/tick_size).shift(-1)
avg_change = books.groupby('I_bins')['adjust_mid_price'].sum()
plt.figure(figsize=(8,5))
plt.plot(avg_change)
plt.xlabel('I Value Range')
plt.ylabel('Weighted Average Mid Price Change Rate');
plt.grid(True)

Pemikiran tentang strategi perdagangan frekuensi tinggi (4)

ringkaskan

Harga pertengahan adalah sangat penting untuk strategi frekuensi tinggi Ia adalah ramalan harga jangka pendek masa hadapan, jadi harga pertengahan mestilah setepat mungkin. Harga pertengahan yang diperkenalkan di atas semuanya berdasarkan data pasaran, kerana hanya satu harga pasaran digunakan dalam analisis. Dalam perdagangan sebenar, strategi harus menggunakan semua data sebanyak mungkin, terutamanya apabila terdapat pertukaran perdagangan dalam perdagangan sebenar, dan ramalan harga pertengahan harus diuji dengan harga transaksi sebenar. Saya masih ingat bahawa Stoikov seolah-olah telah menyiarkan tweet yang mengatakan bahawa harga pertengahan sebenar harus menjadi purata wajaran kebarangkalian transaksi beli-satu-jual Isu ini baru sahaja dikaji dalam artikel sebelumnya. Oleh kerana ruang yang terhad, isu-isu ini akan dibincangkan secara terperinci dalam artikel seterusnya.