Chiến lược cân bằng năng động dựa trên tiền kỹ thuật số

Tác giả: , Tạo: 2020-03-03 10:17:43, Cập nhật: 2023-10-09 22:49:27

img

Một, tóm tắt

Benjamin Graham, người cố vấn của Warren Buffett, đã từng đề cập đến một mô hình giao dịch chứng khoán trái phiếu cân bằng động trong cuốn sách của ông về nhà đầu tư thông minh.imgMột số người cho rằng, "Điều này là rất đơn giản".

  • Đầu tư 50% số tiền bạn có vào quỹ cổ phiếu và 50% còn lại vào quỹ trái phiếu, nghĩa là cả cổ phiếu và trái phiếu đều chiếm một nửa.
  • Một lần tái cân bằng tài sản theo khoảng thời gian cố định hoặc thay đổi thị trường, làm cho tỷ lệ tài sản cổ phiếu và tài sản trái phiếu trở lại mức ban đầu 1:1. Đó là toàn bộ logic của toàn bộ chiến lược, bao gồm khi nào mua và bao nhiêu.

2 Nguyên tắc cân bằng năng động

Trong phương pháp này, tỷ lệ biến động của quỹ trái phiếu thực sự rất nhỏ, thấp hơn rất nhiều so với tỷ lệ biến động của cổ phiếu, vì vậy trái phiếu được coi là "cơ quan tham khảo", tức là, trái phiếu được sử dụng để đo lường liệu cổ phiếu có kiếm được nhiều hay í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, và khi tỷ lệ giá trị thị trường của cả hai vượt quá mức thềm được thiết lập, tổng vị trí sẽ được điều chỉnh lại, bán cổ phiếu và mua trái phiếu, để tỷ lệ giá trị thị trường cổ phiếu và trái phiếu trở lại mức ban đầu 1:1.

Thay vào đó, giá cổ phiếu giảm, làm cho giá trị thị trường của cổ phiếu thấp hơn giá trị thị trường của trái phiếu, và khi tỷ lệ giá trị thị trường của cả hai vượt quá mức thềm được thiết lập, tổng vị trí được điều chỉnh lại, mua cổ phiếu và bán trái phiếu, làm cho tỷ lệ giá trị thị trường trái phiếu trở lại mức ban đầu 1:1.img

Như vậy, tỷ lệ cân bằng động giữa cổ phiếu và trái phiếu là đủ để hưởng lợi từ sự tăng trưởng của cổ phiếu và giảm biến động tài sản. Là người tiên phong trong đầu tư giá trị, Graham đã cung cấp cho chúng ta một ý tưởng tuyệt vời.

Thứ ba, chiến lược logic

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

Logic chiến lược

  • Theo giá trị hiện tại của BTC, số dư tài khoản được giữ lại là 5000 yen tiền mặt và 0,1 BTC, tức là tỷ lệ ban đầu giữa tiền mặt và giá trị thị trường BTC là 1:1.
  • Nếu giá BTC tăng lên ¥6000, 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 đặt ra, hãy bán ((6000-5000) / 6000/2 đồng.
  • Nếu giá BTC giảm xuống còn ¥ 4000, nghĩa là giá trị thị trường của 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, hãy mua ((5000-4000) / 4000/2 đồng.

Như vậy, bất kể BTC được tăng giá hay giảm giá, số dư tài khoản sẽ luôn được duy trì tương đương với giá trị thị trường của BTC. Nếu BTC bị giảm giá, bạn sẽ mua một số, và sau đó bán một số, giống như bình thường.

4. Khung chiến lược

Vì vậy, làm thế nào để thực hiện với mã? Hãy lấy ví dụ của nhà phát minh của nền tảng giao dịch định lượng, trước tiên hãy xem khung chiến lược:

// 撤单函数
function CancelPendingOrders() {}

// 下单函数
function onTick() {}

// 主函数
function main() {
    // 过滤非重要信息
    SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
    while (true) { // 轮询模式
        if (onTick()) { // 执行 onTick 函数
            CancelPendingOrders(); // 取消未成交的挂单
            Log(_C(exchange.GetAccount)); // 打印当前账户信息
        }
        Sleep(LoopInterval * 1000); // 休眠
    }
}

Toàn bộ khuôn khổ chính sách thực sự rất đơn giản, một hàm chính, một hàm onTick, một hàm CancelPendingOrders, và các tham số cần thiết.

5. Đơn giản hóa mô-đun

// 下单函数
function onTick() {
    var acc = _C(exchange.GetAccount); // 获取账户信息
    var ticker = _C(exchange.GetTicker); // 获取 Tick 数据
    var spread = ticker.Sell - ticker.Buy; // 获取 Tick 数据的买卖价差
    // 账户余额与当前持仓价值的差值的 0.5倍
    var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
    var ratio = diffAsset / acc.Balance; // diffAsset / 账户余额
    LogStatus('ratio:', ratio, _D()); // 打印 ratio和当前时间
    if (Math.abs(ratio) < threshold) { // 如果 ratio的绝对值小于指定阈值
        return false; // 返回 false
    }
    if (ratio > 0) { // 如果 ratio大于 0
        var buyPrice = _N(ticker.Sell + spread, ZPrecision); // 计算下单价格
        var buyAmount = _N(diffAsset / buyPrice, XPrecision); // 计算下单量
        if (buyAmount < MinStock) { // 如果下单量小于最小交易量
            return false; // 返回 false
        }
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // 买入下单
    } else {
        var sellPrice = _N(ticker.Buy - spread, ZPrecision); // 计算下单价格
        var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // 计算下单量
        if (sellAmount < MinStock) { // 如果下单量小于最小交易量
            return false; // 返回 false
        }
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // 卖出下单
    }
    return true; // 返回 true
}

Dưới đây là các giao dịch logic rõ ràng, tất cả các chú thích đã được viết trong mã, bạn có thể nhấp vào hình ảnh để phóng to.

Các quy trình chính sau đây:

  • Nhập thông tin tài khoản.
  • Nhận dữ liệu Tick.
  • Tính toán Tick dữ liệu giá bán khác nhau.
  • Tính toán số dư tài khoản và giá trị thị trường BTC.
  • Tính toán các điều kiện mua bán, giá đặt hàng, số lượng đặt hàng.
  • Trả về true.

6 - Phân hủy đơn đặt hàng

// 撤单函数
function CancelPendingOrders() {
    Sleep(1000); // 休眠 1秒
    var ret = false;
    while (true) {
        var orders = null;
        // 持续获取未成交订单数组,如果返回异常,则继续获取
        while (!(orders = exchange.GetOrders())) {
            Sleep(1000); // 休眠 1秒
        }
        if (orders.length == 0) { // 如果订单数组为空
            return ret; // 返回撤单状态
        }
        for (var j = 0; j < orders.length; j++) { // 遍历未成交订单数组
            exchange.CancelOrder(orders[j].Id); // 依次取消未成交订单
            ret = true;
            if (j < (orders.length - 1)) {
                Sleep(1000); // 休眠 1秒
            }
        }
    }
}

Các bước sau đây là cách đơn giản nhất để gỡ bỏ các module:

  • Bạn có thể chờ 1 giây trước khi rút tiền, các sàn giao dịch riêng lẻ, bạn biết đấy.
  • Tiếp tục lấy mảng đơn đặt hàng chưa hoàn thành, nếu trở lại bất thường, tiếp tục lấy.
  • Nếu mảng đơn đặt hàng chưa được thực hiện là trống, trả về trạng thái thu hồi ngay lập tức.
  • Nếu có đơn đặt hàng chưa hoàn thành, hãy đi qua toàn bộ mảng và loại bỏ theo thứ tự theo số đơn đặt hàng.

Bảy, mã nguồn chính sách đầy đủ

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



// 撤单函数
function CancelPendingOrders() {
    Sleep(1000); // 休眠 1秒
    var ret = false;
    while (true) {
        var orders = null;
        // 持续获取未成交订单数组,如果返回异常,则继续获取
        while (!(orders = exchange.GetOrders())) {
            Sleep(1000); // 休眠 1秒
        }
        if (orders.length == 0) { // 如果订单数组为空
            return ret; // 返回撤单状态
        }
        for (var j = 0; j < orders.length; j++) { // 遍历未成交订单数组
            exchange.CancelOrder(orders[j].Id); // 依次取消未成交订单
            ret = true;
            if (j < (orders.length - 1)) {
                Sleep(1000); // 休眠 1秒
            }
        }
    }
}

// 下单函数
function onTick() {
    var acc = _C(exchange.GetAccount); // 获取账户信息
    var ticker = _C(exchange.GetTicker); // 获取 Tick 数据
    var spread = ticker.Sell - ticker.Buy; // 获取 Tick 数据的买卖价差
    // 账户余额与当前持仓价值的差值的 0.5倍
    var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
    var ratio = diffAsset / acc.Balance; // diffAsset / 账户余额
    LogStatus('ratio:', ratio, _D()); // 打印 ratio和当前时间
    if (Math.abs(ratio) < threshold) { // 如果 ratio的绝对值小于指定阈值
        return false; // 返回 false
    }
    if (ratio > 0) { // 如果 ratio大于 0
        var buyPrice = _N(ticker.Sell + spread, ZPrecision); // 计算下单价格
        var buyAmount = _N(diffAsset / buyPrice, XPrecision); // 计算下单量
        if (buyAmount < MinStock) { // 如果下单量小于最小交易量
            return false; // 返回 false
        }
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // 买入下单
    } else {
        var sellPrice = _N(ticker.Buy - spread, ZPrecision); // 计算下单价格
        var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // 计算下单量
        if (sellAmount < MinStock) { // 如果下单量小于最小交易量
            return false; // 返回 false
        }
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // 卖出下单
    }
    return true; // 返回 true
}

// 主函数
function main() {
    // 过滤非重要信息
    SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
    while (true) { // 轮询模式
        if (onTick()) { // 执行 onTick 函数
            CancelPendingOrders(); // 取消未成交的挂单
            Log(_C(exchange.GetAccount)); // 打印当前账户信息
        }
        Sleep(LoopInterval * 1000); // 休眠
    }
}

Các tham số bên ngoài img

8. Kiểm tra lại chiến lược

Tiếp theo, chúng ta hãy thử một chiến lược cân bằng động đơn giản này và xem liệu nó có hiệu quả hay không. Dưới đây là những đánh giá về dữ liệu lịch sử của BTC, chỉ để tham khảo.

Phân tích môi trường img

Kiểm tra hiệu suất img

Đánh giá lại đường cong img

Một bức ảnh khác, cùng thời điểm, về xu hướng giá của BTC.img

Trong thời gian xem lại, BTC đã giảm trong 8 tháng, thậm chí giảm cao nhất hơn 70%, khiến nhiều nhà đầu tư mất niềm tin vào các tài sản blockchain. Chiến lược này có lợi nhuận tích lũy lên đến 160%, tỷ lệ rủi ro lợi nhuận hàng năm hơn 5%. Đối với một chiến lược đầu tư đơn giản như vậy, lợi nhuận đầu tư đã vượt quá đa số người Hip Hop.

9/ Thu thập mã nguồn chiến lược

Mã nguồn chiến lược đã được công bố trên trang web của nhà phát minhhttps://www.fmz.com/strategy/110545Không cần thiết phải cấu hình trực tiếp để kiểm tra trực tuyến.

10. Tóm lại

Chiến lược cân bằng năng động này, chỉ có một tham số cốt lõi ("threshold threshold"), là một phương pháp đầu tư rất đơn giản, không theo đuổi lợi nhuận quá mức, mà là lợi nhuận vững chắc. Trái ngược với chiến lược xu hướng, chiến lược cân bằng năng động là ngược lại. Trong khi đó chiến lược cân bằng năng động là ngược lại, giảm giá trong khi thị trường nóng, giảm giá trong khi thị trường lạnh, giống như điều chỉnh kinh tế vĩ mô.

Trong thực tế, chiến lược cân bằng động chính là duy trì ý tưởng về sự không thể đoán trước giá cả, đồng thời là một thủ thuật để nắm bắt sự biến động của giá cả. Trung tâm quan trọng của chiến lược cân bằng động là thiết lập và điều chỉnh tỷ lệ phân bố tài sản, và kích hoạt ngưỡng.

Cuối cùng, chúng ta hãy kết thúc với một câu nói nổi tiếng của Benjamin Graham trong cuốn sách "The Brilliant Investor" của ông:Thị trường chứng khoán không phải là một "đường cân" để đo lường giá trị chính xác, mà là một "máy bầu cử", trong đó các quyết định của vô số người là một sự pha trộn của lý trí và cảm xúc, và nhiều lần các lựa chọn và đánh giá giá trị lý trí khác nhau rất nhiều.Benjamin Graham là một nhà đầu tư thông minh.


Có liên quan

Thêm nữa