संसाधन लोड हो रहा है... लोड करना...

डिजिटल मुद्रा पर आधारित गतिशील संतुलन रणनीति

लेखक:FMZ~Lydia, बनाया गयाः 2022-12-01 16:17:29, अद्यतन किया गयाः 2023-09-20 09:43:30

img

I. सारांश

वारेन बफेट के संरक्षक बेंजामिन ग्राहम ने पुस्तक द इंटेलिजेंट इन्वेस्टर में स्टॉक और बॉन्ड के डायनामिक बैलेंस ट्रेडिंग मोड का उल्लेख किया है।

img

व्यापार का तरीका बहुत सरल हैः -धन का 50% शेयर फंड में और शेष 50% बांड फंड में निवेश करें। अर्थात, शेयर और बांड एक दूसरे के आधे हिस्से हैं। -निश्चित अंतराल या बाजार परिवर्तनों के अनुसार, स्टॉक परिसंपत्तियों और बांड परिसंपत्तियों के अनुपात को मूल 1:1 पर बहाल करने के लिए परिसंपत्ति पुनर्वित्त करना। यह पूरी रणनीति का तर्क है, जिसमें कब खरीदना और बेचना और कितना खरीदना और बेचना शामिल है। यह काफी आसान है!

II. गतिशील संतुलन का सिद्धांत

इस पद्धति में, बांड फंड की अस्थिरता वास्तव में बहुत कम है, स्टॉक की अस्थिरता से बहुत कम है, इसलिए बांड का उपयोग यहाँ संदर्भ लंगर के रूप में किया जाता है, अर्थात यह मापने के लिए कि क्या बांडों द्वारा स्टॉक बहुत अधिक या बहुत कम बढ़े हैं। यदि स्टॉक की कीमत बढ़ जाती है, तो स्टॉक का बाजार मूल्य बांड के बाजार मूल्य से अधिक होगा। जब दोनों का बाजार मूल्य अनुपात निर्धारित सीमा से अधिक हो जाता है, तो कुल स्थिति को फिर से समायोजित किया जाएगा, स्टॉक बेचे जाएंगे, और बांड खरीदे जाएंगे, ताकि स्टॉक और बांड का बाजार मूल्य अनुपात मूल 1: 1 पर वापस आ जाए। इसके विपरीत, यदि स्टॉक की कीमत घटती है, तो स्टॉक का बाजार मूल्य बांड के बाजार मूल्य से कम होगा। जब दोनों का बाजार मूल्य अनुपात निर्धारित सीमा से अधिक हो जाता है, तो कुल स्थिति को फिर से समायोजित किया जाएगा, स्टॉक खरीदे जाएंगे, और बांड बेचे जाएंगे, ताकि स्टॉक और बांड का बाजार मूल्य अनुपात मूल 1: 1 पर वापस आ जाए। इस तरह, हम स्टॉक वृद्धि के फल का आनंद ले सकते हैं और स्टॉक और बांड के बीच अनुपात को गतिशील रूप से संतुलित करके परिसंपत्ति अस्थिरता को कम कर सकते हैं। मूल्य निवेश के अग्रणी के रूप में, ग्राहम ने हमें एक अच्छा विचार प्रदान किया है। चूंकि यह एक पूर्ण रणनीति है, इसलिए हम इसका उपयोग डिजिटल मुद्रा में क्यों नहीं करते हैं?

III. रणनीतिक तर्क

ब्लॉकचेन परिसंपत्ति बीटीसी में गतिशील संतुलन रणनीति

रणनीतिक तर्क

  • वर्तमान बीटीसी मूल्य के अनुसार, खाता शेष ¥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
    }
}

संपूर्ण रणनीति ढांचा वास्तव में बहुत सरल है, जिसमें एक मुख्य कार्य, एक ऑनटिक ऑर्डर-प्लेसिंग कार्य, एक कैंसलपेंडिंगऑर्डर कार्य और आवश्यक पैरामीटर शामिल हैं।

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. कॉन्फ़िगर करने की कोई आवश्यकता नहीं है, आप सीधे ऑनलाइन बैकटेस्टिंग कर सकते हैं.

X. सारांश

इस लेख में गतिशील संतुलन रणनीति में केवल एक मुख्य पैरामीटर (सीमा) है, जो एक बहुत ही सरल निवेश विधि है। यह जो आगे बढ़ता है वह अधिक रिटर्न नहीं है, बल्कि स्थिर रिटर्न है। प्रवृत्ति रणनीति के विपरीत, गतिशील संतुलन रणनीति प्रवृत्ति के खिलाफ है। लेकिन गतिशील संतुलन रणनीति बिल्कुल विपरीत है। जब बाजार लोकप्रिय है, स्थिति को कम करना, जबकि जब बाजार अप्रिय है, स्थिति में स्केलिंग, जो मैक्रोइकॉनॉमिक विनियमन के समान है।

वास्तव में, गतिशील संतुलन रणनीति एक ऐसा शिल्प है जो अप्रत्याशित कीमतों की अवधारणा को विरासत में लेता है और एक ही समय में मूल्य उतार-चढ़ाव को कैप्चर करता है। गतिशील संतुलन रणनीति का मूल संपत्ति आवंटन अनुपात, साथ ही ट्रिगर थ्रेशोल्ड को सेट और समायोजित करना है। लंबाई को देखते हुए, एक लेख व्यापक नहीं हो सकता है। आपको पता होना चाहिए कि शब्दों से परे, एक दिल है। गतिशील संतुलन रणनीति का सबसे महत्वपूर्ण हिस्सा निवेश विचार है। आप इस लेख में व्यक्तिगत बीटीसी परिसंपत्तियों को ब्लॉकचेन परिसंपत्ति पोर्टफोलियो की टोकरी के साथ भी बदल सकते हैं।

अंत में, आइए इस लेख को बेंजामिन ग्राहम की पुस्तक में प्रसिद्ध शब्दों के साथ समाप्त करें बुद्धिमान निवेशक: शेयर बाजार एक वजन मशीन नहीं है जो मूल्य को सटीक रूप से माप सकती है, बल्कि एक मतदान मशीन है अनगिनत लोगों द्वारा किए गए निर्णय तर्क और संवेदनशीलता का मिश्रण हैं। कई बार ये निर्णय तर्कसंगत मूल्य निर्णयों से बहुत दूर हैं। निवेश का रहस्य तब निवेश करना है जब कीमत आंतरिक मूल्य से बहुत कम हो, और विश्वास करें कि बाजार का रुझान उबर जाएगा। बेंजामिन ग्राहम बुद्धिमान निवेशक


संबंधित

अधिक