Originaire: FMZ Quantwww.fmz.com
La "vraie chose" du commerce quantitatif est un lieu de rassemblement où vous pouvez vraiment bénéficier.
N° 1
Le mentor de Warren Buffett, Benjamin Graham, a mentionné dans son livre "L'investisseur intelligent" un modèle de négociation dans lequel les actions et les obligations sont dynamiquement équilibrées.Ce modèle de négociation est très simple:
50% des fonds en main sont investis dans des fonds d'actions et les 50% restants sont investis dans des fonds obligataires, c'est-à-dire que les actions et les obligations représentent chacune la moitié.
Un rééquilibrage des positions d'actifs basé sur des intervalles fixes ou des variations du marché rétablit le ratio des actifs en actions par rapport aux actifs obligataires à un niveau initial de 1:1.
C'est toute la logique de toute la stratégie, y compris quand acheter et vendre, et combien acheter et vendre.
N° 2
Dans cette méthode, la volatilité des fonds obligataires est en réalité très faible, bien inférieure à la volatilité des actions, de sorte que les obligations sont utilisées ici comme
Si le prix des actions augmente, la valeur marchande de l'action sera supérieure à la valeur marchande de l'obligation. Lorsque le ratio de la valeur marchande de ces deux dépasse le seuil fixé, la position totale sera réajustée, l'action sera vendue et l'obligation sera achetée pour que le ratio valeur d'action à valeur d'obligation revienne à 1:1 initial.
À l'inverse, si le prix des actions chute, la valeur marchande de l'action sera inférieure à la valeur marchande de l'obligation. Lorsque le ratio de la valeur marchande de ces deux dépasse le seuil fixé, la position totale sera réajustée, l'action sera achetée et l'obligation sera vendue afin de ramener le ratio de capitalisation boursière de la valeur de l'obligation à la valeur de l'action à 1:1 initial.De cette façon, le rapport entre l'équilibre dynamique des actions et des obligations est suffisant pour profiter du bénéfice de la croissance des actions et réduire la volatilité des actifs.
Puisque c'est une stratégie complète et mutuelle, pourquoi ne pas l'utiliser sur le marché des crypto-monnaies?
N° 3
Stratégie de balance dynamique des actifs de la chaîne de blocs en BTC
La logique de la stratégie
Selon la valeur actuelle des BTC, le solde du compte est maintenu à 6400 $ en espèces et 1 BTC, c'est-à-dire que le rapport initial de trésorerie à la valeur de marché des BTC est de 1:1.
Si le prix du BTC monte à 7400 $, c'est-à-dire que la valeur marchande du BTC est supérieure au solde du compte et que la différence entre eux dépasse le seuil fixé, alors (7400-6400)/7400/2 pièces sont vendues. Cela signifie que le BTC s'est apprécié et que nous devons échanger l'argent.
Si le prix du BTC tombe à 5400 $, c'est-à-dire que la valeur marchande du BTC est inférieure au solde du compte et que la différence entre eux dépasse le seuil fixé, achetez (6400-5400)/5400/2 pièces. Cela signifie que le BTC s'est déprécié et que nous devons racheter le BTC.
De cette façon, indépendamment du fait que le BTC soit apprécié ou déprécié, le solde du compte et la valeur marchande du BTC sont toujours maintenus dynamiquement égaux.
N° 4
Alors comment l'implémenter avec du code de programmation?
Prenons l'exemple de la plateforme de négociation quantitative FMZ.
// 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
}
}
L'ensemble du cadre de stratégie est en fait très simple, une fonction
N° 5
Module de commande
// 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
}
La logique de la transaction de commande est claire, et tous les commentaires ont été écrits dans le code.
Le processus principal est le suivant:
Obtenez des informations sur le compte.
Prends les données de Tick.
Calculer l'écart entre les prix d'achat et les prix d'achat des données Tick.
Calculer le solde du compte et l'écart de valeur marchande des BTC.
Calculer la condition de déclenchement de la négociation, le prix de l'ordre et la quantité de l'ordre.
Faites une commande et retournez vraie.
N° 6
Annuler le module de commande en attente
// 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
}
}
}
}
Le module annuler les commandes en attente est encore plus simple, les étapes sont les suivantes:
Attendez une seconde avant de retirer la commande, car certaines bourses peuvent avoir des retards de serveur.
Continuez à obtenir une série d'ordres non exécutés, et si une exception est renvoyée, continuez à essayer jusqu'à ce qu'elle réussisse.
Si le tableau des ordres non exécutés est vide, il renvoie immédiatement l'état de retrait.
S'il y a des ordres non exécutés, l'ensemble du tableau est parcouru et l'ordre est retiré en fonction de l'identifiant d'ordre.
N° 7
Cette stratégie est le code source de la programmation Sur la plate-forme de trading quantitative FMZ, avec seulement 80 lignes de code, une stratégie d'équilibrage dynamique blockchain BTC complète a été construite avec succès.
N° 8
Ensuite, testons cette simple stratégie d'équilibrage dynamique pour voir si elle fonctionne.
Environnement de contre-testPerformances des essais antérieursCourbe de test à l'enversUn autre, le même graphique de prix BTC de la périodeÇa vous choque?
Le BTC a poursuivi sa baisse de huit mois, et même la plus forte baisse a dépassé 70%, ce qui a fait perdre confiance à de nombreux investisseurs dans les actifs blockchain.
Le revenu cumulé de cette stratégie est aussi élevé que 160%, et le ratio annualisé de retour sur risque dépasse 5. Pour une stratégie de trading aussi simple, ce retour sur investissement a dépassé la majorité des types de joueurs
N° 9
Cette stratégie d'équilibrage, avec un seul paramètre de base (valeur seuil), est une méthode d'investissement très simple qui ne vise pas des rendements excédentaires mais des bénéfices solides.
Contrairement à la stratégie de tendance, la stratégie d'équilibre dynamique est contre la tendance. Cette stratégie consiste à réduire la position et à se refroidir lorsque le marché est trop chaud. Lorsque le marché est désert, il sera caché, ce qui est similaire à la régulation macroéconomique.
En effet, la stratégie d'équilibrage dynamique repose sur l'idée que le prix est imprévisible, tout en captant les fluctuations de prix.
Compte tenu de la longueur de l'article, il est impossible pour un article d'être complet sur tout. Comme le dit un vieil adage
Le marché boursier n'est pas un "piseur" qui mesure avec précision la valeur. Au contraire, c'est une "machine à voter". Les décisions prises par d'innombrables personnes sont un dopant rationnel et émotionnel. Il y a beaucoup de fois où ces choix sont faits.
Pour copier directement le code source, veuillez visiter notre place de stratégie à:https://www.fmz.com/strategy/110900
Il y a beaucoup de stratégies que vous pouvez étudier, télécharger, louer ou acheter.
NO.10
À propos de nous
La raison de l'exploitation de ce site est de changer l'état actuel du monde du trading quantitatif où le manque de la
Si vous pensez que cet article vous a été utile, veuillez le transmettre à votre ami et nous soutenir.
Contactez-nous
Télégramme: FMZ Quant
Votre adresse électronique:henry@fmz.com
Site internet:www.fmz.com