রিসোর্স লোড হচ্ছে... লোডিং...

হাই ফ্রিকোয়েন্সি ট্রেডিং কৌশল সম্পর্কে চিন্তা ((1))

লেখক:ঘাস, তৈরিঃ ২০২৩-০৮-০৩ ১৬ঃ১৪ঃ১৬, আপডেটঃ ২০২৪-১১-১০ ১৮ঃ৫৬ঃ৫০

img

নিবন্ধটি ডিজিটাল মুদ্রার উচ্চ-ফ্রিকোয়েন্সির লেনদেনের কৌশলগুলি নিয়ে আলোচনা করে, যার মধ্যে রয়েছে মুনাফা উত্স (প্রধানত বাজারের তীব্র উদ্বেগ এবং এক্সচেঞ্জের কমিশন ফেরত থেকে), একক অবস্থান এবং অবস্থান নিয়ন্ত্রণের সমস্যা, এবং প্যারেটো বন্টন ব্যবহার করে লেনদেনের মডেলিংয়ের পদ্ধতি। এছাড়াও, বিএনআইএন দ্বারা প্রদত্ত একক লেনদেন এবং সর্বোত্তম লেনদেনের ডেটা পুনরায় পরীক্ষা করার জন্য উল্লেখ করা হয়েছে এবং পরবর্তী নিবন্ধে উচ্চ-ফ্রিকোয়েন্সির লেনদেনের কৌশল সম্পর্কিত অন্যান্য বিষয়গুলি গভীরভাবে আলোচনা করার পরিকল্পনা করা হয়েছে।

এর আগে আমি ডিজিটাল মুদ্রার উচ্চ ফ্রিকোয়েন্সি ট্রেডিং সম্পর্কে দুটি নিবন্ধ লিখেছিলাম।ডিজিটাল মুদ্রার উচ্চ ফ্রিকোয়েন্সি কৌশল সম্পর্কে বিস্তারিত, ৫টি ক্যান্টন ৮০ গুণ শক্তিশালী, উচ্চ ফ্রিকোয়েন্সি কৌশল☞ তবে এটি কেবল অভিজ্ঞতা ভাগ করে নেওয়ার জন্য, সাধারণভাবে কথা বলার জন্য। এইবার আমি একটি সিরিজ নিবন্ধ লেখার পরিকল্পনা করছি, শুরু থেকে উচ্চ-ফ্রিকোয়েন্সি ট্রেডিংয়ের ধারণাটি পরিচয় করিয়ে দেওয়ার জন্য, আমি যতটা সম্ভব সংক্ষিপ্তভাবে স্পষ্ট করার চেষ্টা করছি, তবে আমার ব্যক্তিগত স্তরের সীমাবদ্ধতার কারণে, উচ্চ-ফ্রিকোয়েন্সি ট্রেডিংয়ের বোঝার গভীরতা নেই, এই নিবন্ধটি কেবল একটি কুইজ জুটি ফেলেছে, আশা করি দাদা ঠিক বলেছেন।

উচ্চ ফ্রিকোয়েন্সি লাভের উৎস

পূর্ববর্তী নিবন্ধে উল্লেখ করা হয়েছে যে, উচ্চ-ফ্রিকোয়েন্সি কৌশলগুলি বিশেষত বাজারে খুব তীব্রভাবে ওঠানামা করার জন্য উপযুক্ত। একটি ট্রেডিং জাতের স্বল্প সময়ের মধ্যে দামের পরিবর্তনগুলি পরীক্ষা করুন, যা সামগ্রিক প্রবণতা এবং উত্তেজনার সমন্বয়ে গঠিত। যদি আমরা সঠিকভাবে প্রবণতার পরিবর্তনগুলি পূর্বাভাস দিতে পারি তবে অবশ্যই অর্থ উপার্জন করতে পারি, তবে এটিও সবচেয়ে কঠিন। এই নিবন্ধটি মূলত উচ্চ-ফ্রিকোয়েন্সি ম্যাকার কৌশল সম্পর্কে আলোচনা করে, এই সমস্যাটি জড়িত হবে না। উত্তেজনার পরিস্থিতিতে, কৌশলগতভাবে অর্ডার দেওয়ার জন্য, যদি ট্রেডগুলি যথেষ্ট ঘন ঘন হয় এবং মুনাফার সুযোগ যথেষ্ট বড় হয় তবে ট্রেডগুলি প্রবণতার কারণে সম্ভাব্য ক্ষতিগুলি কভার করতে সক্ষম হয়, যাতে ভবিষ্যদ্বাণী করা যায় না।

সমস্যা সমাধান

1.策略同时挂买单和卖单,第一个问题就是在哪里挂单。挂的离盘口越近,成交的概率越高,但在剧烈波动的行情中,瞬间成交的价格可能离盘口较远,挂的那太近没有能吃到足够的利润。挂的太远的单子成交概率又低。这是一个需要优化的问题。

2.控制仓位。为了控制风险,策略就不能长时间累计过多的仓位。可以通过控制挂单距离、挂单量、总仓位限制等办法解决。

উপরের উদ্দেশ্যগুলি অর্জন করার জন্য, লেনদেনের সম্ভাব্যতা, লেনদেনের মুনাফা, বাজার অনুমান ইত্যাদির বিভিন্ন দিকের মডেলিং অনুমান করা প্রয়োজন। এই বিষয়ে অনেকগুলি নিবন্ধ এবং নিবন্ধ রয়েছে, উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং, অর্ডারবুক ইত্যাদির মতো কীওয়ার্ডগুলিতে পাওয়া যায়। অনলাইনে অনেকগুলি প্রস্তাবনা রয়েছে, এখানে এটি চালু করা উচিত নয়। এছাড়াও একটি নির্ভরযোগ্য দ্রুত রিটার্নিং সিস্টেম স্থাপন করা ভাল। যদিও উচ্চ-ফ্রিকোয়েন্সি কৌশলগুলি বাস্তবতার মাধ্যমে কৌশলটির কার্যকারিতা যাচাই করা সহজ, তবে রিটার্নিং এখনও আরও পথ সরবরাহ করতে পারে এবং ভুল ধারণাটির ব্যয় হ্রাস করতে পারে।

প্রয়োজনীয় তথ্য

বিএনএন পে-টু-পেড লেনদেন এবং সেরা আপলোড ডেটা সরবরাহ করে।ডাউনলোড, গভীরতার ডেটাটি হোয়াইটলিস্টে ডাউনলোড করা দরকার এবং এটি নিজেরাই সংগ্রহ করা যেতে পারে। পুনর্বিবেচনার জন্য অ্যাবস্ট্রাকশন ব্যবহার করে ট্রানজাকশন ডেটা সংগ্রহ করা যেতে পারে। এই নিবন্ধটি HOOKUSDT-aggTrades-2023-01-27 এর ডেটা দিয়ে উদাহরণ দেয়।

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

এক টাকায় যেসব লেনদেন করা হয় তার মধ্যে রয়েছেঃ

  1. agg_trade_id: লেনদেনের আইডি,
  2. price: লেনদেনের মূল্য
  3. quantity: লেনদেনের পরিমাণ
  4. first_trade_id: সমষ্টিগত লেনদেনের জন্য একই সময়ে বেশ কয়েকটি লেনদেন হতে পারে, শুধুমাত্র একটি পরিসংখ্যান, যা প্রথম লেনদেনের আইডি
  5. last_trade_id: সর্বশেষ লেনদেনের আইডি
  6. transact_time: লেনদেনের সময়
  7. is_buyer_maker: লেনদেনের দিকনির্দেশনা, True লেনদেনের জন্য লেনদেনের জন্য লেনদেনকারী, লেনদেনের জন্য লেনদেনকারী

আপনি দেখতে পাচ্ছেন যে 660,000 লেনদেনের ডেটা ছিল এবং লেনদেনগুলি সক্রিয় ছিল। csv টি মন্তব্য বিভাগে সংযুক্ত থাকবে।

trades = pd.read_csv('COMPUSDT-aggTrades-2023-07-02.csv')
trades

৬৬৪৪৭৫ সারি × ৭ কলাম

agg_trade_id দাম পরিমাণ প্রথম_ট্রেড_আইডি last_trade_id লেনদেনের সময় is_buyer_maker
120719552 52.42 22.087 207862988 207862990 1688256004603 মিথ্যা
120719553 52.41 29.314 207862991 207863002 1688256004623 সত্য
120719554 52.42 0.945 207863003 207863003 1688256004678 মিথ্যা
120719555 52.41 13.534 207863004 207863006 1688256004680 সত্য
121384024 68.29 10.065 210364899 210364905 1688342399863 মিথ্যা
121384025 68.30 7.078 210364906 210364908 1688342399948 মিথ্যা
121384026 68.29 7.622 210364909 210364911 1688342399979 সত্য

একক লেনদেনের মডেলিং

প্রথমে ডাটা প্রক্রিয়াকরণ করা হয়, প্রাথমিক ট্রেডগুলিকে পেমেন্টের জন্য প্রারম্ভিক টার্গেট গ্রুপ এবং বিক্রয় আদেশের জন্য প্রারম্ভিক টার্গেট গ্রুপে বিভক্ত করা হয়। অন্যদিকে, প্রাথমিক সমষ্টিগত লেনদেনের ডেটা একই সময়ে একই দামে এবং একই দিকের একটি ডেটা। একটি প্রারম্ভিক লেনদেনের পরিমাণ 100 হতে পারে। যদি একাধিক লেনদেনের মধ্যে বিভক্ত করা হয় এবং দামগুলি ভিন্ন হয়, যেমন 60 এবং 40 টির জন্য বিভক্ত করা হয়, তবে দুটি ডেটা উত্পাদিত হবে, যা লেনদেনের পরিমাণের অনুমানকে প্রভাবিত করে। অতএব, লেনদেনের সময় অনুসারে একবার পুনরায় সমষ্টি করা প্রয়োজন। সমষ্টির পরে ডেটা পরিমাণ 140,000 টি হ্রাস পেয়েছে।

trades['date'] = pd.to_datetime(trades['transact_time'], unit='ms')
trades.index = trades['date']
buy_trades = trades[trades['is_buyer_maker']==False].copy()
sell_trades = trades[trades['is_buyer_maker']==True].copy()
buy_trades = buy_trades.groupby('transact_time').agg({
    'agg_trade_id': 'last',
    'price': 'last',
    'quantity': 'sum',
    'first_trade_id': 'first',
    'last_trade_id': 'last',
    'is_buyer_maker': 'last',
    'date': 'last',
    'transact_time':'last'
})
sell_trades = sell_trades.groupby('transact_time').agg({
    'agg_trade_id': 'last',
    'price': 'last',
    'quantity': 'sum',
    'first_trade_id': 'first',
    'last_trade_id': 'last',
    'is_buyer_maker': 'last',
    'date': 'last',
    'transact_time':'last'
})
buy_trades['interval']=buy_trades['transact_time'] - buy_trades['transact_time'].shift()
sell_trades['interval']=sell_trades['transact_time'] - sell_trades['transact_time'].shift()
print(trades.shape[0] - (buy_trades.shape[0]+sell_trades.shape[0]))
146181

উদাহরণস্বরূপ, পেমেন্টের জন্য, প্রথমে একটি স্ট্র্যাক গ্রাফ আঁকুন, আপনি দেখতে পাবেন যে দীর্ঘ-প্রবাহের প্রভাবটি খুব স্পষ্ট, বেশিরভাগ ডেটা বাম দিকে একদম কেন্দ্রীভূত, তবে ছোট পরিমাণে বড় লেনদেনগুলিও লেজের উপরে বিতরণ করা হয়েছে।

buy_trades['quantity'].plot.hist(bins=200,figsize=(10, 5));

png

为了观察方便,截掉尾部观察.可以看到成交量越大,出现频率越低,且减少的趋势更快。

buy_trades['quantity'][buy_trades['quantity']<200].plot.hist(bins=200,figsize=(10, 5));

png

লেনদেন-সন্তুষ্ট বন্টন নিয়ে অনেক গবেষণা করা হয়েছে। এটি পাওয়ার-লয় বন্টন নামেও পরিচিত। এটি পরিসংখ্যান পদার্থবিজ্ঞান এবং সামাজিক বিজ্ঞানে একটি সাধারণ সম্ভাব্যতা বন্টন। লেনদেন-সন্তুষ্ট বন্টনে, ঘটনার আকার (বা ফ্রিকোয়েন্সি) এর সম্ভাব্যতা ঘটনার আকারের একটি নেতিবাচক সূচকের সমান হয়। এই বন্টনের প্রধান বৈশিষ্ট্য হ'ল বড় ইভেন্টগুলির (অর্থাৎ, যেগুলি গড় থেকে দূরে) ঘটনার ফ্রিকোয়েন্সি অন্যান্য অনেক বন্টনে প্রত্যাশিতের চেয়ে বেশি। এটি হ'ল লেনদেনের বন্টনের বৈশিষ্ট্য। লেনদেনের বন্টনের ফর্মঃ Px = Cx^-α। এটি নীচে প্রমাণিত হবে।

নীচের চিত্রটি একটি মানের চেয়ে বড় একটি ট্রেডিংয়ের সম্ভাব্যতা দেখায়, নীল লাইনটি প্রকৃত সম্ভাব্যতা, বক্ররেখাটি অনুকরণীয় সম্ভাব্যতা। এখানে নির্দিষ্ট পরামিতিগুলিকে প্রথমে বিভ্রান্ত করবেন না, আপনি দেখতে পাবেন যে এটি সত্যিই প্যারেটো বিতরণকে সন্তুষ্ট করে। যেহেতু অর্ডার পরিমাণ 0 এর চেয়ে বড় হওয়ার সম্ভাবনা 1 এবং মানকীকরণের জন্য, এর বিতরণ সমীকরণের ফর্মটি নিম্নরূপ হওয়া উচিতঃ

png

যেখানে N হল মানসম্মত পরামিতি । এখানে গড় লেনদেনের পরিমাণ M নির্বাচন করুন, আলফা নির্বাচন করুন -২.০৬ । নির্দিষ্ট আলফার অনুমান D=N হলে P-ভ্যালু দ্বারা প্রতিফলিত হতে পারে । বিশেষতঃ আলফা = log ((P ((d>M)) /log ((2)) । বিভিন্ন পয়েন্ট নির্বাচন করে আলফা গ্রহণের মান সামান্য ভিন্ন হবে ।

depths = range(0, 250, 2)
probabilities = np.array([np.mean(buy_trades['quantity'] > depth) for depth in depths])
alpha = np.log(np.mean(buy_trades['quantity'] > mean_quantity))/np.log(2)
mean_quantity = buy_trades['quantity'].mean()
probabilities_s = np.array([(1+depth/mean_quantity)**alpha for depth in depths])

plt.figure(figsize=(10, 5))
plt.plot(depths, probabilities)
plt.plot(depths, probabilities_s)
plt.xlabel('Depth')
plt.ylabel('Probability of execution')
plt.title('Execution probability at different depths')
plt.grid(True)

img

plt.figure(figsize=(10, 5))
plt.grid(True)
plt.title('Diff')
plt.plot(depths, probabilities_s-probabilities);

png

কিন্তু এই অনুমানটি কেবল দেখতে এরকম, যে আমরা উপরের চিত্রটিতে অ্যালগরিদমের মান এবং প্রকৃত মানের মধ্যে পার্থক্য আঁকছি। যখন লেনদেনটি ছোট হয় তখন বিচ্যুতি খুব বড়, এমনকি 10% এর কাছাকাছিও হয়। প্যারামিটার অনুমানের সময় বিভিন্ন পয়েন্ট নির্বাচন করা যেতে পারে যাতে এই পয়েন্টটির সম্ভাবনা আরও সুনির্দিষ্ট হয়, তবে বিচ্যুতির সমস্যাও সমাধান করা যায় না। এটি একটি জার্লট বিতরণ এবং প্রকৃত বিতরণের পার্থক্য দ্বারা নির্ধারিত হয়, আরও সঠিক ফলাফল পেতে জার্লট বিতরণের সমীকরণের সংশোধন প্রয়োজন। নির্দিষ্ট প্রক্রিয়াটি বর্ণনা করা হয়নি, সংক্ষেপে, আলোর ঝলক পাওয়া গেছে, বাস্তবে এটি হওয়া উচিতঃ

png

এখানে r = q/M এর মাধ্যমে স্ট্যান্ডার্ডাইজড ট্রানজিশনের প্রতিনিধিত্ব করা হয়। প্যারামিটারগুলি উপরের মতোই অনুমান করা যেতে পারে। নীচের চিত্রটি দেখায় যে সংশোধনের পরে সর্বাধিক বিচ্যুতি 2% এর বেশি নয়। তাত্ত্বিকভাবে এটি সংশোধন করা যেতে পারে, তবে এই নির্ভুলতা যথেষ্ট।

depths = range(0, 250, 2)
probabilities = np.array([np.mean(buy_trades['quantity'] > depth) for depth in depths])
mean = buy_trades['quantity'].mean()
alpha = np.log(np.mean(buy_trades['quantity'] > mean))/np.log(2.05)
probabilities_s = np.array([(((1+20**(-depth/mean))*depth+mean)/mean)**alpha for depth in depths])

plt.figure(figsize=(10, 5))
plt.plot(depths, probabilities)
plt.plot(depths, probabilities_s)
plt.xlabel('Depth')
plt.ylabel('Probability of execution')
plt.title('Execution probability at different depths')
plt.grid(True)
plt.figure(figsize=(10, 5))
plt.grid(True)
plt.title('Diff')
plt.plot(depths, probabilities_s-probabilities);

png

লেনদেনের বন্টনের আনুমানিক সমীকরণের সাথে, সমীকরণের সম্ভাব্যতা সত্যিকারের সম্ভাব্যতা নয়, বরং একটি শর্তাধীন সম্ভাব্যতা। এই সময়ে এই প্রশ্নের উত্তর দেওয়া যেতে পারে যে, যদি পরবর্তী অর্ডার ঘটে তবে এই অর্ডারটি কোনও মানের চেয়ে বড় হওয়ার সম্ভাবনা কত? এটিও বলা যেতে পারে যে, বিভিন্ন গভীরতার অর্ডারগুলি সম্পন্ন হওয়ার সম্ভাবনা কত ((আদর্শ ক্ষেত্রে, কম কঠোর, তত্ত্বগত অর্ডার বুকটিতে নতুন অর্ডার এবং প্রত্যাহার রয়েছে এবং একই গভীরতার সারি রয়েছে) ।) ।

এখানে লেখাটা প্রায় শেষ হয়ে গেছে, কিন্তু অনেক প্রশ্নের উত্তর এখনও বাকি আছে, যেগুলোর উত্তর নিচের ধারাবাহিক লেখায় দেয়া হবে।


আরো

ওক পরিমাণ 🐂🍺

fmzeroগম্ভীর!

ঘাসসিএসভি খুব বড়, আমি নিজে ডাউনলোড করতে পারি।