В процессе загрузки ресурсов... загрузка...

Динамическая стратегия сбалансированности на основе цифровой валюты

Автор:Изобретатели количественного измерения - мечты, Создано: 2020-03-03 10:17:43, Обновлено: 2023-10-09 22:49:27

基于数字货币的动态平衡策略

Первое: резюме

Бенджамин Грэхем, наставник Уоррена Баффета, в своей книге "Умные инвесторы" упомянул о динамически балансирующей модели торговли акциями и облигациями.基于数字货币的动态平衡策略Эта модель торговли очень проста: - инвестировать 50% своих средств в фонды акций, а остальные 50% - в фонды облигаций; то есть акции и облигации составляют по половине. - осуществление ребалансировки активов в соответствии с фиксированными интервалами времени или изменениями на рынке, чтобы вернуть соотношение акций и облигаций к первоначальному 1:1; Это и есть вся логика всей стратегии, включая когда и сколько покупать.

Принцип динамического баланса

В этом подходе волатильность облигационных фондов очень мала, намного ниже, чем волатильности акций, поэтому здесь облигации рассматриваются как "референтные", т.е. облигации используются для измерения того, слишком много или слишком мало зарабатывают акции.

Если цены на акции растут и их рыночная стоимость превышает рыночную стоимость облигаций, то, когда их рыночная стоимость превышает установленный порог, общая позиция пересчитывается, продаются акции и покупаются облигации, что приводит к возвращению рыночной стоимости облигаций к первоначальному соотношению 1:1.

Напротив, снижение цен на акции приводит к тому, что их рыночная стоимость становится меньше, чем рыночная стоимость облигаций, и когда их рыночная стоимость превышает установленный порог, общая позиция реорганизуется, покупаются акции и продаются облигации, что возвращает рыночную стоимость облигаций к первоначальному соотношению 1:1.基于数字货币的动态平衡策略

Таким образом, динамически уравновешенное соотношение между акциями и облигациями может принести пользу росту акций и снизить волатильность активов. Как пионер инвестиций в стоимость, Грэхем дал нам отличную идею.

Третье, стратегическая логика.

Стратегия динамического балансирования в блокчейн-активах BTC

Стратегическая логика - по текущей стоимости BTC, баланс счета содержит ¥5000 наличных и 0.1 BTC, то есть первоначальное соотношение денежных средств к рыночной стоимости BTC составляет 1:1. - Если цена BTC выросла до ¥6000, то есть рыночная стоимость BTC больше баланса счета, и разница между ними превышает установленный порог, продать ((6000-5000) / 6000/2 монет. - Если цена BTC упала до ¥ 4000, то есть рыночная стоимость BTC меньше баланса счета, и разница между ними превышает установленный порог, купить ((5000-4000)/4000/2 монет.

Таким образом, независимо от того, повышается ли BTC или понижается, баланс счета всегда динамически сохраняется на уровне рыночной стоимости BTC. Если BTC понижается, покупают, а когда возвращаются, продают, как обычно.

Четвертое, стратегическая база

Итак, как это сделать с помощью кода? Давайте посмотрим на стратегическую структуру с помощью изобретателей, которые количественно оценивают торговые платформы.

// 撤单函数
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); // 休眠
    }
}

В целом, структура стратегии очень проста: основная основная функция, функция onTick, функция CancelPendingOrders и необходимые параметры.

Пятый модуль

// 下单函数
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
}

Ниже приведены логические схемы транзакций, все комментарии написаны в коде, и можно нажать на изображение, чтобы увеличить его.

Основные процессы: - Получить информацию об аккаунте. - Получить данные Tick. - Расчет цены на данные Tick. - Расчет баланса счета и разницы в рыночной стоимости BTC. - Расчет условий купли-продажи, цены заказа, количества заказа. - Загрузить и вернуть true.

Второй - снятие платы.

// 撤单函数
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秒
            }
        }
    }
}

Если вы хотите, чтобы ваш модуль был удалён, вы должны сделать следующие шаги: - Подождите секунду, прежде чем снять деньги, отдельные биржи, вы знаете. - Продолжает получать массив невыполненных заказов, если он возвращает аномалии, продолжает получать. - Если матрица невыполненных заказов пуста, сразу же возвращается к состоянию снятия. - Если есть незавершенные заказы, просматривайте всю матрицу и отбирайте их в соответствии с номером заказа.

Семь, полный код стратегии

// 回测环境
/*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); // 休眠
    }
}

Внешние параметры 基于数字货币的动态平衡策略

Восемь, стратегическая рецензия.

Теперь давайте проверим эту простую стратегию динамического балансирования и посмотрим, будет ли она работать. Ниже приведены рецензии на исторические данные BTC только для справки.

Окружающая среда 基于数字货币的动态平衡策略

Проверка результатов 基于数字货币的动态平衡策略

Проверка кривой 基于数字货币的动态平衡策略

Еще один график движения цены BTC за один и тот же период基于数字货币的动态平衡策略

В период отсчета, BTC продолжает падать на протяжении 8 месяцев, и даже достигает максимума более 70%, что приводит к тому, что многие инвесторы теряют доверие к блокчейн-активам. Эта стратегия имеет совокупную прибыль до 160% и годовой риск прибыли более 5%.

9. Доступ к источнику стратегии

Источник стратегии был опубликован на веб-сайте изобретателей.https://www.fmz.com/strategy/110545Не нужно настраивать прямую онлайн-рецензию.

10. Вкратце

Эта стратегия динамического балансирования, имеющая только один ключевой параметр ("пороговый порог"), является очень простым методом инвестирования, целью которого является не чрезмерная прибыль, а стабильная прибыль. В противоположность стратегии тренда, стратегия динамического балансирования движется в обратном направлении.

Действительно, стратегия динамического балансирования именно придерживается идеи непредсказуемости цен, а также является способом улавливать колебания цен. Ключевое ядро стратегии динамического балансирования заключается в установлении и регулировании пропорций распределения активов, а также в запускании порогов.

Наконец, давайте закончим с известной цитатой Бенджамина Грэхема из книги "Умный инвестор":Акции - это не "весы", которые точно измеряют стоимость, а скорее "голосовая машина", в которой решения, принимаемые бесчисленными людьми, являются смесью рациональных и эмоциональных решений, которые часто отличаются друг от друга. Секрет инвестирования заключается в том, чтобы инвестировать, когда цены значительно ниже их внутренней стоимости, и верить, что рыночная тенденция восстановится.Бенджамин Грэхем - умный инвестор


Содержание

Больше информации