Размышления о движении активов с помощью контрактной стратегии хеджирования

Автор:Конд, Создано: 2020-10-20 16:48:32, Обновлено: 2023-09-26 20:59:29

img

Размышления о движении активов с помощью контрактной стратегии хеджирования

В последнее время в монетном круге можно сказать, что новости постоянно, новости на биржах также полны неба. В то время все друзья монеты были в ужасе, все беспокоились о безопасности своих активов блокчейна. В разных группах монетной среды также было много рекламных объявлений о девяти скидках и восьми скидках на оставленные вторую монету. И действительно, стабильные прибыли, стабильные убытки - это все, что мы имеем.money printerЯ не знаю, что это такое. Прошу прощения за мой тупой английский язык.

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

Стратегия DEMO

/*backtest
start: 2020-09-30 00:00:00
end: 2020-10-19 00:00:00
period: 1d
basePeriod: 1m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_HuobiDM","currency":"BTC_USD"}]
*/

var step = 20    // 加仓价格步长

function main() {
    var pos1 = []
    var pos2 = []
    var ct = "quarter"                         // 例如用季度合约
    exchanges[0].SetContractType(ct)
    exchanges[1].SetContractType(ct)
    var diff = 0

    while (true) {
        var r1 = exchanges[0].Go("GetDepth")   // A交易所
        var r2 = exchanges[1].Go("GetDepth")   // B交易所
        var depth1 = r1.wait()
        var depth2 = r2.wait()

        if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff) {
            if(pos1.length == 0 && pos2.length == 0) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            } else if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff + step) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            }
        }
        
        if(pos1.length != 0 && pos1[0].Profit < -0.001) {
            var info1 = $.CoverShort(exchanges[0], ct, pos1[0].Amount)
            var info2 = $.CoverLong(exchanges[1], ct, pos2[0].Amount)
            pos1 = _C(exchanges[0].GetPosition)
            pos2 = _C(exchanges[1].GetPosition)
            diff = 0
        }
        LogStatus(_D(), diff)
        Sleep(500)
    }
}

img

img

Политическая логика: Стратегия начинается с инициализации позиции pos1, pos2 как пустой набор. Стратегия вступает в основной цикл, каждый цикл начинается с получения глубинных данных о контрактах двух бирж (отчёт о дефиците ордера), расчетов разницы. Если разница продолжает расширяться до превышения последней разницы плюс один шаг, то продолжается хеджирование позиции.

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

Стратегия довольно проста, это просто проверка идеи, реальный диск не доступен. Есть много вопросов, которые нужно рассмотреть, например, контракт, который нужно торговать, - это курс монеты, или курс U, а также разные контракты на биржах A и B имеют одинаковые кратности.

Таким образом, одна биржа теряет деньги, и часть потерь примерно превращается в часть прибыли другой биржи (проблема дифференциации, возможно, будет хеджирование убытков, т.е. больше убытков, чем прибыли).$.CoverShort,$.OpenShortЭто интерфейсные функции шаблона, для выполнения которых требуется ссылка на данную библиотеку.

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


Связанные

Больше

Костяные ножиПожалуйста, поставьте их как можно быстрее, если вы хотите взять мои игровые монеты.

Маленькие мечтыПо словам автора, нестабильность и неудачи могут привести к переезду обратно.