ENSO in commodity-currency FX

Tested 20 ways. 2 looked convincing alone, none once the number of attempts was counted.

Conclusion: Null

No effect. Of 20 tests, 2 fell below the usual threshold individually — about what chance produces over this many attempts — and none survived correction for the size of the search.

Every test, against the significance threshold

persistence-robust p · left is stronger evidence
00.050.250.51AUDUSD=XAUDUSD=XAUDUSD=XAUDUSD=XNZDUSD=XNZDUSD=XNZDUSD=XNZDUSD=XAUDNZD=XAUDNZD=XAUDNZD=XAUDNZD=XAUDJPY=XAUDJPY=X
Filled markers fall below the 0.05 threshold before multiple-testing correction; hollow markers do not. Correction is applied across the whole batch, so an individual marker clearing the line is not a result on its own.
Tests
20
ticker × horizon
p < 0.05
2
uncorrected
Best q
0.83
BH-FDR
Survived
0
q ≤ 0.10

Method

Hypothesis

Agriculture is a small share of Australian exports, but drought years historically coincide with growth downgrades. The AUD/NZD cross is the cleanest expression if the two economies respond with opposite sign.

Rule

signal = soi_3m # 3-month mean SOI
prior = +1 # higher SOI -> higher returns
function test(instrument, horizon h):
y = sum(returns[instrument], t+1 .. t+h) # strictly forward
x = signal[t] # known at t
beta, t_stat = OLS(y ~ x) with Newey-West HAC, lag = h + 1
# null: slide x against y by every admissible offset, so
# persistence appears identically under the null
null = [slope(y, roll(x, k)) for k in all offsets]
p = (count(abs(null) >= abs(beta)) + 1) / (len(null) + 1)
return beta, t_stat, p
reject if Benjamini-Hochberg q <= 0.10 across the whole study

Evaluation

Table 1 · Every test in this hypothesis

forward return regressed on the SOI signal
AUDUSD=X 1mAUDUSD=X 3mAUDUSD=X 6mAUDUSD=X 12mNZDUSD=X 1mNZDUSD=X 3mNZDUSD=X 6mNZDUSD=X 12mAUDNZD=X 1mAUDNZD=X 3mAUDNZD=X 6mAUDNZD=X 12mAUDJPY=X 1mAUDJPY=X 3mAUDJPY=X 6mAUDJPY=X 12mUSDBRL=X 1mUSDBRL=X 3mUSDBRL=X 6mUSDBRL=X 12m+2.0-2.0
InstrumentHorizonnβHAC tShift pSign as predicted
AUD/USD1m240+0.0003+1.360.105yes
AUD/USD3m238+0.0009+1.640.097yes
AUD/USD6m235+0.0006+0.520.277yes
AUD/USD12m229-0.0009-0.500.626no
NZD/USD1m269+0.0001+0.400.287yes
NZD/USD3m267+0.0002+0.310.343yes
NZD/USD6m264+0.0001+0.070.467yes
NZD/USD12m258-0.0007-0.350.607no
AUD/NZD1m269+0.0002+1.440.036yes
AUD/NZD3m267+0.0007+1.930.020yes
AUD/NZD6m264+0.0005+1.200.149yes
AUD/NZD12m258-0.0000-0.070.469no
AUD/JPY1m269+0.0002+0.830.227yes
AUD/JPY3m267+0.0011+1.960.086yes
AUD/JPY6m264+0.0012+1.090.178yes
AUD/JPY12m258+0.0009+0.490.375yes
USD/BRL1m250-0.0004-1.090.868no
USD/BRL3m248-0.0015-1.640.876no
USD/BRL6m245-0.0021-1.120.848no
USD/BRL12m239-0.0011-0.330.688no
Shift p is the persistence-robust p-value and is the one that decides. HAC t is shown to demonstrate how far conventional inference overstates the evidence.

Reference

Instruments

last price and one-month change, live from Yahoo Finance
SymbolNotes
AUD/JPYAUD/JPY — spot exchange rate.
AUD/NZDAUD/NZD — spot exchange rate.
AUD/USDAUD/USD — spot exchange rate.
NZD/USDNZD/USD — spot exchange rate.
USD/BRLUSD/BRL — spot exchange rate.

Sample

1970–2026 monthly

Sources

Queensland Department of Agriculture and Fisheries. Southern Oscillation Index. The Long Paddock. Monthly, 1876–. www.longpaddock.qld.gov.au/soi/soi-data-files
Yahoo Finance. Historical market prices. Adjusted close, month-end. Retrieved with yfinance. finance.yahoo.com

Revision history

RevStageStatusChange
01DraftDirection and criteria fixed before the experiment ran
02TestedNull20 tests; 2 below p=0.05, none surviving FDR
algorithmic-trading-anthology-july-2026-enso-in-commodity-currency-fx | d/rksci