σμ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 AcademyRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
Roteiros
AO
+1,2 mil alunos
Entrar
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Roteiro de Python›Módulo 1 · Fundamentos de Python para quants›Tópico 1.23·~40 minIniciante

Fundamentos do Git

Posição no roteiroMódulo 1 de 11 · Tópico 23 de 33
1.23 Fundamentos do Git
—Nota do lab— / 100XP total—Sequência—

Um histórico ao qual você pode voltar

O Git registra o histórico de um projeto como uma série de commits: instantâneos de todos os arquivos rastreados, cada um com autor, hora e mensagem. Com ele você vê o que mudou e por quê, testa uma ideia sem medo e volta a uma versão que funcionava. Uma pasta sob controle do Git é um repositório. O trabalho quantitativo depende muito disso: um resultado só é confiável se você puder dizer exatamente qual versão do código o produziu.

# 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

Os três lugares onde uma mudança vive

Uma mudança passa por três áreas. Você edita arquivos na árvore de trabalho. git add copia as mudanças escolhidas para a área de preparação (o próximo instantâneo, em preparo). git commit registra o instantâneo preparado no histórico do repositório. Isso permite fazer commit só das mudanças relacionadas, mesmo que você tenha editado muitos arquivos. git status mostra cada arquivo na sua área: modificado, preparado ou não rastreado (novo e ainda desconhecido do 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)

Branches

Um branch é um nome móvel para uma linha de commits. Crie um para cada ideia ou correção (git switch -c fee-model), faça commits à vontade e, quando funcionar, traga-o para a linha principal com git merge (em geral a partir do branch main). Nomes de branch podem conter letras, dígitos, -, _, / e ., mas não espaços nem nenhum de ~ ^ : ? * [ \, e não podem começar ou terminar com / nem terminar com .. O Git avisa de conflitos quando dois branches mudaram as mesmas linhas, e você os resolve à mão.

# 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

O que deixar de fora e como desfazer

Um arquivo .gitignore lista os padrões que o Git não deve rastrear: .venv/ (uma pasta, escrita com barra final), *.log (qualquer arquivo que combine com um curinga), secrets.env. Deixe de fora ambientes virtuais, caches, arquivos de dados grandes e, acima de tudo, segredos como chaves de API: tudo o que é commitado permanece no histórico mesmo que você apague depois. Para desfazer, git restore arquivo descarta edições não commitadas de um arquivo, e git revert <commit> adiciona um novo commit que cancela um antigo, o que é seguro em branches compartilhados. git push e git pull trocam commits com uma cópia remota, como uma no 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
Commits pequenos que explicam o porquêUma mudança lógica por commit, com uma mensagem que diga o quê e por quê («Limitar o tamanho da ordem a 5% do volume», não «ajustes»). Commits pequenos são fáceis de revisar e reverter e deixam git log --oneline legível. Se uma chave ou senha for parar num commit, trate-a como vazada: revogue-a e depois remova-a do histórico.
  • git init, git status, git add, git commit -m "...", git log --oneline.
  • Um branch por ideia: git switch -c nome e depois git merge.
  • Use .gitignore para .venv/, caches, dados e segredos; desfaça com restore ou revert.

A seguir: notebooks Jupyter, para explorar dados de forma interativa e mantê-los organizados sob o Git.

Lab: o que é avaliado

  • Classificar os arquivos de um relatório git status com parse_status25 pts
  • Ler uma listagem de git log --oneline com parse_log25 pts
  • Verificar um nome de branch pelas regras do Git com is_valid_branch_name25 pts
  • Aplicar um .gitignore a uma lista de arquivos com not_ignored25 pts
Explorador · lab-23-1
▾ lab-23-1
…
bash · no navegador
learner@quantcraft:~/lab-23-1$
Python ainda não carregadoPythonLn 1, Col 1Spaces: 4UTF-8

Redefinir este tópico?

Tudo em lab-23-1 volta aos arquivos iniciais e o terminal é limpo. Sua solução atual será perdida — isso não pode ser desfeito.

Será redefinido
  • main.py → código inicial
  • Histórico do terminal e saída dos testes
  • Alterações não enviadas
Será mantido
  • Melhor nota do lab
  • Seu XP e sua sequência
  • Progresso da aula e anotações

Entre para executar o seu código.

Todas as aulas são gratuitas para ler. Crie uma conta ou entre para executar código, rodar os testes e enviar este lab.

  • IDE no navegador com terminal bash — nada para instalar
  • Correção instantânea, XP e o seu lugar no roteiro
Criar uma contaEntrar
OU
Continuar com o GitHub