価格バーから取引日を読み解く
日足バーは1営業日を始値・高値・安値・終値・出来高の5つの数字で要約します。そこから1日の物語を組み立てられます。夜間にどれだけ動いたか(前日の終値と当日の始値の差)、その日の値幅はどれほどか、出来高は普段と違ったか。これらはどれも、表の列全体に対する1行の計算です。
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 gap今日の出来高が普段と違うかを調べるときは、今日より前の営業日とだけ比較します。rolling(20).mean() だけでは今日が含まれ、その日自身と一部比べることになります。先に shift(1) を呼ぶと窓が1日後ろにずれます。判定している日の情報を使うことはルックアヘッドで、バックテストが人をだます最も一般的な原因です。
物語を表示する
qc_chartヘルパーはバーをインタラクティブなチャートに変換します。系列のリスト(ローソク足、線、ヒストグラム)と任意のマーカーを渡すと、チャートがチャートタブに表示されます。テストが読むのは描画された画像ではなく、あなたが渡したデータです。
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%"}),
)このデータが隠しているもの価格は分割と配当で調整済みのため、調整前の終値はなく、分割がギャップとして現れることもありません。ファイルには現在も存在する企業しか含まれず、上場廃止企業は欠けています。日足バーは寄り付きや引けのオークションを含め、セッション内で起きたことを隠します。大きなギャップは結論ではなく、調べるべき物語です(決算、ニュースなど)。
ラボ:採点される内容
- 日次の特徴量25点
- 最大のギャップ25点
- ルックアヘッドなしの出来高スパイク25点
- 物語をチャートにする25点