コンテンツにスキップ

ピボットポイント(Pivot Points)

ピボットポイントは、前日の高値・安値・終値(および始値や変形)から算出する水平の支持抵抗群です。Classic / Fibonacci / Camarilla / Woodie / DeMark、Mid-Pivots、Central Pivot Range(CPR)、Daily/Weekly/Monthly の階層まで、いずれも「前日データを固定的に加工した水準」という共通思想を持ちます。当日のトレーダーが同じ計算式で同じ水準を意識するため、自己成就的に機能する側面があります。

使いどころは、当日の値幅上限・下限の目安、指標発表時に反応が止まりやすい水準の把握、レンジの逆張り水準、ブレイクアウトの目標水準です。FX スポットは 24 時間市場のため、「日」の定義(NY Close 基準が標準)が水準へ直接影響します。

起源は 1930-40 年代のシカゴ商品取引所の立会人(floor trader)が翌日の取引前に手計算していた水平線群です。基本形の Classic は Neal T. Weintraub Trading with Chart Patterns(1990 年代)が広く紹介し、Larry Williams が Woodie 系、Tom DeMark が条件分岐型、Nick Scott が 1989 年に Camarilla、Frank Ochoa が 2010 年に CPR を発表しました。

起源と系譜

年代出来事
1930s-40sシカゴ商品取引所(CBOT)等の floor trader が手計算で使用開始
1957Richard Donchian の Trend-Following 論文で類似の水平線概念
1978J. Welles Wilder Jr. がテクニカル書籍で central price として言及
1980sLarry Williams が Woodie 系を体系化(Classic に始値を加味)
1989Nick Scott が Camarilla Equation 発表(前日終値基準)
1990sTom DeMark が The New Science of Technical Analysis(1994)で条件分岐型(DeMark Pivots)
1990s-2000sNeal T. Weintraub, John L. Person らが Classic + Fibonacci を一般化
2010Frank Ochoa Secrets of a Pivot Boss で CPR(Central Pivot Range)を発表

前提

計算に使う変数

  • 前日高値(Previous High)HpH_p
  • 前日安値(Previous Low)LpL_p
  • 前日終値(Previous Close)CpC_p
  • 前日始値(Previous Open)OpO_p(Woodie / DeMark で使用)
  • 当日始値(Today’s Open)OtO_t(Woodie の一部変形で使用)

記号の慣例

  • P:Pivot(中心線)
  • R1, R2, R3, R4:Resistance(上方水準、番号が大きいほど遠い)
  • S1, S2, S3, S4:Support(下方水準、番号が大きいほど遠い)
  • M0-M5:Mid-Pivot(中間水準)
  • BC / TC:Bottom Central / Top Central(CPR の帯の下端・上端)

Classic(Standard / Traditional)Pivot Points

定義

最も普及した形式です。前日 H/L/C から中心線と 3 段の R/S を算出します。

P=Hp+Lp+Cp3P = \frac{H_p + L_p + C_p}{3}

R1=2PLp,S1=2PHpR_1 = 2P - L_p, \quad S_1 = 2P - H_p

R2=P+(HpLp),S2=P(HpLp)R_2 = P + (H_p - L_p), \quad S_2 = P - (H_p - L_p)

R3=Hp+2(PLp),S3=Lp2(HpP)R_3 = H_p + 2(P - L_p), \quad S_3 = L_p - 2(H_p - P)

ピボットポイントの模式図。PP・R1・R2・S1・S2 の水平線群と価格。

模式図。前日データから算出した水平線群を、当日の目安に使う。

幾何学的意味

  • PP は前日 3 値(H/L/C)の平均。当日の均衡点の目安になる
  • R1=2PLpR_1 = 2P - L_p は「PP を中心に LpL_p を対称へ写した点」で、前日安値を平均で反射している
  • R2P=HpLpR_2 - P = H_p - L_p は前日のフルレンジぶんを PP より上へ伸ばした点
  • R3=Hp+2(PLp)R_3 = H_p + 2(P - L_p) は前日高値からさらに 2×(PLp)2 \times (P - L_p) 伸ばす形

Mid-Pivots(中間水準)

R1〜R2、S1〜S2 などの中間に M 水準を挟む流派があります(John L. Person)。

M5=R2+R32,M4=R1+R22M_5 = \frac{R_2 + R_3}{2}, \quad M_4 = \frac{R_1 + R_2}{2}

M3=P+R12,M2=P+S12M_3 = \frac{P + R_1}{2}, \quad M_2 = \frac{P + S_1}{2}

M1=S1+S22,M0=S2+S32M_1 = \frac{S_1 + S_2}{2}, \quad M_0 = \frac{S_2 + S_3}{2}

Mid-Pivots は反発の初期水準として意識されます。R1 に直接到達する前に M3 で失速するケースが多いとされます。

Fibonacci Pivot Points

定義

前日レンジ Rp=HpLpR_p = H_p - L_p にフィボナッチ比率を掛けて PP に加減します。

P=Hp+Lp+Cp3P = \frac{H_p + L_p + C_p}{3}

R1=P+0.382Rp,S1=P0.382RpR_1 = P + 0.382 \cdot R_p, \quad S_1 = P - 0.382 \cdot R_p

R2=P+0.618Rp,S2=P0.618RpR_2 = P + 0.618 \cdot R_p, \quad S_2 = P - 0.618 \cdot R_p

R3=P+1.000Rp,S3=P1.000RpR_3 = P + 1.000 \cdot R_p, \quad S_3 = P - 1.000 \cdot R_p

拡張版(R4/S4 を持つ流派)は次のとおりです。

R4=P+1.618Rp,S4=P1.618RpR_4 = P + 1.618 \cdot R_p, \quad S_4 = P - 1.618 \cdot R_p

Classic との違い

  • Classic の R1/S1 は前日 HpH_p/LpL_pPP による対称反射
  • Fibonacci の R1/S1 は前日レンジの 38.2%
  • レンジが狭い日は Fibonacci が狭く、広い日は Fibonacci が広くなる。Classic はレンジ形状に対して同じスケールを保つ

Camarilla Pivot Points

定義

Nick Scott(1989)が発表しました。前日終値 CpC_p を基準に、前日レンジ RpR_p を除算係数でスケーリングします。

R1=Cp+Rp1.112,S1=CpRp1.112R_1 = C_p + R_p \cdot \frac{1.1}{12}, \quad S_1 = C_p - R_p \cdot \frac{1.1}{12}

R2=Cp+Rp1.16,S2=CpRp1.16R_2 = C_p + R_p \cdot \frac{1.1}{6}, \quad S_2 = C_p - R_p \cdot \frac{1.1}{6}

R3=Cp+Rp1.14,S3=CpRp1.14R_3 = C_p + R_p \cdot \frac{1.1}{4}, \quad S_3 = C_p - R_p \cdot \frac{1.1}{4}

R4=Cp+Rp1.12,S4=CpRp1.12R_4 = C_p + R_p \cdot \frac{1.1}{2}, \quad S_4 = C_p - R_p \cdot \frac{1.1}{2}

実務での分類

Camarilla は水準ごとに明確な役割分担があります。

水準役割戦術
R1/S1, R2/S2当日の普通の値動き内通常はシグナルとして使わない
R3/S3反転狙い水準逆張りエントリー、損切りは R4/S4
R4/S4ブレイクアウト水準順張りエントリー、次の目標は R5/S5(Rp×1.1R_p \times 1.1

Camarilla は「R3 / S3 で逆張り、R4 / S4 でブレイク」という双方向戦術がセットで語られます。

係数 1.1 の由来

  • 1.1 という係数は Scott の経験則とされ、統計的導出は公開されていない
  • 除算係数(12, 6, 4, 2)は等比数列的な半減。R1 から R4 で幅が 6 倍になる
  • 一部の派生流派は 1.1 を 1.0 や 1.5 に変えることもあるが、原典は 1.1

Woodie’s Pivot Points

定義

Ken Wood(通称 Woodie)が体系化しました。前日終値 CpC_p の代わりに当日始値 OtO_t を使う変形です。

P=Hp+Lp+2Ot4P = \frac{H_p + L_p + 2 O_t}{4}

R1=2PLp,S1=2PHpR_1 = 2P - L_p, \quad S_1 = 2P - H_p

R2=P+(HpLp),S2=P(HpLp)R_2 = P + (H_p - L_p), \quad S_2 = P - (H_p - L_p)

R3=Hp+2(PLp),S3=Lp2(HpP)R_3 = H_p + 2(P - L_p), \quad S_3 = L_p - 2(H_p - P)

Classic との違い

  • Pivot PP の計算で、前日終値 CpC_p ではなく当日始値 OtO_t を 2 倍重みで使用する
  • 当日の始値方向を反映する分、当日の実際の値動きに近い水準になる
  • ただし当日始値が確定するまで PP が定まらない。始値後に一度算出する必要がある

FX スポットは 24 時間連続で、当日始値の定義が業者で異なります。Woodie を FX に適用する場合、NY Close 5pm を境に始まる当日の始値を採用するのが一般的です。

DeMark Pivot Points

定義

Tom DeMark The New Science of Technical Analysis(1994)による形式です。前日の陰陽(OpO_pCpC_p の関係)で計算式が分岐する条件分岐型です。

Step 1:X を計算

  • 前日 陽線(Cp>OpC_p > O_p):X=2Hp+Lp+CpX = 2 H_p + L_p + C_p
  • 前日 陰線(Cp<OpC_p < O_p):X=Hp+2Lp+CpX = H_p + 2 L_p + C_p
  • 前日 同値(Cp=OpC_p = O_p):X=Hp+Lp+2CpX = H_p + L_p + 2 C_p

Step 2:Pivot, R1, S1

P=X4,R1=X2Lp,S1=X2HpP = \frac{X}{4}, \quad R_1 = \frac{X}{2} - L_p, \quad S_1 = \frac{X}{2} - H_p

DeMark は R2/S2/R3/S3 を持たず、R1/S1 のみです。

特徴

  • 前日の始値 vs 終値の関係を条件分岐に組み込む唯一の主流 Pivot
  • 陽線・陰線で本命方向が違うという DeMark の思想
  • Pivot 水準は 1 段のみで、R1/S1 が当日の推定高安になる

用途としては、R1 を当日高値予測、S1 を当日安値予測として使います。当日高値がすでに R1 に到達した場合、当日の伸び余地は乏しいと判定します。

Central Pivot Range(CPR)

定義

Frank Ochoa Secrets of a Pivot Boss(2010)で提唱されました。Pivot を単一の線ではなく帯として扱います。

P=Hp+Lp+Cp3P = \frac{H_p + L_p + C_p}{3}

BC=Hp+Lp2BC = \frac{H_p + L_p}{2}

TC=2PBCTC = 2P - BC

  • BC(Bottom Central):Pivot の下側の境界。前日高安の中点
  • TC(Top Central):Pivot の上側の境界。2PBC2P - BC の対称反射
  • P は帯の内部(TC と BC の間)

CPR 幅の解釈

CPR の帯幅(TCBCTC - BC)は、当日の想定ボラティリティのプロキシとして使います。

帯幅意味戦術
Narrow CPR(幅が狭い)ボラ拡大の予兆ブレイクアウト戦術
Wide CPR(幅が広い)レンジ相場の予兆レンジ内逆張り戦術

判定の目安は次のとおりです。

  • CPR 幅を過去 5-10 日の平均帯幅と比較する
  • 平均の 50% 以下なら Narrow、150% 以上なら Wide

連続日 CPR の重なり

  • 前日 CPR と当日 CPR が重なるなら、レンジ相場継続
  • 前日 CPR より当日 CPR が上に離れるなら、上昇トレンド
  • 前日 CPR より当日 CPR が下に離れるなら、下降トレンド

Frank Ochoa はこれを Two-Day Overlapping / Higher / Lower Value と呼びます。

時間軸別 Pivot(Daily / Weekly / Monthly / Yearly)

概念

同じ Classic Pivot の公式を、より長い期間の H/L/C に適用することで、より重要な水準を得ます。

時間軸基準データ更新頻度主な用途
Daily前日 H/L/C毎日デイトレの当日水準
Weekly前週 H/L/C週次(月曜開始)スイングの当週水準
Monthly前月 H/L/C月次(月初)中期ポジションの当月水準
Yearly前年 H/L/C年次(1 月)長期ポジションの当年水準

計算式は同じ

Pweekly=Hprev_week+Lprev_week+Cprev_week3P_{weekly} = \frac{H_{prev\_week} + L_{prev\_week} + C_{prev\_week}}{3}

各時間軸の Pivot が同一水準に近接した場合、その水準は複数時間軸のトレーダーが同時に意識する強力な水準になります(confluence)。

実例

  • Daily Pivot P と Weekly S1 が近接すれば押し目候補
  • Weekly Pivot P と Monthly R1 が近接すれば抵抗候補
  • Monthly R2 と Yearly Pivot が重なれば中期的なターゲット / 反転候補

時刻基準(Cut-off)の問題

FX における「日」の定義

FX スポットは 24 時間連続市場で、1 日の切り替わりが慣習で決まります。

基準JST特徴
NY Close(5pm ET)JST 06:00(夏)/ 07:00(冬)最も一般的、CME 慣習に一致
London Close(5pm BST/GMT)JST 01:00(夏)/ 02:00(冬)欧州参加者中心
東京 Close(3pm JST)JST 15:00日本の日経先物と連動
Sydney Open(7am AEDT)JST 05:00(夏)実質 NY Close と近い

業者間の差異

  • 主要 MT4/MT5 業者の多くは NY 17:00 EST(GMT-5) を基準に日足バーを構築する
  • ただし業者のサーバータイムゾーンで微妙にずれる(GMT+2, +3 など)
  • 同じ USD/JPY でも業者によって表示される Pivot 水準が数 pips 異なるケースが典型

実務での対処

  • 使用プラットフォームの日足バー切り替わり時刻を明示的に確認する
  • 主要業者の 5pm NY 基準に統一する
  • 週足の月曜開始も業者で日本時間月曜 6:00 か月曜 0:00 UTC かで差がある

USD/JPY での使いどころ

東京仲値(JST 09:55)前後

  • 東京仲値の急伸で Classic R1 手前で失速するのが典型
  • 仲値後の反落は Daily P(中心線)付近で下げ止まりやすい
  • Camarilla S3 まで届く日は、ロンドン以降の下落継続の警告

ロンドンオープン(JST 16:00)

  • 東京レンジ(Daily H/L)を Pivot と重ねると、S1/R1 とほぼ一致する日が多い
  • ロンドン初動のブレイクは Pivot R1/S1 の突破が最初の確認水準
  • Weekly Pivot が Daily R2 と近接している場合、週の中盤の反転候補になる

NY オープン(JST 22:30)

  • 米指標発表で Daily R3/S3 まで一気に到達することがある
  • Camarilla R4/S4 は指標時の本気ブレイク水準として使える
  • 逆張りは Camarilla R3/S3、順張りは R4/S4 の分岐点

週次・月次の Pivot

  • Weekly Pivot P はその週の中心水準として、月曜〜金曜の一貫した反発水準になりやすい
  • Monthly Pivot は月次スイングの起点。特に月初に大きく離れると、月の中盤で戻される傾向がある
  • Yearly Pivot は数年に 1 度の大局的反転候補(2022 年 USD/JPY 152 円局面など)

落とし穴

  • 時刻基準を混ぜない:使う Pivot の「日」定義を統一する。NY 5pm 基準と JST 0 時基準を混ぜると水準が毎日ずれる
  • 系統を混同しない:Classic の R1 と Fibonacci の R1 は別水準。表示している系統を明示する
  • Camarilla の R3/S3 = 逆張り、R4/S4 = 順張りの使い分けを忘れない:同じ Camarilla でも R3 到達と R4 到達は正反対の戦術になる
  • Woodie の当日始値問題:24 時間 FX では当日始値が業者依存。Woodie を厳密適用するなら業者基準を固定する
  • DeMark を他 Pivot と混ぜない:DeMark は R1/S1 のみで、R2/S2 が無いため水準の並びが違う
  • 時間軸を混ぜて重なった水準を過信しない:Daily / Weekly / Monthly の confluence は強力だが、そもそも異なるスケールの参照点。近接だけで反転を確信しない
  • Pivot の絶対視:Pivot は前日データから計算した目安。当日の環境(指標・ヘッドライン)で無効化される
  • ヒゲでのタッチと終値ベース:R1 に到達(髭タッチ)しても終値では戻る動きは反発と数える。ただしヒゲタッチだけでエントリーすると騙しに刺さる
  • CPR の Wide / Narrow 判定を主観で決めない:CPR 幅の閾値(平均比 50%/150% 等)は事前に固定してから判定する
  • 統計的 edge を仮定しない:Pivot 水準の有意性は複数の学術検証が存在するが、FDR 補正後の生存は限定的
  • 表示チャートによって同じ Pivot が違う:TradingView, MT4, cTrader, MyfxBook で計算方法と時刻基準が微妙に違うことがある。使うチャートを固定する
  • 短期足での Daily Pivot は 1 日の中で 6-8 時間しか効かない:24 時間 FX で JST の日中と夜中では意識するプレイヤー層が違う。時間帯フィルタと組み合わせる

近い水準どうしの重なりや、複数の水準が集まる帯の扱いは 水平線・サポートとレジスタンス も合わせて参照してください。

Python 実装スケッチ

各系統の Pivot 計算関数です。

import pandas as pd
import numpy as np
def classic_pivots(h: float, l: float, c: float) -> dict:
p = (h + l + c) / 3.0
return {
"P": p,
"R1": 2 * p - l, "S1": 2 * p - h,
"R2": p + (h - l), "S2": p - (h - l),
"R3": h + 2 * (p - l), "S3": l - 2 * (h - p),
}
def fibonacci_pivots(h: float, l: float, c: float) -> dict:
p = (h + l + c) / 3.0
rng = h - l
return {
"P": p,
"R1": p + 0.382 * rng, "S1": p - 0.382 * rng,
"R2": p + 0.618 * rng, "S2": p - 0.618 * rng,
"R3": p + 1.000 * rng, "S3": p - 1.000 * rng,
}
def camarilla_pivots(h: float, l: float, c: float) -> dict:
rng = h - l
return {
"R1": c + rng * 1.1 / 12, "S1": c - rng * 1.1 / 12,
"R2": c + rng * 1.1 / 6, "S2": c - rng * 1.1 / 6,
"R3": c + rng * 1.1 / 4, "S3": c - rng * 1.1 / 4,
"R4": c + rng * 1.1 / 2, "S4": c - rng * 1.1 / 2,
}
def woodie_pivots(h: float, l: float, today_open: float) -> dict:
p = (h + l + 2 * today_open) / 4.0
return {
"P": p,
"R1": 2 * p - l, "S1": 2 * p - h,
"R2": p + (h - l), "S2": p - (h - l),
"R3": h + 2 * (p - l), "S3": l - 2 * (h - p),
}
def demark_pivots(o: float, h: float, l: float, c: float) -> dict:
if c > o:
x = 2 * h + l + c
elif c < o:
x = h + 2 * l + c
else:
x = h + l + 2 * c
return {
"P": x / 4.0,
"R1": x / 2.0 - l,
"S1": x / 2.0 - h,
}
def cpr(h: float, l: float, c: float) -> dict:
p = (h + l + c) / 3.0
bc = (h + l) / 2.0
tc = 2 * p - bc
return {"P": p, "BC": bc, "TC": tc, "width": abs(tc - bc)}
def mid_pivots(pivots: dict) -> dict:
p = pivots["P"]
r1, r2, r3 = pivots["R1"], pivots["R2"], pivots["R3"]
s1, s2, s3 = pivots["S1"], pivots["S2"], pivots["S3"]
return {
"M5": (r2 + r3) / 2.0,
"M4": (r1 + r2) / 2.0,
"M3": (p + r1) / 2.0,
"M2": (p + s1) / 2.0,
"M1": (s1 + s2) / 2.0,
"M0": (s2 + s3) / 2.0,
}

時間軸別 Pivot を DataFrame で

def daily_pivots_series(df_daily: pd.DataFrame) -> pd.DataFrame:
prev = df_daily.shift(1)
p = (prev["high"] + prev["low"] + prev["close"]) / 3.0
rng = prev["high"] - prev["low"]
return pd.DataFrame({
"P": p,
"R1": 2 * p - prev["low"],
"S1": 2 * p - prev["high"],
"R2": p + rng,
"S2": p - rng,
"R3": prev["high"] + 2 * (p - prev["low"]),
"S3": prev["low"] - 2 * (prev["high"] - p),
})
def weekly_pivots_series(df_daily: pd.DataFrame) -> pd.DataFrame:
weekly = df_daily.resample("W-MON", label="left", closed="left").agg({
"open": "first",
"high": "max",
"low": "min",
"close": "last",
})
return daily_pivots_series(weekly)
def monthly_pivots_series(df_daily: pd.DataFrame) -> pd.DataFrame:
monthly = df_daily.resample("MS").agg({
"open": "first",
"high": "max",
"low": "min",
"close": "last",
})
return daily_pivots_series(monthly)

下位足への紐付け

def align_pivots_to_intraday(pivots_daily: pd.DataFrame,
df_intraday: pd.DataFrame) -> pd.DataFrame:
daily_dates = pivots_daily.index.normalize()
pivots_indexed = pivots_daily.copy()
pivots_indexed.index = daily_dates
intraday_dates = df_intraday.index.normalize()
aligned = pivots_indexed.reindex(intraday_dates, method="ffill")
aligned.index = df_intraday.index
return aligned
  • daily_pivots_series は日足 DataFrame から日毎の Pivot 群を生成する。.shift(1) で必ず前日以前のデータを参照する(look-ahead 防止)
  • weekly_pivots_series は日足を週次にリサンプリングする。W-MON は月曜開始
  • monthly_pivots_series は月次リサンプリングする。MS は Month Start
  • align_pivots_to_intraday は日次 Pivot を分足など下位足に紐付ける。日付でのマージと ffill
  • 業者や国によって週の開始曜日が違う場合、W-MONW-SUN に変更する

参考