Aller au contenu

Vérification arithmétique

Le calcul du chapitre précédent tient dans un script Python sans dépendance. Il est reproduit intégralement ici pour que le lecteur puisse le faire tourner, en modifier les hypothèses, et vérifier que la conclusion résiste — ou pas.

Le script

#!/usr/bin/env python3
"""Économie d'un MystNode adossé à une IP résidentielle louée."""

REVENU_BRUT = 15.0          # $/mois, mesuré sur une ligne résidentielle
COMMISSION = 0.20           # part prélevée par le réseau
PRIX_GO_MIN, PRIX_GO_MAX = 0.04, 0.30


def volume_mensuel_go(revenu_brut=REVENU_BRUT, prix_go=None):
    """Trafic qu'il faut réellement écouler pour encaisser `revenu_brut`."""
    if prix_go is None:
        prix_go = (PRIX_GO_MIN + PRIX_GO_MAX) / 2
    return revenu_brut / prix_go


def net(revenu_brut, cout_ip, cout_machine=0.0, facteur_qualite=1.0):
    """Marge nette mensuelle par node."""
    return revenu_brut * facteur_qualite * (1 - COMMISSION) - cout_ip - cout_machine


def prix_ip_max(cout_machine=0.0, facteur_qualite=1.0):
    """Budget maximum par IP pour rester à l'équilibre."""
    return REVENU_BRUT * facteur_qualite * (1 - COMMISSION) - cout_machine


# (nom, coût IP, coût machine, facteur qualité, plafond de trafic en Go)
OPTIONS = [
    ("Webshare ISP dédiée",        0.30, 3.50, 0.35,  250),
    ("Evomi ISP dédiée",           1.00, 3.50, 0.35, 10000),
    ("Rayobyte ISP (annuel)",      1.35, 3.50, 0.35, 10000),
    ("Proxy-Cheap ISP",            2.12, 3.50, 0.35, 10000),
    ("IPRoyal ISP (90 j)",         2.40, 3.50, 0.35, 10000),
    ("Decodo ISP dédiée",          3.33, 3.50, 0.35, 10000),
    ("Oxylabs ISP",                4.00, 3.50, 0.35,    50),
    ("Bright Data ISP",            5.00, 3.50, 0.35,   100),
    ("Infatica ISP dediee",        1.95, 3.50, 0.35, 10000),
    ("CometVPN IP res. dediee",    2.79, 3.50, 0.35, 10000),
    ("Surflare IP res. dediee",    6.90, 3.50, 0.50, 10000),
    ("IPBurger ISP statique",     14.41, 3.50, 0.60, 10000),
    ("Windscribe res. + Pro",     13.75, 0.00, 0.75, 10000),
    ("TorGuard IP residentielle", 19.99, 3.50, 0.75, 10000),
    ("Proxy mobile dedie 4G",     99.00, 3.50, 0.80, 10000),
    ("Ligne fibre reelle (RO/UA)", 9.00, 0.00, 1.00, 10000),
    ("Ligne fibre + mini-PC",      9.00, 1.50, 1.00, 10000),
    ("/24 loue + ASN + BGP",       0.68, 3.50, 0.20, 10000),
]


def demo():
    assert volume_mensuel_go(prix_go=0.30) == 50.0
    assert abs(volume_mensuel_go() - 88.24) < 0.01

    # Une IP à 0,30 $ paraît rentable... tant qu'on ignore quota et qualité.
    assert net(15, 0.30, 0.0, 1.0) == 11.7
    # ...mais avec l'abattement d'un node proxifié, ça s'effondre.
    assert abs(net(15, 0.30, 3.50, 0.35) - 0.4) < 0.01

    # Aucune offre « vraie IP résidentielle » au-dessus de 12 $ ne passe.
    assert net(15, 19.99, 3.50, 0.75) < 0
    assert net(15, 14.41, 3.50, 0.60) < 0

    # Le seuil de rentabilité, machine comprise.
    assert abs(prix_ip_max(cout_machine=3.5) - 8.5) < 1e-9

    # Windscribe : IP résidentielle 96 $/an (8 $/mois) + abonnement Pro
    # (69 $/an, soit 5,75 $/mois) = 13,75 $. Node aux États-Unis, 26,14 $ en
    # 2023, sur une machine déjà possédée (pas de VPS).
    # Seul montage du panel dont l'arithmétique seule soit positive.
    assert abs(net(26.14, 13.75, 0.00, 0.75) - 1.93) < 0.01
    # ...et il retombe sous zéro dès qu'il faut louer la machine.
    assert net(26.14, 13.75, 3.50, 0.75) < 0
    print("demo(): OK\n")

La fonction rapport(), omise ici pour la lisibilité, se contente de parcourir OPTIONS et d'appliquer les deux tests. Le script complet réside dans l'espace de travail sous le nom mystnode-ip-economics.py.

La sortie

demo(): OK

Revenu brut cible      : 15.00 $/mois
Apres commission 20%   : 12.00 $/mois
Trafic a ecouler       : 50 a 375 Go/mois (median 88 Go)
Budget max par IP      : 12.00 $ (qualite intacte, sans machine)
                         8.50 $ (avec un VPS a 3,50 $)

Option                           IP  Net/mois  Plafond  Verdict
---------------------------------------------------------------
Webshare ISP dédiée            0.30      0.40      250  marge < 3 $, non viable a l'echelle
Evomi ISP dédiée               1.00     -0.30    10000  perte seche
Rayobyte ISP (annuel)          1.35     -0.65    10000  perte seche
Proxy-Cheap ISP                2.12     -1.42    10000  perte seche
IPRoyal ISP (90 j)             2.40     -1.70    10000  perte seche
Decodo ISP dédiée              3.33     -2.63    10000  perte seche
Oxylabs ISP                    4.00     -3.30       50  quota 50 Go < 88 Go requis
Bright Data ISP                5.00     -4.30      100  perte seche
Infatica ISP dediee            1.95     -1.25    10000  perte seche
CometVPN IP res. dediee        2.79     -2.09    10000  perte seche
Surflare IP res. dediee        6.90     -4.40    10000  perte seche
IPBurger ISP statique         14.41    -10.71    10000  perte seche
Windscribe res. + Pro         13.75     -4.75    10000  perte seche
TorGuard IP residentielle     19.99    -14.49    10000  perte seche
Proxy mobile dedie 4G         99.00    -92.90    10000  perte seche
Ligne fibre reelle (RO/UA)     9.00      3.00    10000  viable
Ligne fibre + mini-PC          9.00      1.50    10000  marge < 3 $, non viable a l'echelle
/24 loue + ASN + BGP           1.55      0.85    10000  marge < 3 $, non viable a l'echelle
/24 achete + ASN + BGP         1.39      1.01    10000  marge < 3 $, non viable a l'echelle
Parc mobile Proxidize x10     45.00    -35.40    10000  perte seche

Le test de gros, ajouté au second passage

Deux fonctions supplémentaires portent le raisonnement du chapitre sur le marché de gros :

PRIX_GO_GROS = 0.50   # plancher mondial, à partir de 10 To (Geonode, ArealProxy)


def ratio_gros():
    """Combien de fois le prix d'achat de gros dépasse le prix de revente."""
    net_min = PRIX_GO_MIN * (1 - COMMISSION)
    net_max = PRIX_GO_MAX * (1 - COMMISSION)
    return PRIX_GO_GROS / net_max, PRIX_GO_GROS / net_min


def cout_par_ip_parc(loyer_ip, asn_mensuel, transit_mensuel, compute_mensuel,
                     nb_ip=256):
    """Coût mensuel tout compris d'une IP dans un parc auto-hébergé (/24)."""
    return loyer_ip + (asn_mensuel + transit_mensuel + compute_mensuel) / nb_ip


# Assertions correspondantes
bas, haut = ratio_gros()
assert abs(bas - 2.083) < 0.001 and abs(haut - 15.625) < 0.001
assert bas > 1                      # aucun volume ne renverse l'arbitrage

cout = cout_par_ip_parc(0.45, 50, 50, 200)
assert abs(cout - 1.6219) < 0.001
assert cout < prix_ip_max(cout_machine=3.5)   # le prix n'est PAS l'obstacle

La dernière assertion est la plus importante du script, et elle est délibérément contre-intuitive : elle vérifie qu'une IP dans un parc auto-hébergé coûte moins que le seuil de rentabilité. Le parc /24 n'échoue pas sur le prix. Il échoue sur la classification, qui n'est pas modélisable en Python — et c'est pourquoi les deux lignes /24 du tableau, calculées avec un facteur de qualité de 0,20, affichent une marge légèrement positive.

Où se cache l'hypothèse, dans ces deux lignes

Tout repose sur le facteur de qualité de 0,20 attribué à un parc auto-déclaré. S'il valait 0,50, la marge par IP passerait à ~4,50 $ et le /24 deviendrait la meilleure affaire du rapport.

Il n'y a aucun moyen de mesurer ce facteur sans monter le parc. L'argument qui le justifie n'est donc pas arithmétique mais économique, et il est exposé au chapitre 8 : l'écart de prix entre une IPv4 ordinaire (0,40 $/mois) et une IPv4 classée ISP (1,50-5 $/mois) est la valorisation, par le marché lui-même, de la classification. Si un geofeed suffisait à la produire, cet écart aurait disparu.

Lecture des résultats

Une seule ligne « viable »

La ligne fibre réelle avec une machine déjà sur place dégage 3,00 $/mois. C'est la seule ligne positive au-delà du bruit — et elle correspond au segment 5, celui qui exige une personne et une adresse.

Avec le mini-PC à amortir, la marge tombe à 1,50 $/mois. Autrement dit : le matériel à lui seul consomme la moitié du bénéfice.

La ligne Webshare est un piège

À 0,30 $ l'IP, la marge affichée est de +0,40 $/mois. Techniquement positive, économiquement absurde :

  • 0,40 $/mois pour un montage à administrer, surveiller et réclamer tous les mois ;
  • avec un facteur de qualité de 0,35 qui est déjà très généreux au regard de l'issue #4083 ;
  • et un plafond de 250 Go qui ne couvre pas le pire cas de 375 Go ;
  • sur un produit qui, de toute façon, ne peut pas héberger de service (partie 1).

Le premier test — celui du prix — est le seul que cette offre franchisse, et elle échoue aux deux autres.

Le cas Windscribe : positif à 15 $, négatif ailleurs

La ligne Windscribe affiche −4,75 $ dans le tableau, parce que le tableau raisonne à 15 $ de revenu brut avec un VPS loué. Elle devient +1,93 $ dans le seul cas de figure où l'offre a un sens : un node aux États-Unis (26,14 $ relevés en 2023) tournant sur une machine déjà possédée.

C'est le seul montage payant du rapport dont l'arithmétique soit positive, et il est écarté pour des raisons qui ne figurent pas dans le script : l'IP est partagée entre plusieurs clients — Windscribe refuse délibérément les IP dédiées — ce qui heurte la règle « un node par IP publique », et les conditions d'utilisation interdisent la revente de bande passante.

Ce que ce cas isolé démontre

Que le prix n'est pas le seul verrou. Même si une offre à 13 $ avec port entrant existait dans un pays bien payé, il resterait deux conditions qu'aucun fournisseur du marché ne satisfait simultanément : une IP dédiée et l'autorisation contractuelle d'y faire transiter du trafic de tiers.

Le seuil est très bas par rapport au marché

Segment Fourchette Seuil = 8,50 $
Proxys ISP 0,23 à 5 $ Sous le seuil, mais non hébergeables
VPN à IP résidentielle 14,41 à 39,99 $ Au-dessus
Proxys mobiles 25 à 99 $ Très au-dessus
Lignes réelles, pays bon marché 5 à 15 $ À cheval
Lignes réelles, Europe de l'Ouest 25 à 45 $ Au-dessus

Il n'existe aucune zone de recouvrement entre « sous 8,50 $ » et « hébergeable et classée résidentielle ».

Que faudrait-il pour renverser la conclusion ?

Le script permet de répondre. Il faudrait l'une de ces conditions :

Condition Valeur nécessaire Plausible ?
Revenu brut par node > 30 $/mois Seulement en France ou au Danemark, et sur données de 2023
Commission du réseau < 5 % Non, elle est de 20 % et fixée unilatéralement
Prix d'une vraie IP résidentielle louable < 5 $/mois Non — le marché des proxys la valorise plus haut
Facteur de qualité d'un node proxifié ≈ 1,0 Contredit par l'issue #4083

La seule ligne où le doute subsiste est la première : un node en France rapportait 37,96 $/mois en 2023. À ce niveau de revenu, une IP résidentielle dédiée française à 14,41 $ chez IPBurger dégagerait :

\[ 37{,}96 \times 0{,}60 \times 0{,}80 - 14{,}41 - 3{,}50 = 0{,}31\ \$ \]

Soit 31 centimes par mois. Même dans le pays le mieux payé du réseau, avec le chiffre le plus favorable disponible et une hypothèse de qualité généreuse, le montage est à l'équilibre exact.

Conclusion de la partie

Le résultat n'est pas serré. Il n'y a pas d'offre à trouver, pas de pays à optimiser, pas de remise à négocier : l'écart est structurel, et il tient à ce que la bande passante résidentielle se vend plus cher sur le marché des proxys que Mysterium ne la rachète.


Suite : Partie 4 — Analyse critique