ドル円とCFTC 円投機ポジションの長期推移から見るドル円の売買タイミング

CFTCの円投機ポジション(IMM円先物投機筋ポジション)からはドル円のセンチメントを読み取ることが出来ます。
円投機ポジションが極端に偏っているとドル円は急速に逆方向に動きやすい傾向があります。
ネットポジションが大きくプラスの場合にはその後ドル円は上がりやすく(円安に振れやすい)、
逆にネットポジションが大きくマイナスの場合にはその後ドル円は下がりやすい(円高に振れやすい)
といった傾向を読み取れます。

例えば2007/6や2024/7はネットポジションで-18万を記録しており、それまでに積みあがっていた円ショートの巻き戻しもあると思いますが
その後大きなリバウンドもなく10円20円の円高になっていることが分かります。

逆にグラフの各所に見えるネットポジションで+5万を記録したあたりが円高のピークになっており
その後円安に傾きだしていることも分かります。

ただしこれらはあくまで過去の情報から読み取れる範囲ではそうだったというだけで
今後も必ずしもそのようになるというわけではない点にはご注意ください。

このアイデアにある円投機ポジションの可視化チャートは当初はスクリプトとして公開したかったのですが、
TradingViewのハウスルール上、スクリプトとして公開することができませんでした。
そのため、以下に全コードを記載していますので各自でpineスクリプトを作成してみてください(コピペでOKです)

ここから----
//version=5
indicator("CFTC: JPY speculative net positions", precision=0, timeframe = "1W")
import TradingView/LibraryCOT/2 as cot
var cftcCode = cot.currencyToCFTCCode("JPY")

maLen = input.int(40, minval=1, title='Weekly SMA Length')

// Function to request COT data.
dataRequest(metricName, direction) =>
tickerId = cot.COTTickerid('Legacy', cftcCode, false, metricName, direction, "All")
value = request.security(tickerId, "1D", close, ignore_invalid_symbol = true)
if barstate.islastconfirmedhistory and na(value)
runtime.error("Could not find relevant COT data based on the current symbol.")
value

// Positions
nonComLong = dataRequest("Noncommercial Positions", "Long")
nonComShort = dataRequest("Noncommercial Positions", "Short")
nonComNet = nonComLong - nonComShort

comLong = dataRequest("Commercial Positions", "Long")
comShort = dataRequest("Commercial Positions", "Short")
comNet = comLong - comShort

totalLong = dataRequest("Total Reportable Positions", "Long")
totalShort = dataRequest("Total Reportable Positions", "Short")
totalNet = totalLong - totalShort

nonRepLong = dataRequest("Nonreportable Positions", "Long")
nonRepShort = dataRequest("Nonreportable Positions", "Short")
nonRepNet = nonRepLong - nonRepShort

sma = ta.sma(nonComNet,maLen)

plot(nonComLong,"Noncommercial Long",color=color.new(color.green,50), display=display.none)
plot(-nonComShort,"Noncommercial Short",color=color.new(color.red,50), display=display.none)
plot(nonComLong-nonComShort, "Noncommercial Net",color=color.blue, style=plot.style_columns)
plot(comLong,"Commercial Long",color=color.new(color.fuchsia,50), display=display.none)
plot(-comShort,"Commercial Short",color=color.new(color.orange,50), display=display.none)
plot(comNet, "Commercial Net",color=color.maroon, display=display.none)
plot(totalLong,"Total Long",color=color.black, display=display.none)
plot(-totalShort,"Total Short",color=color.yellow, display=display.none)
plot(-totalNet,"Total Net",color=color.navy, display=display.none)
plot(nonRepLong,"Nonreportable Long",color=color.new(color.teal,50), display=display.none)
plot(-nonRepShort,"Nonreportable Short",color=color.new(color.olive,50), display=display.none)
plot(nonRepNet,"Nonreportable Net",color=color.silver, display=display.none)

plot(sma, "MA: Noncom Net", color=color.lime, linewidth=2)
----ここまで
Trading PlanUSDJPY

更多:

免责声明