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

Strings e f-strings

Posição no roteiroMódulo 1 de 11 · Tópico 3 de 33
1.3 Strings e f-strings
—Nota do lab— / 100XP total—Sequência—

Texto é uma string

Uma string (str) é texto. Escreva-a entre aspas simples ou duplas: as duas significam o mesmo, então escolha um estilo e mantenha-o. Uma barra invertida inicia uma sequência de escape, como \n para uma nova linha. len() conta os caracteres. Strings são imutáveis: você nunca altera uma no lugar, você cria uma nova.

symbol = "AAPL"
note = 'bid and ask'
print(symbol, len(symbol))  # AAPL 4
print(note)                 # bid and ask

Indexação e fatiamento

Cada caractere tem uma posição, contada a partir de 0. text[0] é o primeiro caractere e text[-1] o último. Uma fatia text[start:stop] pega os caracteres de start até stop, sem incluí-lo. Deixe um lado vazio para ir até aquela ponta.

# Indexing starts at 0; a slice stops before its end index
ticker = "AAPL.US"
print(ticker[0], ticker[-1])   # A S
print(ticker[:4], ticker[5:])  # AAPL US

Métodos para limpar e dividir texto

Métodos são funções ligadas a um valor e chamadas com um ponto. Eles devolvem uma string nova e deixam a original intacta. strip() remove espaços e quebras de linha ao redor do texto, upper() e lower() mudam a caixa, replace(old, new) troca texto, e split(",") corta uma linha em cada vírgula numa lista de pedaços. Feeds de dados estão cheios de linhas assim.

# Clean up a raw line from a data feed
raw = "  aapl,184.25,200 \n"
parts = raw.strip().split(",")
print(parts)             # ['aapl', '184.25', '200']
print(parts[0].upper())  # AAPL
print(float(parts[1]))   # 184.25
# join is the opposite of split; in tests for a piece of text
print("-".join(["AAPL", "MSFT"]))  # AAPL-MSFT
print("AAPL" in "AAPL,MSFT")       # True

f-strings colocam valores no texto

Coloque um f antes das aspas de abertura e escreva qualquer expressão entre { e }: o Python a avalia e insere o resultado como texto. Isso substitui colar pedaços com + e converter números à mão. Qualquer expressão válida funciona dentro das chaves, até uma conta.

# f-strings put values straight into text
symbol, bid, ask = "AAPL", 184.25, 184.5
print(f"{symbol} {bid} x {ask}")       # AAPL 184.25 x 184.5
print(f"{symbol} spread {ask - bid}")  # AAPL spread 0.25

Especificações de formato

Depois dos dois-pontos dentro das chaves, uma especificação de formato controla a aparência do valor. .2f mostra duas casas decimais, , adiciona separadores de milhares, + mostra sempre o sinal, >8 alinha à direita numa largura de 8 e .1% mostra uma fração como porcentagem. Elas se combinam: +,.2f é um valor com sinal, separadores e duas casas decimais.

# After the colon, a format spec controls the look
price, pnl, quantity = 184.5, 1234.5, 200
print(f"{price:.2f}")       # 184.50
print(f"{pnl:+,.2f}")       # +1,234.50
print(f"{quantity:>8d}|")   # "     200|"
print(f"{0.0123:.1%}")      # 1.2%
Formate apenas para exibirUm valor formatado é texto, não mais um número. Continue calculando com os números (veja inteiros e floats) e formate apenas na hora de exibir ou guardar texto.

A seguir: booleanos e comparações, os valores True e False com os quais toda decisão de uma regra de trading é construída.

Lab: o que é avaliado

  • Escrever uma cotação como texto com quote_line25 pts
  • Mostrar lucro e prejuízo com sinal usando signed_pnl25 pts
  • Limpar um código de ativo com normalize_symbol25 pts
  • Ler uma linha de execução de um feed com parse_fill25 pts
Explorador · lab-3-1
▾ lab-3-1
…
bash · no navegador
learner@quantcraft:~/lab-3-1$
Python ainda não carregadoPythonLn 1, Col 1Spaces: 4UTF-8

Redefinir este tópico?

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