σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Parcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Parcours Python›Module 1 · Les bases de Python pour les quants›Sujet 1.22·~35 minDébutant

Environnements virtuels et pip

Position dans le parcoursModule 1 sur 11 · Sujet 22 sur 33
1.22 Environnements virtuels et pip
—Score du lab— / 100XP total—Série—

Un projet, un ensemble de bibliothèques

Les projets ont besoin de bibliothèques tierces comme numpy ou pandas, et des projets différents en demandent des versions différentes. Tout installer dans un seul Python partagé provoque des conflits de versions : mettre à jour pour un projet en casse un autre. Un environnement virtuel est un dossier privé contenant sa propre copie de l'interpréteur Python et ses propres bibliothèques installées, de sorte que chaque projet dispose exactement de ce qu'il lui faut. pip est l'outil qui télécharge et installe des bibliothèques depuis le Python Package Index (PyPI) dans l'environnement actif.

# Create an environment in the project folder (once)
python -m venv .venv

# Activate it (every new terminal)
source .venv/bin/activate        # macOS and Linux
.venv\Scripts\activate           # Windows

# The prompt now shows (.venv); python and pip belong to it
python -c "import sys; print(sys.prefix)"

# Leave it
deactivate

Installer avec pip

Avec l'environnement actif, pip install numpy ajoute une bibliothèque, pip install numpy==1.26.4 fixe une version exacte, pip install -U numpy la met à jour et pip uninstall numpy la retire. pip list montre ce qui est installé. Appelez-le en cas de doute comme python -m pip, ce qui garantit qu'il appartient au même Python que celui que vous lancerez. N'utilisez jamais sudo pip et n'installez pas dans le Python du système.

# Install, pin and inspect (environment active)
python -m pip install numpy pandas
python -m pip install "scipy>=1.11,<2"
python -m pip list

# Show one library
python -m pip show numpy

requirements.txt et règles de version

Un fichier de dépendances liste les bibliothèques dont un projet a besoin, une par ligne, pour que chacun puisse reconstruire l'environnement avec pip install -r requirements.txt ; pip freeze > requirements.txt écrit les versions exactes installées. Chaque ligne est un nom plus un spécificateur de version facultatif : ==1.26.4 (exactement), >=2.0 (au moins), <3 (en dessous), !=2.1 (tout sauf) et ~=1.4.2 (compatible : au moins 1.4.2 mais toujours 1.4.x). Les lignes commençant par # sont des commentaires. Les versions se comparent comme des nombres, partie par partie : 1.10 est donc plus récente que 1.9, pas plus ancienne.

# A version is a tuple of numbers, not a string
print("1.10" > "1.9")               # False  (text order is wrong!)

def version_tuple(text):
    return tuple(int(part) for part in text.split("."))

print(version_tuple("1.10") > version_tuple("1.9"))   # True
print(version_tuple("2.0.1"))                         # (2, 0, 1)

# Reading one requirements line
line = "numpy>=1.26  # for arrays"
name_and_spec = line.split("#", 1)[0].strip()
print(name_and_spec)                                  # numpy>=1.26

Habitudes qui gardent les projets reproductibles

Créez un environnement par projet et gardez-le dans le projet sous le nom .venv, mais ne le versionnez pas : il est volumineux et propre à votre machine. Versionnez plutôt requirements.txt (ou pyproject.toml). Écrivez des règles souples (>=) pour ce dont vous avez besoin et fixez des versions exactes (==) quand vous devez reproduire des résultats. Si quelque chose se comporte mal, vous pouvez toujours supprimer .venv et le reconstruire en une minute à partir du fichier de dépendances.

# requirements.txt
numpy==1.26.4          # pinned: reproduce results exactly
pandas>=2.0            # at least 2.0
scipy~=1.11.0          # 1.11.x, but not 1.12
# plotting waits until we need it

# Rebuild the environment anywhere
python -m venv .venv
python -m pip install -r requirements.txt

# Record what is installed right now
python -m pip freeze > requirements.txt
Activez d'abord le bon environnementL'erreur pip la plus courante est d'installer dans le mauvais Python : l'installation réussit mais import échoue quand vous lancez votre code. Vérifiez que l'invite affiche (.venv) et que python -c "import sys; print(sys.prefix)" pointe dans votre projet avant d'installer quoi que ce soit.
  • python -m venv .venv, puis activez-le : un environnement par projet.
  • python -m pip install name==version, pip install -r requirements.txt, pip freeze.
  • Spécificateurs : ==, >=, <, !=, ~= ; comparez les versions comme des tuples de nombres ; versionnez les dépendances, pas .venv.

À suivre : les bases de Git, pour suivre chaque modification de votre code et revenir en arrière quand quelque chose casse.

Lab : ce qui est noté

  • Lire une ligne de dépendance avec parse_requirement25 pts
  • Lire un fichier de dépendances entier avec parse_requirements25 pts
  • Rendre les versions comparables avec version_tuple25 pts
  • Vérifier une version par rapport à une règle avec satisfies25 pts
Explorateur · lab-22-1
▾ lab-22-1
…
bash · dans le navigateur
learner@quantcraft:~/lab-22-1$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

Tout le contenu de lab-22-1 revient aux fichiers de départ et le terminal est vidé. Votre solution actuelle sera perdue : cette action est irréversible.

Sera réinitialisé
  • main.py → code de départ
  • Historique du terminal et sortie des tests
  • Modifications non soumises
Sera conservé
  • Meilleur score du lab
  • Votre XP et votre série
  • Progression du cours et notes

Connectez-vous pour exécuter votre code.

Tous les cours sont gratuits à lire. Créez un compte ou connectez-vous pour exécuter du code, lancer les tests et soumettre ce lab.

  • IDE dans le navigateur avec terminal bash — rien à installer
  • Correction instantanée, XP et votre place dans le parcours
Créer un compteSe connecter
OU
Continuer avec GitHub