وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ہائی فریکوئنسی ٹریڈنگ کی حکمت عملیوں کے بارے میں خیالات (4)

مصنف:FMZ~Lydia, تخلیق: 2023-08-10 13:44:30, تازہ کاری: 2023-09-12 15:51:24

img

ہائی فریکوئنسی ٹریڈنگ کی حکمت عملیوں کے بارے میں خیالات (4)

پچھلے مضمون میں پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرنے کی ضرورت اور آرڈر کی آمد کے وقفوں کا مطالعہ کرکے تخمینوں کے معیار کا اندازہ لگانے کا طریقہ دکھایا گیا۔ یہ مضمون گہرائی کے اعداد و شمار پر توجہ مرکوز کرے گا اور درمیانی قیمت (جسے منصفانہ قیمت یا مائکرو قیمت بھی کہا جاتا ہے) کا مطالعہ کرے گا۔

گہرائی کے اعداد و شمار

بائننس بہترین_بڈ_پریس (سب سے زیادہ خریداری کی قیمت) ، بہترین_بڈ_کوانٹیٹی (سب سے بہترین بولی کی قیمت پر مقدار) ، بہترین_اسک_پریس (سب سے کم فروخت کی قیمت) ، بہترین_اسک_کوانٹیٹی (سب سے بہترین بولی کی قیمت پر مقدار) ، اور ٹرانزیکشن_ٹائم کے لئے تاریخی ڈیٹا ڈاؤن لوڈ فراہم کرتا ہے۔ اس ڈیٹا میں دوسرا یا گہرا آرڈر بک لیول شامل نہیں ہے۔ اس مضمون میں تجزیہ 7 اگست کو YGG مارکیٹ پر مبنی ہے ، جس میں 9 ملین سے زیادہ ڈیٹا پوائنٹس کے ساتھ نمایاں اتار چڑھاؤ کا سامنا کرنا پڑا۔

سب سے پہلے ، آئیے اس دن مارکیٹ کے حالات پر ایک نظر ڈالیں۔ وہاں بڑے اتار چڑھاؤ تھے ، اور آرڈر بک کا حجم مارکیٹ کی اتار چڑھاؤ کے ساتھ ساتھ نمایاں طور پر بدل گیا۔ پھیلاؤ ، خاص طور پر ، مارکیٹ میں اتار چڑھاؤ کی حد کی نشاندہی کرتا ہے ، جو بہترین مانگ اور بولی کی قیمتوں کے مابین فرق ہے۔ اس دن YGG مارکیٹ کے اعدادوشمار میں ، پھیلاؤ 20٪ وقت کے لئے ایک ٹک سے زیادہ تھا۔ آرڈر بک میں مقابلہ کرنے والے مختلف تجارتی بوٹس کے اس دور میں ، ایسی صورتحال تیزی سے کم ہوتی جارہی ہے۔

میں [1]:

from datetime import date,datetime
import time
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

[2] میں:

books = pd.read_csv('YGGUSDT-bookTicker-2023-08-07.csv')

میں [3]:

tick_size = 0.0001

[4] میں:

books['date'] = pd.to_datetime(books['transaction_time'], unit='ms')
books.index = books['date']

میں [5]:

books['spread'] = round(books['best_ask_price'] - books['best_bid_price'],4)

[6] میں:

books['best_bid_price'][::10].plot(figsize=(10,5),grid=True);

باہر[6]:

img

میں [7]:

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);

آؤٹ[7]:

img

[8] میں:

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

باہر[8]:

img

[9] میں:

books['spread'].value_counts()[books['spread'].value_counts()>500]/books['spread'].value_counts().sum()

آؤٹ [9]:

img

غیر متوازن اقتباسات

غیر متوازن قیمتوں کا تعین زیادہ تر وقت خرید اور فروخت کے احکامات کے مابین آرڈر بک کے حجم میں نمایاں فرق سے ہوتا ہے۔ اس فرق کا قلیل مدتی مارکیٹ کے رجحانات پر ایک مضبوط پیش گوئی اثر پڑتا ہے ، اسی طرح کی وجہ سے جو پہلے ذکر کی گئی ہے کہ خرید آرڈر کے حجم میں کمی اکثر کمی کا باعث بنتی ہے۔ اگر آرڈر بک کا ایک رخ دوسرے سے نمایاں طور پر چھوٹا ہوتا ہے ، فرض کریں کہ فعال خرید اور فروخت کے احکامات حجم میں ملتے جلتے ہیں ، تو اس سے زیادہ امکان ہوتا ہے کہ چھوٹا رخ استعمال کیا جائے ، اس طرح قیمتوں میں بدلاؤ آئے گا۔ غیر متوازن قیمتوں کا تعین حرف I کے ذریعہ کیا جاتا ہے۔

img

جہاں Q_b زیر التواء خریدنے کے احکامات کی رقم (best_bid_qty) اور Q_a زیر التواء فروخت کرنے کے احکامات کی رقم (best_ask_qty) کی نمائندگی کرتا ہے۔

درمیانی قیمت کی وضاحت کریں:

img

مندرجہ ذیل گراف میں اگلے 1 وقفے میں درمیانی قیمت کی تبدیلی کی شرح اور عدم توازن I کے مابین تعلق دکھایا گیا ہے۔ جیسا کہ توقع کی جاتی ہے ، قیمت میں اضافے کا امکان زیادہ ہوتا ہے اور جتنا یہ 1 کے قریب ہوجاتا ہے ، قیمت کی تبدیلی میں تیزی آتی ہے۔ اعلی تعدد کی تجارت میں ، انٹرمیڈیٹ قیمت کا تعارف مستقبل کی قیمتوں میں تبدیلیوں کی بہتر پیش گوئی کرنا ہے ، یعنی ، اور مستقبل کا قیمت کا فرق چھوٹا ہوتا ہے ، انٹرمیڈیٹ قیمت کو بہتر طور پر بیان کیا جاتا ہے۔ ظاہر ہے کہ زیر التواء آرڈرز کا عدم توازن حکمت عملی کی پیش گوئی کے لئے اضافی معلومات فراہم کرتا ہے ، اس کو ذہن میں رکھتے ہوئے ، وزن شدہ درمیانی قیمت کی وضاحت کرنا:

img

[10] میں:

books['I'] = books['best_bid_qty'] / (books['best_bid_qty'] + books['best_ask_qty'])

[11] میں:

books['mid_price'] = (books['best_ask_price'] + books['best_bid_price'])/2

میں [12]:

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)

آؤٹ [1]:

img

[13] میں:

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)

آؤٹ [1]:

img

وزن شدہ درمیانی قیمت کو ایڈجسٹ کریں

گراف سے ، یہ مشاہدہ کیا جاسکتا ہے کہ I کی مختلف اقدار کے مقابلے میں وزن والی درمیانی قیمت میں چھوٹے تغیرات دکھائے جاتے ہیں ، جس سے یہ ظاہر ہوتا ہے کہ یہ بہتر فٹ ہے۔ تاہم ، ابھی بھی کچھ انحرافات ہیں ، خاص طور پر 0.2 اور 0.8 کے ارد گرد۔ اس سے یہ ظاہر ہوتا ہے کہ میں اب بھی اضافی معلومات فراہم کرتا ہوں۔ قیمت کی اصلاح کی اصطلاح اور I کے مابین مکمل طور پر لکیری تعلقات کا مفروضہ ، جیسا کہ وزن والی درمیانی قیمت سے مراد ہے ، حقیقت سے ہم آہنگ نہیں ہے۔ گراف سے دیکھا جاسکتا ہے کہ جب میں 0 اور 1 کی طرف جاتا ہوں تو انحراف کی رفتار میں اضافہ ہوتا ہے ، جس سے غیر لکیری تعلق ظاہر ہوتا ہے۔

ایک زیادہ بدیہی نمائندگی فراہم کرنے کے لئے، یہاں I کی ایک نئی تعریف ہے:

I کی نظر ثانی شدہ تعریف:

img

اس وقت:

img

مشاہدے پر ، یہ محسوس کیا جاسکتا ہے کہ وزن والی درمیانی قیمت اوسط درمیانی قیمت کی اصلاح ہے ، جہاں اصلاح کی مدت کو پھیلاؤ سے ضرب دیا جاتا ہے۔ اصلاح کی مدت I کا ایک فنکشن ہے ، اور وزن والی درمیانی قیمت I / 2 کا ایک سادہ رشتہ فرض کرتی ہے۔ اس معاملے میں ، ایڈجسٹ شدہ I تقسیم (-1، 1) کا فائدہ واضح ہوجاتا ہے ، کیونکہ I اصل کے گرد متوازن ہے ، جس سے فنکشن کے لئے مناسب تعلق تلاش کرنا آسان ہوجاتا ہے۔ گراف کا جائزہ لینے سے ، ایسا لگتا ہے کہ اس فنکشن کو I کی طاقتوں کو پورا کرنا چاہئے ، کیونکہ یہ دونوں اطراف میں تیزی سے نمو اور اصل میں متوازن ہے۔ اس کے علاوہ یہ مشاہدہ کیا جاسکتا ہے کہ اصل کے قریب کی اقدار لکیری کے قریب ہیں۔ مزید برآں ، جب I 0 ہے تو فنکشن کا نتیجہ 0 ہے اور جب I نتیجہ 1 ہے تو 0.5 ہے۔ لہذا ، یہ قیاس آرائی کی جاتی ہے کہ فنکشن کا فارمولا:

img

یہاں N ایک مثبت جوڑا نمبر ہے، اصل ٹیسٹنگ کے بعد، یہ بہتر ہے جب N 8 ہے. اب تک اس کاغذ میں ترمیم شدہ وزن درمیانی قیمت پیش کرتا ہے:

img

اس مقام پر ، درمیانی قیمتوں میں ہونے والی تبدیلیوں کی پیش گوئی کا اب I سے نمایاں تعلق نہیں ہے۔ اگرچہ یہ نتیجہ سادہ وزن والی درمیانی قیمت سے قدرے بہتر ہے ، لیکن یہ ابھی بھی حقیقی تجارتی منظرناموں میں قابل اطلاق نہیں ہے۔ یہ صرف ایک تجویز کردہ نقطہ نظر ہے۔ ایس اسٹوکوف کے 2017 کے ایک مضمون میں ،مائیکرو پرائسمارکوف چین نقطہ نظر کا استعمال کرتے ہوئے متعارف کرایا گیا ہے ، اور متعلقہ کوڈ فراہم کیا گیا ہے۔ محققین اس نقطہ نظر کو مزید دریافت کرسکتے ہیں۔

[14] میں:

books['I'] = (books['best_bid_qty'] - books['best_ask_qty']) / (books['best_bid_qty'] + books['best_ask_qty'])

[15] میں:

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)

باہر[15]:

img

[16] میں:

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

باہر[16]:

img

خلاصہ

درمیانی قیمت اعلی تعدد کی حکمت عملیوں کے لئے اہم ہے کیونکہ یہ قلیل مدتی مستقبل کی قیمتوں کی پیش گوئی کے طور پر کام کرتی ہے۔ لہذا ، درمیانی قیمت کے لئے یہ ضروری ہے کہ یہ زیادہ سے زیادہ درست ہو۔ پہلے زیر بحث درمیانی قیمت کے نقطہ نظر آرڈر بک کے اعداد و شمار پر مبنی ہیں ، کیونکہ تجزیہ میں آرڈر بک کی صرف اوپری سطح کا استعمال کیا جاتا ہے۔ براہ راست تجارت میں ، حکمت عملیوں کا مقصد درمیانی قیمت کی پیش گوئیوں کو اصل لین دین کی قیمتوں کے مقابلے میں درست کرنے کے لئے تجارتی اعداد و شمار سمیت تمام دستیاب اعداد و شمار کا استعمال کرنا چاہئے۔ مجھے یاد ہے کہ اسٹوکوف نے ایک ٹویٹر میں ذکر کیا ہے کہ اصل درمیانی قیمت بولی اور پوچھیں قیمتوں پر عمل درآمد ہونے کے امکانات کا وزن اوسط ہونا چاہئے۔ اس مسئلے کو پچھلے مضامین میں دریافت کیا گیا ہے۔ لمبائی کی پابندیوں کی وجہ سے ، ان موضوعات پر مزید تفصیلات اگلے مضمون میں زیر بحث آئیں گی۔


مزید