σμ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 Academyロードマップ
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップ
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Python ロードマップ›モジュール 1 · クオンツのためのPython基礎›トピック 1.22·~35 分初級

仮想環境とpip

ロードマップ上の位置モジュール 1/11 · トピック 22/33
1.22 仮想環境とpip
—ラボスコア— / 100合計XP—連続日数—

プロジェクトごとにライブラリを揃える

プロジェクトでは numpy や pandas などのサードパーティライブラリが必要で、プロジェクトごとに必要なバージョンも違います。1つの共有 Python にすべて入れるとバージョンが衝突し、あるプロジェクトのためのアップグレードが別のプロジェクトを壊します。仮想環境は、Python インタープリターのコピーとインストール済みライブラリを専用に持つプライベートなフォルダーで、各プロジェクトが必要なものだけを持てます。pip は、Python Package Index(PyPI)からライブラリをダウンロードし、有効な環境にインストールするツールです。

# 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

pip でインストールする

環境が有効なとき、pip install numpy でライブラリを追加し、pip install numpy==1.26.4 で正確なバージョンを指定し、pip install -U numpy でアップグレード、pip uninstall numpy で削除します。pip list でインストール済みのものを確認できます。迷ったら python -m pip として呼び出すと、実行する Python と同じ Python に属することが保証されます。sudo pip は決して使わず、システムの Python にもインストールしないでください。

# 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 とバージョン指定

requirements ファイルは、プロジェクトに必要なライブラリを1行に1つずつ並べたもので、誰でも pip install -r requirements.txt で環境を再現できます。pip freeze > requirements.txt はインストール済みの正確なバージョンを書き出します。各行は名前と、省略可能なバージョン指定子でできています:==1.26.4(ぴったり)、>=2.0(以上)、<3(未満)、!=2.1(それ以外)、~=1.4.2(互換:1.4.2 以上で 1.4.x のまま)。# で始まる行はコメントです。バージョンは部分ごとに数値として比較されるので、1.10 は 1.9 より古いのではなく新しいです。

# 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

プロジェクトを再現可能に保つ習慣

環境はプロジェクトごとに1つ作り、.venv としてプロジェクト内に置きますが、サイズが大きくマシン固有なのでバージョン管理には含めません。代わりに requirements.txt(または pyproject.toml)をコミットします。必要なものには緩い指定(>=)を書き、結果を再現する必要があるときは正確なバージョン(==)を固定します。調子が悪ければ、.venv を削除して requirements ファイルから1分で作り直せます。

# 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
まず正しい環境を有効にするpip で最もよくある間違いは、間違った Python にインストールすることです。インストールは成功しても、コードを実行すると import が失敗します。何かをインストールする前に、プロンプトに (.venv) が表示され、python -c "import sys; print(sys.prefix)" がプロジェクト内を指していることを確認しましょう。
  • python -m venv .venv を作って有効にする。プロジェクトごとに1つの環境
  • python -m pip install name==version、pip install -r requirements.txt、pip freeze
  • 指定子は ==、>=、<、!=、~=。バージョンは数値のタプルで比較し、.venv ではなく requirements をコミットする

次は Git の基本です。コードへのすべての変更を記録し、問題が起きたら元に戻せるようにします。

ラボ:採点される内容

  • parse_requirement で requirements の1行を読み取る25点
  • parse_requirements で requirements ファイル全体を読み取る25点
  • version_tuple でバージョンを比較できる形にする25点
  • satisfies でバージョンが条件を満たすか調べる25点
エクスプローラー · lab-22-1
▾ lab-22-1
…
bash · ブラウザ内
learner@quantcraft:~/lab-22-1$
Pythonは未読み込みPythonLn 1, Col 1Spaces: 4UTF-8

このトピックをリセットしますか?

lab-22-1 の内容はすべてスターターファイルに戻り、ターミナルも消去されます。現在の解答は失われ、元に戻せません。

リセットされるもの
  • main.py → スターターコード
  • ターミナル履歴とテスト出力
  • 未提出の変更
保持されるもの
  • ラボの最高スコア
  • XPと連続日数
  • 講義の進捗とメモ

コードを実行するにはログインしてください。

レクチャーはすべて無料で読めます。コードの実行、テスト、ラボの提出にはアカウントの作成かログインが必要です。

  • ブラウザ内IDEとbashターミナル。インストール不要
  • 即時採点、XP、ロードマップでの現在地
アカウントを作成ログイン
または
GitHubで続ける