σμ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.23·~40 分初級

Gitの基本

ロードマップ上の位置モジュール 1/11 · トピック 23/33
1.23 Gitの基本
—ラボスコア— / 100合計XP—連続日数—

戻ることのできる履歴

Git は、プロジェクトの履歴をコミットの連なりとして記録します。コミットは追跡中の全ファイルのスナップショットで、作者・時刻・メッセージが付きます。何がなぜ変わったかを確認でき、安心して新しい案を試し、動いていた版に戻れます。Git の管理下にあるフォルダーがリポジトリです。クオンツの仕事ではとりわけ重要で、どのバージョンのコードが結果を出したかを正確に言えて初めて、その結果を信頼できます。

# Start tracking a project (once)
git init

# See what changed, stage it, record it
git status
git add main.py README.md
git commit -m "Add the first backtest loop"

# Look back
git log --oneline
git diff                      # changes not yet staged

変更が存在する3つの場所

変更は3つの領域を通ります。ファイルは作業ツリーで編集します。git add は選んだ変更をステージングエリア(準備中の次のスナップショット)にコピーし、git commit はステージ済みのスナップショットをリポジトリの履歴に記録します。多くのファイルを編集していても、関連する変更だけをまとめてコミットできます。git status は各ファイルがどこにあるかを示します:変更あり、ステージ済み、未追跡(新しく、まだ Git に知られていない)。

# git status --porcelain prints two status letters, a space, then the path
status = """ M main.py
A  notes.md
?? scratch.txt
D  old.py"""

for line in status.splitlines():
    code, path = line[:2], line[3:]
    print(repr(code), path)
# ' M' main.py     (modified, not staged)
# 'A ' notes.md    (new, staged)
# '??' scratch.txt (untracked)
# 'D ' old.py      (deleted, staged)

ブランチ

ブランチは、コミットの流れにつける動かせる名前です。アイデアや修正ごとに作り(git switch -c fee-model)、自由にコミットし、うまくいったら git merge で本流に取り込みます(通常は main ブランチから)。ブランチ名には英数字、-、_、/、. を使えますが、空白や ~ ^ : ? * [ \ は使えず、先頭や末尾を / にしたり、末尾を . にしたりもできません。2つのブランチが同じ行を変更すると Git が競合を知らせるので、手作業で解決します。

# Try an idea on its own branch, then bring it back
git switch -c fee-model
git commit -am "Use tiered fees"
git switch main
git merge fee-model

# List branches (the current one has a star)
git branch

含めないものと、元に戻す方法

.gitignore ファイルには、Git に追跡させたくないパターンを書きます:.venv/(末尾にスラッシュを付けたフォルダー)、*.log(ワイルドカードに一致する任意のファイル)、secrets.env など。仮想環境、キャッシュ、大きなデータファイル、そして何より API キーなどの秘密情報は含めないでください。一度コミットしたものは、後で削除しても履歴に残ります。元に戻すには、git restore file でコミット前の編集を破棄し、git revert <commit> で古いコミットを打ち消す新しいコミットを追加します(共有ブランチでも安全です)。git push と git pull は、GitHub などのリモートのコピーとコミットをやり取りします。

# .gitignore
.venv/
__pycache__/
*.log
secrets.env

# Undo safely
git restore main.py            # drop uncommitted edits to one file
git revert 3f2a9c1             # new commit that cancels an old one

# Share
git push origin main
git pull
小さくコミットし、理由を書く1つのコミットには1つの論理的な変更を入れ、何を・なぜ変えたかを書いたメッセージを付けます(「fix stuff」ではなく「注文サイズを出来高の5%に制限」)。小さなコミットはレビューも取り消しも簡単で、git log --oneline が読みやすくなります。キーやパスワードをコミットしてしまったら、漏えいしたものとして扱い、無効化してから履歴から取り除いてください。
  • git init、git status、git add、git commit -m "..."、git log --oneline
  • アイデアごとにブランチ:git switch -c name のあと git merge
  • .venv/・キャッシュ・データ・秘密情報は .gitignore に書く。元に戻すには restore か revert

次は Jupyter ノートブックです。データを対話的に探索する方法と、Git の下で整理して保つ方法を学びます。

ラボ:採点される内容

  • parse_status で git status の出力をファイル種別に分類する25点
  • parse_log で git log --oneline の出力を読み取る25点
  • is_valid_branch_name でブランチ名が Git の規則に合うか調べる25点
  • not_ignored で .gitignore をファイル一覧に適用する25点
エクスプローラー · lab-23-1
▾ lab-23-1
…
bash · ブラウザ内
learner@quantcraft:~/lab-23-1$
Pythonは未読み込みPythonLn 1, Col 1Spaces: 4UTF-8

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

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

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

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

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

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