ہر ٹرانزیکشن اور K لائن بیک ٹسٹ کے نقائص پر مبنی اعلی تعدد بیک ٹسٹ سسٹم

مصنف:نیکی, تخلیق: 2020-06-16 10:30:19, تازہ کاری: 2023-11-01 20:26:21

img

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

K-line backtest پر مبنی مسائل

سب سے پہلے ، تاریخی K لائن کیا ہے؟ K لائن کے اعداد و شمار میں اعلی ، کھلی ، کم ، بند ، پہلے دو اوقات اور وقفے کی مقدار کی چار قیمتیں شامل ہیں۔ زیادہ تر کوانٹائزیشن پلیٹ فارمز اور فریم ورک K لائن بیک ٹیسٹ پر مبنی ہیں ، اور FMZ پلیٹ فارم ٹِک لیول بیک ٹیسٹ بھی فراہم کرتا ہے۔ K لائن بیک ٹیسٹ کی رفتار بہت تیز ہے ، اور زیادہ تر معاملات میں اس میں بہت کم مسائل ہیں ، لیکن اس میں بھی بہت سنگین نقائص ہیں ، خاص طور پر بیک ٹیسٹ ملٹی قسم کی حکمت عملی اور اعلی تعدد کی حکمت عملی ، صحیح نتیجہ اخذ کرنا تقریبا ناممکن ہے۔

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

تصور کریں کہ دو اقسام کی ثالثی کے لئے منٹ کی سطح کی لائن کا استعمال کریں۔ ان کے درمیان فرق عام طور پر 10 یوآن (یا ڈالر) ہوتا ہے۔ اب ، 10: 01 پر ، معاہدہ اے کی اختتامی قیمت 100 ہے ، معاہدہ بی 112 ہے ، اور فرق 12 یوآن ہے۔ لہذا حکمت عملی ہیجنگ شروع ہوتی ہے۔ ایک خاص لمحے میں ، قیمت کا فرق واپس آگیا ، اور حکمت عملی نے 2 یوآن کا منافع واپس کیا۔

لیکن اصل صورتحال یہ ہوسکتی ہے کہ 10: 45 بجے ، معاہدہ اے نے 100 یوآن کا لین دین کیا ، جس کے بعد کوئی لین دین نہیں ہوا ، معاہدہ بی کے پاس 10: 58 بجے 112 یوآن کا لین دین ہوا ، 10: 01 بجے دونوں قیمتیں موجود نہیں ہیں۔ اس وقت مارکیٹ کی قیمت کیا ہے ، اور ہیج آپریشن کتنا حاصل کرسکتا ہے؟ میں نہیں جان سکتا۔ ایک ممکنہ صورتحال یہ ہے: 10: 58 بجے ، معاہدہ اے کی خرید 1 اور فروخت 1 زیر التوا آرڈر کی قیمت ہے101.9کرنے کے لئے102.1، اور 2 یوآن کا کوئی فرق نہیں ہے۔ یہ ہماری حکمت عملی کی اصلاح کو بہت گمراہ کرے گا۔

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

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

ریئل ٹائم گہرائی اور ٹِک پر مبنی بیک ٹیسٹ

FMZ حقیقی سطح backtest فراہم کرتا ہے، جو حقیقی تاریخی حاصل کر سکتے ہیں20 layer depth price، ریئل ٹائم دوسری سطحTicks, Each Individual Transactionاور دیگر اعداد و شمار۔ ان خصوصیات کی بنیاد پر، ایف ایم زیڈ نے ریئل ٹائم ٹرانزیکشن پلے بیک فنکشن بنایا۔

اس طرح کی بیک ٹیسٹ ڈیٹا کی مقدار بہت بڑی ہے ، اور بیک ٹیسٹ کی رفتار بھی بہت سست ہے ، عام طور پر صرف دو دن تک بیک ٹیسٹ کر سکتی ہے۔ نسبتا high اعلی تعدد یا وقت کی اہم حکمت عملیوں کے ل market ، حقیقی مارکیٹ لیول بیک ٹیسٹ ضروری ہے۔ ایف ایم زیڈ کے ذریعہ جمع کردہ تجارتی جوڑے اور تجارتی وقت بہت لمبے نہیں ہیں ، لیکن پھر بھی 70 بلین سے زیادہ تاریخی ڈیٹا موجود ہیں۔

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

img

آرڈر فی آرڈر ٹرانزیکشن فلو پر مبنی بیک ٹیسٹ میکانزم

K لائن میں بہت کم معلومات ہیں، اور قیمت کی گہرائی بھی ایک جعلی گہرائی ہو سکتی ہے، لیکن ایک قسم کا ڈیٹا ہے جو مارکیٹ کی حقیقی ٹرانزیکشن کی خواہش ہے، جو سب سے زیادہ حقیقی ٹرانزیکشن کی تاریخ کی عکاسی کرتا ہے، یعنی،Each Individual Transactionاس مضمون میں آرڈر کے بہاؤ پر مبنی ایک اعلی تعدد بیک ٹیسٹ سسٹم تجویز کیا جائے گا ، جس سے حقیقی مارکیٹ کی سطح کے بیک ٹیسٹ کے اعداد و شمار کا حجم بہت کم ہوجائے گا ، اور کسی حد تک مارکیٹ پر تجارتی حجم کے اثرات کا اندازہ لگایا جائے گا۔

میں نے گزشتہ 5 دنوں کے لین دین ڈاؤن لوڈ Binance XTZ دائمی معاہدے (ڈاؤن لوڈ، اتارنا ایڈریس:https://www.fmz.com/upload/asset/1ff487b007e1a848ead.csv), ایک مقبول قسم کے طور پر, اس میں مجموعی طور پر 213000 ٹرانزیکشن ڈیٹا ہے, پہلے آئیے اعداد و شمار کی ساخت پر نظر ڈالیں:

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

اعداد و شمار ایک دو جہتی فہرست ہے ، جو تاریخی ترتیب میں ترتیب دی گئی ہے۔ مخصوص معنی مندرجہ ذیل ہیں: قسم کا نام ، لین دین کی قیمت ، لین دین کا ٹائم اسٹیمپ ، لین دین کی مقدار ، چاہے یہ فروخت آرڈر فعال لین دین ہو۔ خرید و فروخت کا رخ ہے ، اور ہر لین دین میں خریدار اور بیچنے والا شامل ہے۔ اگر خریدار ایک مارکیٹ ہے توMakerاور بیچنے والا ایک فعال ہےTaker، آخری اعداد و شمار ہےTrue.

سب سے پہلے ، لین دین کی سمت کے مطابق ، آپ مارکیٹ میں خرید 1 اور فروخت 1 پر کافی درست اندازہ لگا سکتے ہیں۔ اگر یہ ایک فعال فروخت آرڈر ہے تو ، اس وقت خرید 1 قیمت لین دین کی قیمت ہوگی ، اگر یہ ایک فعال خریداری آرڈر ہے تو ، فروخت 1 قیمت لین دین کی قیمت ہوگی۔ اگر کوئی نیا لین دین ہوتا ہے تو ، پھر تمام قیمتوں کی تجدید اور تازہ کاری کی جائے گی۔ اگر تجدید اور تازہ کاری نہیں ہوتی ہے تو آخری نتیجہ برقرار رہے گا۔ مندرجہ بالا اعداد و شمار کے آخری لمحے کو متعارف کرانا آسان ہے ، خرید 1 قیمت 2.903 ہے ، اور فروخت 1 2.904 ہے۔

آرڈر کے بہاؤ کے مطابق، یہ اس طرح سے مماثل کیا جا سکتا ہے: مثال کے طور پر ایک خرید آرڈر لے لو، قیمت ہےprice، آرڈر کی مقدار ہےamount، پھر خریدنے اور فروخت 1 اس وقت ہیںbidاورaskبالترتیب.priceسے کم ہےaskاور اس سے زیادہbid، تو یہ کے طور پر فیصلہ کیا جاتا ہےmakerسب سے پہلے، اور ترجیح ایک سودا بنانے کے لئے مماثل کیا جا سکتا ہے، پھر تمام سودے کے ساتھ ایک لین دین کی قیمت سے کم یا برابر ہےpriceکے دوران حکم کی موجودگی وقت اس حکم کے ساتھ مماثل ہو جائے گا (اگرpriceسے کم یا برابر ہےbid، ٹرانزیکشن کو کوئی ترجیح نہیں دی جاتی ہے۔ ٹرانزیکشن قیمت سے کم کے احکاماتpriceاس ترتیب کے ساتھ مماثل ہیں.)

ملاپ کی قیمت ہےprice، اور حجم ٹرانزیکشن حجم ہےEach Individual Transaction، آرڈر مکمل طور پر مکمل ہونے یا آرڈر منسوخ ہونے تک۔ask، یہ ایک کے طور پر جائز ہےtakerاس کے بعد، اس وقت کے دوران جب آرڈر موجود ہے، ٹرانزیکشن کی قیمت سے کم یا برابر تمام سودےpriceاس آرڈر کے ساتھ مماثل ہیں، اور میچ کی قیمت ٹرانزیکشن قیمت ہےEach Individual Transactionکے درمیان فرقmakerاورtakerبنیادی طور پر اس وجہ سے کہ تبادلہ زیر التواء احکامات کی حوصلہ افزائی کرتا ہے اور ٹرانزیکشن فیسوں پر چھوٹ ہوتی ہے۔ اعلی تعدد کی حکمت عملیوں کے ل this ، اس فرق پر غور کرنا ضروری ہے۔

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

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

اب بھی کچھ چھوٹی تفصیلات ہیں۔ اگر آرڈر کی خریداری کی قیمت خرید 1 کے برابر ہے تو ، پھر بھی ایک خاص امکان موجود ہے کہ خریداری کی قیمت خرید 1 سے مماثل ہوگی ، اس طرح کی صورتحال پر یہاں غور نہیں کیا جائے گا۔

ملاپ کا کوڈ

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

 symbol = 'XTZ'
    loop_time = 0
    intervel = 1000 # The sleep time of the strategy is 1000ms
    init_price = data[0][2] # Initial price
    e = Exchange([symbol],initial_balance=1000000,maker_fee=maker_fee,taker_fee=taker_fee,log='') # Initialize the exchange
    depth = {'ask':data[0][2], 'bid':data[0][2]} # depth
    order = {'buy':{'price':0,'amount':0,'maker':False,'priority':False,'id':0},
             'sell':{'price':0,'amount':0,'maker':False,'priority':False,'id':0}} # order
    for tick in data:
        price = int(tick[2]/tick_sizes[symbol])*tick_sizes[symbol] # executed price
        trade_amount = tick[3] # executed volume
        time_stamp = tick[1] # executed timestamp
        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
        
        # Order network delay can also be used as one of the matching conditions, not considered here
        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) # Trading logic, not given here
            loop_time += int((time_stamp - loop_time)/intervel)*intervel

چند تفصیلات نوٹ کریں:

  • جب کوئی نیا لین دین ہوتا ہے، تو ہمیں پہلے آرڈر کو مماثل کرنا ہوتا ہے، اور پھر تازہ ترین قیمت کے مطابق آرڈر کرنا ہوتا ہے۔

  • ہر آرڈر میں دو خصوصیات ہیں: بنانے والااگر یہ بنانے والا ہے تو ، ترجیحاپنی ترجیح سے مماثل ، مثال کے طور پر خرید آرڈر لیتے ہوئے ، جب خرید قیمت فروخت 1 سے کم ہو تو ، اس کی نشاندہی کی جاتی ہےmaker، اور جب خریداری کی قیمت خرید 1 سے زیادہ ہے، تو اس کے طور پر نشان لگا دیا جاتا ہےPriority matching, priorityاس بات کا تعین کرتا ہے کہ قیمت خریداری کی قیمت کے برابر ہے یا نہیں ، اور ساز ٹرانزیکشن فیس کا تعین کرتا ہے۔

  • کےmakerاورpriorityاگر ایک بڑی خریداری کی گئی تھی اور مارکیٹ کی صلاحیت سے تجاوز کر گئی ہے۔ جب قیمت خریدنے کی قیمت سے زیادہ ہے تو ، باقی حجمmaker.

  • حکمت عملیintervalضروری ہے، یہ مارکیٹ کی تاخیر کا نمائندہ ہو سکتا ہے۔

نیٹ ورک کی حکمت عملی کا بیک ٹسٹ

آخر میں ، یہ اصل بیک ٹیسٹ مرحلہ ہے۔ آئیے ہم یہاں سب سے زیادہ کلاسیکی گرڈ حکمت عملیوں میں سے ایک کا بیک ٹیسٹ کریں تاکہ یہ معلوم کریں کہ کیا ہم متوقع نتائج حاصل کرسکتے ہیں۔ حکمت عملی کا اصول یہ ہے کہ ہر بار جب قیمت میں 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 ، 100 ، 100 ، 100،000 تھی ، اور بیک ٹسٹ کا کل وقت 1.3s تھا۔ نتائج مندرجہ ذیل ہیں:

{'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 اور 10000 کی پوزیشن کی قیمت کی نسبتا returns واپسی کا موازنہ ہے:

img

ہم بیک ٹیسٹ کی آمدنی پر مختلف پیرامیٹرز کے اثرات کو بھی بیک ٹیسٹ کرسکتے ہیں ، جیسے زیر التواء آرڈر کثافت ، نیند کا وقت ، ٹرانزیکشن فیس وغیرہ۔ مثال کے طور پر نیند کا وقت لیں ، اسے 100ms میں تبدیل کریں ، اور منافع کی واپسی دیکھنے کے لئے نیند کے وقت کا 1000ms سے موازنہ کریں۔ بیک ٹیسٹ کے نتائج مندرجہ ذیل ہیں:

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

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

خلاصہ

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


متعلقہ

مزید