Homographies, groupes et finance décentralisée

Salut, Dans ce post, que je vais essayer d'alimenter, je vais proposer une étude des mathématiques financières décentralisées. Mon but est de créer un échange mathématique précis et rigoureux autour des théories d'arbitrages dans la DEFI. J'ai placé ce post dans la section shtam du site, car je n'ai pas de catégorie précise et j'utiliserai l'entièreté de mes connaissances mathématiques (qui sont bien maigres) pour alimenter les choses. Je commence par une note perso parlant des pools de liquidité 50/50.
[Déplacé en "Mathématiques et finance". AD]

Réponses

  • decentralized
    Modifié (June 2023)
    Je laisse ce message en crypter car c'est un arbitrage effectif et je ne sais pas si je peux montrer en vrai des transactions via des blockchains (je ne veux pas faire la pub ou autre : 
    <pre> [code] sage: a = arbitre(WFTM) 0.093758 sage: a {'path': USDC, USDC(osmosis), WFTM(osmosis), WFTM, WFTM(comdex), CMST, USDC(comdex), USDC, 'amount': 2713588, 'win': 93758} sage: a['path'].execute(2713588) etape 0 balance USDC(osmosis) ::: 1204783399 IBC transfer axelar ===> osmosis gas estimate: 112494 query osmosis transfer received etape 1 balance WFTM(osmosis) ::: 8804881651032011207 swap USDC for WFTM in osmosis balance WFTM(osmosis) ::: 17495877242235107930 etape 2 balance WFTM ::: 19125620 IBC transfer osmosis ===> axelar gas estimate: 211648 query axelar transfer received etape 3 balance WFTM(comdex) ::: 12552173806135129762 IBC transfer axelar ===> comdex gas estimate: 106730 query comdex transfer received etape 4 balance CMST ::: 21337019 swap WFTM for CMST in comdex gas estimate: 178764 balance CMST ::: 23412250 etape 5 balance USDC(comdex) ::: 448815 swap CMST for USDC in comdex gas estimate: 194223 balance USDC(comdex) ::: 2521971 etape 6 balance USDC ::: 295153782 IBC transfer comdex ===> axelar gas estimate: 123008 query axelar transfer received False [/code]</pre>
  • decentralized
    Modifié (May 2023)
    Je ne sais pas comment partager un code source ? c'est quoi la balise ?  (je voulais montrer l’exécution des homographies).
  • AD
    AD
    Modifié (May 2023)
    Pour insérer du code (latex, python, etc.)
    Tu cliques sur le bouton "Paragraphe" (6è par la gauche) > Code.
    Puis tu cliques sur le bouton "</>" (dernier à droite).
    Tu repères le "<pre class="CodeBlock"><code></code></pre>" que tu viens de créer.
    Tu colles ton code entre "<code>" et "</code>".
    Ce n'est pas plus compliqué que cela lol :)
    AD.
  • decentralized
    Modifié (June 2023)
    Merci, bon chatgpt n'était pas loin de la commande (je pense avoir compris mais c'est un peu casse pied, non ?) :D
    Alors j'explique un peu mieux. 
    1. on va parler d'échange entre deux actifs A et B. ( désolé va surement y avoir des mots anglais : swap).
    2. En général, dans la finance  les échanges entre actif sont généralement réalisés via un carnet d'ordre, les "traders" enregistrent des ordres (je veux A  à un prix p).
    3. Ici il n'y a pas de carnet d'ordre a proprement parler et c'est un algorithme qui simule un carnet d'ordre (qui va être homogène). 
    Une pool de liquidité c'est le truc qui va permettre d'échanger deux produits, mais pour pouvoir échanger il faut une réserve de produit à échanger : on parle de la liquidité de la pool. 
    Je donne un exemple de la vie de tous les jours : une pool chocolat / eau de Volvic  va permettre d'échanger du chocolat contre de l'eau de Volvic et vice versa en simulant le côté offre.
    Ici je vais donner des chiffres un peu aléatoire pour la liquidité (pour l'exemple).
    liquidité de la pool
    $c = 1000$
    $v = 4000$
    En gros ça veux dire que le stocke de chocolat et d'eau de Volvic est composée de 1000 tablettes de chocolat et de 4000 bouteille d'eau.
    Le prix d'un échange est juste le ratio, 1 tablette = 4000 / 1000 bouteilles.
    Maintenant le truc à comprendre c'est que c'est que si j'apporte 10 tablettes et bien je ne vais pas recevoir 40 bouteilles d'eau car l'algorithme d'échange va prendre en compte que puisque j'achète de l'eau son prix va monter (on parle de splipage ou de price impact). 
    Là j'explique un peu l'algorithme : c'est l'algo " pool de produit constant 50 /50". Tout se résume dans la phrase suivant : lors d'un échange le produit $cv$ est constant. 
    Avant échange :  $c  \times v = 1000  \times 4000$.
    J'apporte $10$ tablettes de chocolat donc le nouveau $c$ vaut $1010$.
    le nouveau v est donc  $1000  \times 4000/1010 = 3960.396$.
    et j'ai reçu $4000 - 3960.396  = 39.603$ bouteilles d'eau, donc un peu moins que $40$. 
    La composition de la pool est alors :
    $c = 1010$
    $v = 3960,396$
    est le nouveau prix est donc $3.92$.
    là j'affiche mon histoire de matrice (c'est très simple) :
    sage: l_in = 1000
    sage: l_out = 4000
    sage: M = matrix(ZZ,2,[l_out,0,1,l_in])
    sage: a,b =  M * vector([10,1])
    sage: M
    [4000    0]
    [   1 1000]
    sage: float(a/b)
    39.60396039603960
     Voilà comment est simulée l'offre est la demande. 
     Dans mon pdf, ce que je fabrique c'est que je veux des formules pour des multi-échanges :  $$ A_0  \to  A_1 \to  A_2  \to \dots \to  A_n $$Pourquoi ? et bien je vais examiner ces formules en prenant $A_n = A_0$ (un cycle) et le ut de la stratégie d'arbitrage est de réaliser ce cycle si et seulement si la quantité que j'apporte de $A_0$ et plus petite que la quantité que j'obtient à l'arrivé ! 
    Le truc que j'étudie en ce moment, c'est d'autre algorithme de pool. Par exemple, au lieu de dire que le produit 
    $c  v$  va être constant lors d'un échange, certaines pools sont gouvernées par le fait que $cv ( c^2 + v^2)$ est constant (une jolie courbe algébrique non ?), et là c'est plus complexe (pour le moment je ne sais pas faire de manière systématique).
  • Je vais faire un post plus explicatif sur ce que je fais : 
    Ici une photo d'une courbe en 1min (c'est pour pouvoir voir mes matrices en actions). Je commente : on voit deux salves de 1K sur les volumes (c'est mes matrices). Ensuite, la courbe descent un peu 

    Le chemin est de longueur 5 : 
    sage: tx = Path([CMST,USDC(COMDEX),USDC,USDC(CRESCENT),CMST(CRESCENT),CMST])
    sage: CRESCENT.liquidity()
    sage: tx.matrice()
    [3750173100347625                0]
    [             999 3748783790820000]
    Mes matrices qui s'agite un peu : 

    sage: tx.swap_data(1000 * 10**6)<br>(695285701, 128825)<br>sage: tx.execute(695285701)<br>etape 0<br>balance USDC(comdex) ::: 49755<br>swap CMST for USDC in comdex<br>gas estimate: 194517<br>balance USDC(comdex) ::: 694640171<br>etape 1<br>balance USDC ::: 20209157<br>IBC transfer comdex ===> axelar<br>gas estimate: 123082<br>query axelar<br>query axelar<br>transfer received<br>etape 2<br>balance USDC(crescent) ::: 29293490<br>IBC transfer axelar ===> crescent<br>gas estimate: 112254<br>query crescent<br>transfer received<br>etape 3<br>balance CMST(crescent) ::: 76391799<br>swap USDC for CMST in crescent<br>gas estimate: 170580<br>balance CMST(crescent) ::: 771330031<br>etape 4<br>balance CMST ::: 722291406<br>IBC transfer crescent ===> comdex<br>gas estimate: 122816<br>query comdex<br>transfer received<br>False
    et le deuxieme screen le résultat qui montre le résulat ! 

    Ici j'utilise des matrices spécifique à une concentration de liquidité ! https://uniswapv3book.com/docs/milestone_1/calculating-liquidity/ ... j'explique au prochain numéro ! 
  • decentralized
    Modifié (June 2023)
    Bon je donne deux autres photos qui sont dans la continuité juste pour le fun ... la 2. y'a un gars qui est pas content du prix donc il vend ... et la un j'essayes de lui explique que mes matrices donne le bon prix 0.999  (j'ai un petit décalage, je n'arrive pas à fixé le prix sur 0.999, mais niveau technologique j'utilise 3 brigdes un vault et un swap dans une liquidité concentré + 3 blockchains). J'ai une erreur de 1 / beaucoup :D 

    Voilà c'était pour le fun
  • Hey, si vous ne comprenez rien a ce que je fabrique vous pouvez me demander ?!? c'est le but de la discution (qui est entre moi et moi pour l'instant). Je peux expliquer a un enfant niveau L2 ... c'est basique pour l'instant ! 
Connectez-vous ou Inscrivez-vous pour répondre.