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

ڈیجیٹل کرنسی پر مبنی متحرک توازن کی حکمت عملی

مصنف:FMZ~Lydia, تخلیق: 2022-12-01 16:17:29, تازہ کاری: 2023-09-20 09:43:30

img

I. خلاصہ

وارن بفیٹ کے سرپرست بنجمن گراہم نے کتاب The Intelligent Investor میں اسٹاک اور بانڈز کی متحرک توازن ٹریڈنگ موڈ کا ذکر کیا ہے۔

img

تجارتی موڈ بہت آسان ہے: 50 فیصد فنڈز اسٹاک فنڈز میں اور باقی 50 فیصد بانڈ فنڈز میں لگائیں۔ یعنی اسٹاک اور بانڈز ایک دوسرے کے نصف ہیں۔ - مقررہ وقفہ یا مارکیٹ کی تبدیلیوں کے مطابق، اسٹاک اثاثوں اور بانڈ اثاثوں کے تناسب کو اصل 1: 1 پر بحال کرنے کے لئے اثاثوں کا دوبارہ توازن کریں. یہ پوری حکمت عملی کا منطق ہے، بشمول کب خریدنا اور بیچنا اور کتنا خریدنا اور بیچنا۔ یہ کافی آسان ہے!

II. متحرک توازن کا اصول

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

III. حکمت عملی کا منطق

بلاکچین اثاثہ BTC میں متحرک توازن کی حکمت عملی

حکمت عملی کا منطق

  • موجودہ بی ٹی سی ویلیو کے مطابق ، اکاؤنٹ بیلنس میں ¥5000 اور 0.1 بی ٹی سی کی نقد رقم موجود ہے ، یعنی ، نقد رقم کا ابتدائی تناسب بی ٹی سی مارکیٹ ویلیو میں 1: 1 ہے۔
  • اگر بی ٹی سی کی قیمت ¥6000 تک بڑھ جاتی ہے ، یعنی ، بی ٹی سی کی مارکیٹ ویلیو اکاؤنٹ بیلنس سے زیادہ ہے ، اور ان کے درمیان فرق مقررہ حد سے زیادہ ہے ، تو (6000-5000) / 6000/2 سکے فروخت کریں۔ اس کا مطلب یہ ہے کہ بی ٹی سی کی قدر بڑھ گئی ہے اور ہم پیسے واپس تبدیل کرسکتے ہیں۔
  • اگر بی ٹی سی کی قیمت ¥4000 تک کم ہو جاتی ہے ، یعنی ، بی ٹی سی کی مارکیٹ ویلیو اکاؤنٹ بیلنس سے کم ہے ، اور ان کے درمیان فرق مقررہ حد سے زیادہ ہے ، تو (5000-4000) / 4000/2 سکے خریدیں۔ اس کا مطلب ہے کہ بی ٹی سی کی قدر کم ہوگئی ہے ، اور ہم بی ٹی سی واپس خرید سکتے ہیں۔

اس طرح ، اس سے کوئی فرق نہیں پڑتا ہے کہ بی ٹی سی کی قدر بڑھتی ہے یا کم ہوتی ہے ، ہم ہمیشہ اکاؤنٹ بیلنس اور بی ٹی سی کی مارکیٹ ویلیو کو متحرک طور پر برابر رکھتے ہیں۔ اگر بی ٹی سی کی قدر کم ہوتی ہے تو ، ہم خریدتے ہیں ، اور اگر یہ دوبارہ بڑھتا ہے تو ، ہم کچھ بیچتے ہیں ، بالکل بیلنس کی طرح۔

IV. حکمت عملی کا فریم ورک

تو ، اسے کوڈ میں کیسے لاگو کیا جائے؟ ہم مثال کے طور پر ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم لیتے ہیں ، آئیے پہلے اسٹریٹجک فریم ورک پر ایک نظر ڈالیں:

// function to cancel orders
function CancelPendingOrders() {}

// function to place an order
function onTick() {}

// main function
function main() {
    // filter non-important information
    SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
    while (true) { // polling mode
        if (onTick()) { // execute onTick function
            CancelPendingOrders(); // cancel the outstanding pending orders
            Log(_C(exchange.GetAccount)); // print the current account information
        }
        Sleep(LoopInterval * 1000); // sleep
    }
}

پوری حکمت عملی فریم ورک اصل میں بہت آسان ہے، ایک اہم تقریب، ایک onTick آرڈر رکھنے کی تقریب، ایک منسوخ pendingOrders تقریب، اور ضروری پیرامیٹرز بھی شامل ہے.

V. آرڈر کی جگہ کا ماڈیول

// order-placing function
function onTick() {
    var acc = _C(exchange.GetAccount); // obtain account information
    var ticker = _C(exchange.GetTicker); // obtain Tick data
    var spread = ticker.Sell - ticker.Buy; // obtain bid ask spread of Tick data
    // 0.5 times of the difference between the account balance and the current position value
    var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
    var ratio = diffAsset / acc.Balance; // diffAsset / account balance
    LogStatus('ratio:', ratio, _D()); // Print ratio and current time
    if (Math.abs(ratio) < threshold) { // If the absolute value of the ratio is less than the specified threshold
        return false; // return false
    }
    if (ratio > 0) { // if ratio > 0
        var buyPrice = _N(ticker.Sell + spread, ZPrecision); // Calculate the price of an order
        var buyAmount = _N(diffAsset / buyPrice, XPrecision); // Calculate the order quantity
        if (buyAmount < MinStock) { // If the order quantity is less than the minimum transaction quantity
            return false; // return false
        }
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // Purchase order
    } else {
        var sellPrice = _N(ticker.Buy - spread, ZPrecision); // Calculate the price of an order
        var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // Calculate the order quantity
        if (sellAmount < MinStock) { // If the order quantity is less than the minimum transaction quantity
            return false; // return false
        }
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // Sell and place an order
    }
    return true; // return true
}

آرڈر ٹریڈنگ منطق اچھی طرح سے منظم ہے، اور تمام تبصرے کوڈ میں لکھا گیا ہے. آپ کو زوم کرنے کے لئے تصویر پر کلک کر سکتے ہیں.

بنیادی عمل مندرجہ ذیل ہے:

  • اکاؤنٹ کی معلومات حاصل کریں.
  • ٹک ڈیٹا حاصل کریں.
  • ٹِک ڈیٹا کی بولی مانگنے کی تعداد کا حساب لگائیں۔
  • اکاؤنٹ بیلنس اور بی ٹی سی مارکیٹ ویلیو کے درمیان فرق کا حساب لگائیں۔
  • خریداری اور فروخت کی شرائط، آرڈر کی قیمت اور آرڈر کی مقدار کا حساب لگائیں.
  • ایک حکم رکھیں اور سچ واپس.

VI. واپسی ماڈیول

// Withdrawal function
function CancelPendingOrders() {
    Sleep(1000); // Sleep for 1 second
    var ret = false;
    while (true) {
        var orders = null;
        // Obtain the unsettled order array continuously. If an exception is returned, continue to obtain
        while (!(orders = exchange.GetOrders())) {
            Sleep(1000); // Sleep for 1 second
        }
        if (orders.length == 0) { // If the order array is empty
            return ret; // Return to order withdrawal status
        }
        for (var j = 0; j < orders.length; j++) { // Iterate through the array of unfilled orders
            exchange.CancelOrder(orders[j].Id); // Cancel unfilled orders in sequence
            ret = true;
            if (j < (orders.length - 1)) {
                Sleep(1000); // Sleep for 1 second
            }
        }
    }
}

واپسی کا ماڈیول آسان ہے۔ اقدامات مندرجہ ذیل ہیں:

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

VII. مکمل حکمت عملی کا ماخذ کوڈ

// Backtest environment
/*backtest
start: 2018-01-01 00:00:00
end: 2018-08-01 11:00:00
period: 1m
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/



// Order withdrawal function
function CancelPendingOrders() {
    Sleep(1000); // Sleep for 1 second
    var ret = false;
    while (true) {
        var orders = null;
        // Obtain the unsettled order array continuously. If an exception is returned, continue to obtain
        while (!(orders = exchange.GetOrders())) {
            Sleep(1000); // Sleep for 1 second
        }
        if (orders.length == 0) { // If the order array is empty
            return ret; // Return to order withdrawal status
        }
        for (var j = 0; j < orders.length; j++) { // Iterate through the array of unfilled orders
            exchange.CancelOrder(orders[j].Id); // Cancel unfilled orders in sequence
            ret = true;
            if (j < (orders.length - 1)) {
                Sleep(1000); // Sleep for 1 second
            }
        }
    }
}

// Order function
function onTick() {
    var acc = _C(exchange.GetAccount); // obtain account information
    var ticker = _C(exchange.GetTicker); // obtain Tick data
    var spread = ticker.Sell - ticker.Buy; // obtain bid ask spread of Tick data
    // 0.5 times of the difference between the account balance and the current position value
    var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
    var ratio = diffAsset / acc.Balance; // diffAsset / account balance
    LogStatus('ratio:', ratio, _D()); // Print ratio and current time
    if (Math.abs(ratio) < threshold) { // If the absolute value of ratio is less than the specified threshold
        return false; // return false
    }
    if (ratio > 0) { // if ratio > 0
        var buyPrice = _N(ticker.Sell + spread, ZPrecision); // Calculate the order price
        var buyAmount = _N(diffAsset / buyPrice, XPrecision); // Calculate the order quantity
        if (buyAmount < MinStock) { // If the order quantity is less than the minimum trading quantity
            return false; // return false
        }
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // buy order
    } else {
        var sellPrice = _N(ticker.Buy - spread, ZPrecision); // Calculate the order price
        var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // Calculate the order quantity
        if (sellAmount < MinStock) { // If the order quantity is less than the minimum trading quantity
            return false; // return false
        }
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // sell order
    }
    return true; // return true
}

// main function
function main() {
    // Filter non-important information
    SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
    while (true) { // Polling mode
        if (onTick()) { // Execute onTick function
            CancelPendingOrders(); // Cancel pending orders
            Log(_C(exchange.GetAccount)); // Print current account information
        }
        Sleep(LoopInterval * 1000); // sleep
    }
}

بیرونی پیرامیٹرز

img

VIII. حکمت عملی کا بیک ٹسٹنگ

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

بیک ٹسٹنگ کا ماحولimg

بیک ٹسٹنگ کارکردگیimg

بیک ٹسٹنگ وکرimg

بیک ٹیسٹ کی مدت کے دوران ، بی ٹی سی میں 8 ماہ تک کمی جاری رہی ، یہاں تک کہ 70٪ سے زیادہ کی زیادہ سے زیادہ کمی کے ساتھ ، جس کی وجہ سے بہت سے سرمایہ کاروں نے بلاکچین اثاثوں پر اعتماد کھو دیا۔ اس حکمت عملی کی مجموعی واپسی 160٪ تک ہے ، اور سالانہ واپسی کے خطرے کا تناسب 5 سے زیادہ ہے۔ اس طرح کی ایک سادہ سرمایہ کاری کی حکمت عملی کے لئے ، سرمایہ کاری پر واپسی کی شرح زیادہ تر لوگوں سے تجاوز کر گئی ہے جو مکمل پوزیشن میں ہیں۔

IX. حکمت عملی کا ماخذ کوڈ حاصل کریں

حکمت عملی کا ماخذ کوڈ ایف ایم زیڈ کوانٹ کی سرکاری ویب سائٹ پر شائع کیا گیا ہے۔https://www.fmz.com/strategy/110545. ترتیب دینے کی ضرورت نہیں ہے، آپ کو براہ راست آن لائن backtesting کر سکتے ہیں.

X. خلاصہ

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

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

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


متعلقہ

مزید