Blockchain Quantitative Investment Series - Chiến lược cân bằng năng động

Tác giả:Tốt, Tạo: 2019-03-26 11:52:11, Cập nhật:

Bản gốc: FMZ Quantwww.fmz.com

những thứ thực sự của giao dịch định lượng nơi mà bạn có thể thực sự được hưởng lợi.

NO.1

Người cố vấn của Warren Buffett, Benjamin Graham, đã từng đề cập trong cuốn sách <> một mô hình giao dịch trong đó cổ phiếu và trái phiếu được cân bằng năng động.imgMô hình giao dịch này rất đơn giản:

50% số tiền trong tay được đầu tư vào quỹ cổ phần, và 50% còn lại được đầu tư vào quỹ trái phiếu.

Sự cân bằng lại vị thế tài sản dựa trên các khoảng thời gian cố định hoặc thay đổi thị trường khôi phục tỷ lệ tài sản cổ phiếu đối với tài sản trái phiếu trở lại mức ban đầu là 1: 1.

Đây là toàn bộ logic của toàn bộ chiến lược, bao gồm cả khi mua và bán, và bao nhiêu để mua và bán.

Số 2

Trong phương pháp này, sự biến động của các quỹ trái phiếu thực sự rất nhỏ, thấp hơn nhiều so với sự biến động của cổ phiếu, vì vậy trái phiếu được sử dụng ở đây như anchor tham chiếu, nghĩa là sử dụng trái phiếu để đo lường liệu cổ phiếu có tăng quá nhiều hay quá ít.

Nếu giá cổ phiếu tăng, giá trị thị trường của cổ phiếu sẽ lớn hơn giá trị thị trường của trái phiếu. Khi tỷ lệ giá trị thị trường của hai loại này vượt quá ngưỡng đặt ra, tổng vị trí sẽ được điều chỉnh lại, cổ phiếu sẽ được bán và trái phiếu sẽ được mua để tỷ lệ giá trị cổ phiếu so với giá trị trái phiếu trở lại mức ban đầu 1: 1.

Ngược lại, nếu giá cổ phiếu giảm, giá trị thị trường của cổ phiếu sẽ thấp hơn giá trị thị trường của trái phiếu. Khi tỷ lệ giá trị thị trường của hai loại trái phiếu này vượt quá mức ngưỡng, tổng vị trí sẽ được điều chỉnh lại, cổ phiếu sẽ được mua và trái phiếu sẽ được bán để tỷ lệ vốn hóa thị trường của giá trị trái phiếu so với giá trị cổ phiếu được khôi phục trở lại mức ban đầu 1: 1.imgTheo cách này, tỷ lệ giữa sự cân bằng năng động của cổ phiếu và trái phiếu là đủ để tận hưởng lợi nhuận của tăng trưởng cổ phiếu và giảm biến động tài sản.

Vì đây là một chiến lược hoàn chỉnh và chung, tại sao chúng ta không sử dụng nó trên thị trường tiền điện tử?

Số 3

Chiến lược cân bằng năng động tài sản Blockchain trong BTC

Chiến lược logic

Theo giá trị hiện tại của BTC, số dư tài khoản được giữ lại ở mức 6400 đô la tiền mặt và 1 BTC, tức là tỷ lệ ban đầu của tiền mặt so với giá trị thị trường BTC là 1: 1.

Nếu giá BTC tăng lên $7400, nghĩa là giá trị thị trường BTC lớn hơn số dư tài khoản, và sự khác biệt giữa chúng vượt quá ngưỡng đã thiết lập, thì (7400-6400)/7400/2 coin được bán.

Nếu giá của BTC giảm xuống còn $5400, tức là giá trị thị trường BTC ít hơn số dư tài khoản và sự khác biệt giữa chúng vượt quá ngưỡng đặt, mua (6400-5400)/5400/2 đồng xu. Điều đó có nghĩa là BTC đã mất giá và chúng ta cần mua BTC trở lại.

Bằng cách này, bất kể BTC được đánh giá cao hay mất giá, số dư tài khoản và giá trị thị trường của BTC luôn được giữ bằng động.

Số 4

Vậy làm thế nào để thực hiện nó bằng mã lập trình?

Hãy lấy nền tảng giao dịch định lượng FMZ làm ví dụ.

// strategy parameter
var threshold = 0.05; // Threshold
var LoopInterval = 60; // Polling interval(seconds)
var MinStock = 0.001; // Minimum transaction volume
var XPrecision = 4; // Quantity accuracy
var ZPrecision = 8; // Price accuracy

// Withdrawal order function
function CancelPendingOrders() {

}

// Placing Order function
function onTick() {

}

// Main function
function main() {
    // Filter non-critical information
    SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
    while (true) { // Polling mode
        if (onTick()) { // Execute the onTick function
            CancelPendingOrders(); // Cancel unexecuted pending orders
        }
        Sleep(LoopInterval * 1000); // Sleep
    }
}

Toàn bộ khuôn khổ chiến lược thực sự rất đơn giản, một chức năng main, một chức năng đặt lệnh onTick, một chức năng CancelPendingOrders, và các tham số cần thiết.

NO.5

Mô-đun lệnh

// Placing Order function
function onTick() {
    var acc = _C(exchange.GetAccount); // Get account information
    var ticker = _C(exchange.GetTicker); // Get Tick data
    var spread = ticker.Sell - ticker.Buy; // Get the bid-ask spread of Tick data
    // 0.5 times 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 is greater than 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 transaction volume
            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 transaction volume
            return false; // return false
        }
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // Sell order
    }
    return true; // return true
}

Logic của giao dịch đặt hàng là rõ ràng, và tất cả các bình luận đã được viết vào mã.

Quá trình chính là như sau:

Tìm thông tin tài khoản.

Lấy dữ liệu Tick.

Tính toán Tick dữ liệu bid-ask spread.

Tính toán số dư tài khoản và chênh lệch giá trị thị trường BTC.

Tính toán điều kiện kích hoạt giao dịch, giá lệnh và số lượng lệnh.

Đặt hàng và trả lại đúng.

NO.6

Hủy bỏ mô-đun lệnh đang chờ

// Withdrawal order function
function CancelPendingOrders() {
    Sleep(1000); // Sleep 1 second
    var ret = false;
    while (true) {
        var orders = null;
        // Continue to get an array of unexecuted orders, if an exception is returned, continue to get
        while (!(orders = exchange.GetOrders())) {
            Sleep(1000); // Sleep 1 second
        }
        if (orders.length == 0) { // If the order array is empty
            return ret; // Return to withdrawal status
        }
        for (var j = 0; j < orders.length; j++) { // Traversing the array of unexecuted orders
            exchange.CancelOrder(orders[j].Id); // Cancel unexecuted orders one by one
            ret = true;
            if (j < (orders.length - 1)) {
                Sleep(1000); // Sleep 1 second
            }
        }
    }
}

Các mô-đun hủy lệnh đang chờ thậm chí còn đơn giản hơn, các bước là như sau:

Chờ 1 giây trước khi rút lệnh, bởi vì một số nhà trao đổi có thể có sự chậm trễ của máy chủ.

Tiếp tục nhận được một mảng các lệnh chưa thực hiện, và nếu một ngoại lệ được trả về, tiếp tục thử cho đến khi nó thành công.

Nếu mảng lệnh chưa được thực hiện trống, nó sẽ trả về trạng thái rút tiền ngay lập tức.

Nếu có các lệnh chưa được thực hiện, toàn bộ mảng được đi qua và lệnh được rút lại theo ID lệnh.

NO.7

Chiến lược này là tất cả các mã nguồn lập trìnhimg imgTrên nền tảng giao dịch định lượng FMZ, chỉ với 80 dòng mã, một chiến lược cân bằng năng động blockchain BTC hoàn chỉnh đã được xây dựng thành công.

Số 8

Tiếp theo, chúng ta hãy kiểm tra chiến lược cân bằng năng động đơn giản này để xem nó có hiệu quả hay không.

Môi trường kiểm tra ngượcimgHiệu suất thử nghiệm sauimgĐường cong thử nghiệm ngượcimgMột cái khác, cùng thời kỳ biểu đồ giá BTCimgAnh có bị sốc không?

BTC đã tiếp tục giảm trong tám tháng, và thậm chí sự sụt giảm lớn nhất đã vượt quá 70%, khiến nhiều nhà đầu tư mất niềm tin vào tài sản blockchain.

Thu nhập tích lũy của chiến lược này cao tới 160%, và tỷ lệ rủi ro lợi nhuận hàng năm vượt quá 5. Đối với một chiến lược giao dịch đơn giản như vậy, lợi nhuận đầu tư này đã vượt quá phần lớn các loại người chơi All-in.

NO.9

Chiến lược cân bằng này, chỉ có một tham số cốt lõi (giá hạn), là một phương pháp đầu tư rất đơn giản không theo đuổi lợi nhuận vượt quá mà là lợi nhuận vững chắc.

Ngược lại với chiến lược xu hướng, chiến lược cân bằng năng động là chống lại xu hướng. Chiến lược này là để giảm vị trí và làm mát xuống khi thị trường quá nóng. Khi thị trường bị bỏ hoang, nó sẽ được ẩn trong, tương tự như quy định kinh tế vĩ mô.

Trong thực tế, chiến lược cân bằng năng động dựa trên ý tưởng rằng giá là không thể đoán trước, đồng thời nắm bắt biến động giá.

Nhìn vào chiều dài của bài viết, không thể có một bài viết toàn diện về tất cả mọi thứ. Như một câu nói cổ xưa Cho một người đàn ông một con cá và bạn sẽ nuôi nó trong một ngày. Dạy một người đàn ông đánh cá và bạn sẽ nuôi nó suốt đời.. Điều quan trọng nhất về chiến lược cân bằng năng động là ý tưởng đầu tư. Bạn thậm chí có thể thay thế các tài sản BTC cá nhân trong bài viết này bằng một giỏ danh mục tài sản blockchain.imgCuối cùng, chúng ta hãy kết thúc bài viết này bằng một đoạn trong cuốn sách nổi tiếng của Benjamin Graham <>:

Thị trường chứng khoán không phải là một giới đo cân đo lường chính xác giá trị. Ngược lại, nó là một cỗ máy bỏ phiếu . Các quyết định được đưa ra bởi vô số người là một chất kích thích hợp lý và cảm xúc. Có nhiều lần khi những lựa chọn này được thực hiện. Nó rất xa với phán đoán giá trị của lý trí. Bí mật của đầu tư là đầu tư khi giá thấp hơn nhiều so với giá trị nội tại, và tin rằng xu hướng thị trường sẽ tăng lên.

  • Benjamin Graham

Để trực tiếp sao chép mã nguồn, vui lòng truy cập vào chiến lược của chúng tôi ở:https://www.fmz.com/strategy/110900

có rất nhiều chiến lược mà bạn có thể nghiên cứu, tải xuống, thuê, hoặc mua.

NO.10

về chúng tôi

Lý do để vận hành trang web này là để thay đổi tình trạng hiện tại của thế giới giao dịch định lượng nơi thiếu những thứ thực sự, nơi có rất nhiều gian lận và hầu như không có truyền thông sâu, và tạo ra một nền tảng học tập và truyền thông giao dịch định lượng thuần túy hơn.www.fmz.com)

Nếu bạn cảm thấy bài viết này hữu ích cho bạn, vui lòng chuyển tiếp cho bạn bè của bạn và hỗ trợ chúng tôi. Chia sẻ cũng là một loại trí tuệ!

Liên hệ với chúng tôi

Telegram: FMZ Quant

Email:henry@fmz.com

Trang web:www.fmz.com


Thêm nữa