σμ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.4·~30 minIniciante

Booleanos e comparações

Posição no roteiroMódulo 1 de 11 · Tópico 4 de 33
1.4 Booleanos e comparações
—Nota do lab— / 100XP total—Sequência—

Verdadeiro e falso

Um booleano (bool) tem exatamente dois valores: True e False, com inicial maiúscula. Toda regra de trading termina em um: «o mercado está cruzado?», «podemos pagar esta ordem?». Comparar dois valores produz um booleano, então ask > bid ainda não é uma decisão, é um valor que você pode guardar, imprimir e combinar.

bid, ask = 184.25, 184.5
print(ask > bid)        # True
print(type(ask > bid))  # <class 'bool'>

Operadores de comparação

O Python compara com == (igual), != (diferente), <, <=, > e >=. Um único = é atribuição, não comparação: price = 5 guarda um valor, enquanto price == 5 faz uma pergunta. As comparações podem ser encadeadas: low <= price <= high lê-se como na matemática e verifica os dois lados de uma vez.

# Comparison operators give True or False
price = 184.4
print(price == 184.4)         # True
print(price != 184.25)        # True
print(184.25 <= price < 185)  # True (chained)

Combinar condições: and, or, not

a and b é True apenas quando os dois são. a or b é True quando pelo menos um é. not a inverte o valor. Juntos expressam regras reais, como «o mercado está aberto, o ativo não está suspenso e temos o dinheiro».

# Combine conditions with and, or, not
market_open, halted, cash = True, False, 500.0
can_buy = market_open and not halted and cash >= 184.5
print(can_buy)               # True
print(halted or cash < 100)  # False

and e or fazem curto-circuito: o Python para assim que a resposta é conhecida e não avalia o resto. É útil como proteção: coloque a verificação segura primeiro para que a arriscada só execute quando puder.

# Short-circuit: the division never runs when quantity is 0
quantity = 0
print(quantity > 0 and 100 / quantity > 1)  # False

Valor de verdade

Qualquer valor pode ser usado como condição. 0, 0.0, o texto vazio "" e None contam como falso; quase todo o resto conta como verdadeiro. bool(value) mostra como o Python lê um valor. Cuidado: quantity and price > 0 pode devolver 0 em vez de False, então escreva a comparação completa quando precisar de um bool de verdade.

# Zero, empty text and None count as False
print(bool(0), bool(0.0), bool(""), bool(None))  # False False False False
print(bool(200), bool("AAPL"))                    # True True
Devolva a própria condiçãoUma comparação já é True ou False. Escreva return quantity > 0, e não um if que devolve True e outro ramo que devolve False: é mais curto e não pode se contradizer.

Comparar floats, e None

== entre floats é arriscado por causa do erro de arredondamento (veja inteiros e floats): use math.isclose para «igual o bastante». == compara valores; a palavra is pergunta se dois nomes apontam exatamente para o mesmo objeto, e você só precisa dela para uma coisa: x is None, para testar «nenhum valor».

# Floats need a tolerance; None is tested with "is"
import math

print(0.1 + 0.2 == 0.3)              # False
print(math.isclose(0.1 + 0.2, 0.3))  # True
fill_price = None
print(fill_price is None)            # True

A seguir: condicionais, em que um booleano decide quais linhas de código executam: if, elif e else.

Lab: o que é avaliado

  • Detectar um mercado cruzado com is_crossed25 pts
  • Verificar se um preço está dentro de uma faixa com within_band25 pts
  • Combinar as condições de trading com can_trade25 pts
  • Validar uma ordem com is_valid_order25 pts
Explorador · lab-4-1
▾ lab-4-1
…
bash · no navegador
learner@quantcraft:~/lab-4-1$
Python ainda não carregadoPythonLn 1, Col 1Spaces: 4UTF-8

Redefinir este tópico?

Tudo em lab-4-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