Réflexion sur la mobilité des actifs grâce à une stratégie de couverture contractuelle

Auteur:Je ne sais pas., Créé: 2020-10-20 16:48:32, Mis à jour: 2023-09-26 20:59:29

img

Réflexion sur la mobilité des actifs grâce à une stratégie de couverture contractuelle

Récemment, les nouvelles sont constantes dans le cercle monétaire, les nouvelles des bourses sont également en plein essor. À un moment donné, les amis de la monnaie étaient anxieux et craignaient pour la sécurité de leurs actifs sur la blockchain. De nombreux groupes de monnaies ont mis en place des petites annonces de 9 coupes, 8 coupes pour mettre de côté des billets d'occasion. C'est vrai que les gains stables, les pertes stables, sont des choses que les gens n'ont jamais faites.money printerJe ne sais pas comment faire. Pardonnez mon anglais maladroit.

Cependant, il y a des volatilités, comme par exemple la réalisation d'un maximum de pertes et de bénéfices grâce à la couverture contractuelle.

La stratégie 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

Logique stratégique: La stratégie commence par initialiser les positions pos1 et pos2 en ensembles vides. La stratégie entre dans le cycle principal, chaque cycle commence par obtenir des données de profondeur sur les contrats des deux bourses (données minces des ordres), calculer les écarts. Si les écarts continuent de s'élargir au-delà de l'écart précédent jusqu'à ce que le prix augmente d'un pas de plus, le hedge continue.

Le principe est en fait très simple, c'est-à-dire que le décalage est grand, contre-poussée. L'échange en attente de pertes est à l'équilibre lors de la perte de stock, si le décalage continue de s'élargir, continuez à le couvrir jusqu'à ce que l'échange en attente de perte soit à l'équilibre. Quelques paramètres plus importants sont: combien de positions en attente de perte, le rythme du décalage, la taille de la couverture.

La stratégie est relativement simple, il s'agit simplement de vérifier l'idée, le disque réel n'est pas disponible. Le disque réel comporte de nombreuses questions à considérer, par exemple si le contrat à négocier est le prix de la monnaie ou le prix U, si les multiples de contrats des différents échanges A et B sont les mêmes, etc.

Cela permet à un échange de perdre de l'argent, la partie de la perte devient à peu près la partie de la perte de l'autre échange (problème de différence, il peut y avoir des pertes de couverture, c'est-à-dire plus de pertes que de gains).$.CoverShort,$.OpenShortCe sont les fonctions d'interface du modèle, dont le DEMO est censé être exécuté en faisant référence à cette bibliothèque.

Le prototype de la stratégie ci-dessus n'est qu'une petite exploration la plus simple, il peut y avoir plus de détails à considérer lors de l'opération concrète, comme la capacité de charge peut être conçue en progression.


Relationnée

Plus de

Le couteau à osS'il vous plaît, installez-le au plus vite, si vous voulez que je le loue, je peux retirer mes pièces de jeu.

Le petit rêveL'auteur commence en disant que l'instabilité et le mal-être sont des facteurs qui peuvent conduire à un retour en arrière.