Lendo um pregão a partir de barras de preços
Uma barra diária resume uma sessão inteira em cinco números: abertura, máxima, mínima, fechamento e volume. Com eles dá para reconstruir a história de um dia: quanto o preço se moveu durante a noite (a diferença entre o fechamento de ontem e a abertura de hoje), quão ampla foi a faixa da sessão e se o volume foi incomum. Cada um desses cálculos é uma linha sobre colunas inteiras de uma tabela.
import pandas as pd
bars = pd.read_csv("data/AAPL.csv", index_col="date", parse_dates=True)
prev_close = bars["close"].shift(1) # yesterday's close, lined up with today's row
gap = bars["open"] / prev_close - 1 # the overnight gapQuando você pergunta se o volume de hoje é incomum, compare-o apenas com as sessões anteriores a hoje. rolling(20).mean() sozinho inclui hoje, então o dia é em parte comparado consigo mesmo; chamar shift(1) antes recua a janela em um dia. Usar informações do dia que se está julgando é look-ahead, a forma mais comum de um backtest enganar você.
Mostrando a história
O auxiliar qc_chart transforma barras em um gráfico interativo. Passe listas de séries (velas, linhas, histogramas) e marcadores opcionais; o gráfico aparece na aba Gráficos, e os testes leem os mesmos dados que você passou, não a imagem.
import qc_chart
qc_chart.show(
[qc_chart.candles(recent, name="Price"), qc_chart.line(average, name="20-day average")],
markers=qc_chart.markers({"2026-05-12": "+4.1%"}),
)Lab: o que é avaliado
- Características diárias25 pts
- Os maiores saltos25 pts
- Picos de volume sem look-ahead25 pts
- Trace a história25 pts