amo.dat.p

AMO trained on region outside of dashed line, so that’s the cross-validated region, using Descent optimized LTE annual time-series, Python

python3 ts_lte.py amo.dat –cc –plot –low 1930 –high 1960

using the following JSON parameters file

amo.dat.p

{
  "Aliased": [
    0.422362756,
    0.38861749700000003,
    0.23562139699999995,
    0.259019747,
    0.33201584700000003,
    0.165274488,
    0.262765007,
    0.385761106,
    0.07374525999999999,
    0.215992198,
    0.192246939,
    0.528757205,
    0.112996099,
    0.03714361,
    0.10034691,
    0.07660165,
    0.501613596,
    2.0,
    1.0
  ],
  "AliasedAmp": [
    0.03557922624939592,
    0.09988731513671248,
    0.07106292426402241,
    0.1202147059011645,
    -0.16310647366824904,
    -0.21099766009700224,
    0.3178250739779875,
    -0.034763054040409205,
    -0.26973831298426476,
    -0.13417117453373803,
    0.33741450649520405,
    0.14844747522132112,
    0.38176481941684715,
    -0.24512757533159843,
    0.17007002069621968,
    -0.3175673142831867,
    -0.0801663078936891,
    0.0410641305028224,
    0.15648561320675802
  ],
  "AliasedPhase": [
    12.907437383830702,
    9.791011963532627,
    20.894959747239227,
    11.230932614457465,
    24.106215317177334,
    14.921596063027563,
    11.928445369162157,
    14.76066439534825,
    9.307516552468496,
    6.238399781667854,
    4.78878496205605,
    19.328424226102666,
    4.1510957254818255,
    24.986414787848002,
    3.764292351659264,
    7.899565162852414,
    10.701455186458222,
    6.575719630634085,
    4.603123916071089
  ],
  "DeltaTime": 7.217156366226141e-06,
  "Hold": 0.001560890374528988,
  "Imp_Amp": 36.03147961053978,
  "Imp_Stride": 1,
  "Initial": 0.023119471463386495,
  "LTE_Amp": 1.2149052076222568,
  "LTE_Freq": 232.0780473685175,
  "LTE_Phase": -1.98155204056087,
  "Periods": [
    27.2122,
    27.3216,
    27.564500000000002,
    13.63339513,
    13.69114014,
    13.5961,
    13.6708,
    13.72877789,
    6795.015773000002,
    1616.2951719999999,
    2120.013852999989,
    13.78725,
    3232.690344000001,
    9.142931547,
    9.108450374,
    9.120674533,
    27.0926041
  ],
  "PeriodsAmp": [
    0.22791356815287772,
    0.03599719419115529,
    0.18676833431961723,
    0.03956128728097599,
    -0.2649706920257545,
    0.10022074474351093,
    0.10436992221139457,
    0.14430534046016136,
    0.07102249228279979,
    0.11758452315976271,
    0.04510213195702457,
    0.06361160068822835,
    0.05674788795284906,
    -0.043657524764462274,
    0.07791151774412787,
    0.019631216465477552,
    -0.14009026634971397
  ],
  "PeriodsPhase": [
    13.451016651034463,
    7.371101643819357,
    18.44011357432109,
    6.802030606034782,
    21.120997888353294,
    9.616514380782336,
    5.715489866748063,
    10.809731364754402,
    9.031554832315345,
    7.401459819968337,
    5.9383444499771105,
    14.60402121854254,
    5.541215399062276,
    8.44043335583645,
    1.6019323722385819,
    7.500513005887212,
    7.860442540394975
  ],
  "Year": 365.2520198,
  "final_state": {
    "D_prev": 0.04294
  }
}

Primary 27.2122 > 27.5545 > 27.3216 > others

{
  "Aliased": [
    "0.0537449",
    "0.1074898",
    "0.220485143",
    "0.5",
    "1",
    "2"
  ],
  "AliasedAmp": [
    -0.27685696043001307,
    0.16964990314670372,
    0.11895402824503996,
    -0.22535505798739713,
    -0.14980527635880514,
    0.039162442368949016
  ],
  "AliasedPhase": [
    8.086868082389797,
    6.5259913891848225,
    6.976139887075208,
    0.73810967841759,
    -0.7194832011130626,
    8.565521480562625
  ],
  "DC": -0.2680318100166013,
  "DeltaTime": 3.339861667887925,
  "Hold": 0.0014930905734095634,
  "Imp_Amp": 199.01398139940682,
  "Imp_Amp2": -0.5731191105049073,
  "Imp_Stride": 8,
  "Initial": 0.06704092573627028,
  "LTE_Amp": 1.3767200538799589,
  "LTE_Freq": 125.32556941298645,
  "LTE_Phase": 0.7307737940808291,
  "LTE_Zero": 1.4258992716041372,
  "Periods": [
    "27.2122",
    "27.3216",
    "27.5545",
    "13.63339513",
    "13.69114014",
    "13.6061",
    "13.6608",
    "13.71877789",
    "6795.985773",
    "1616.215172",
    "2120.513853",
    "13.77725",
    "3232.430344",
    "9.132931547",
    "9.108450374",
    "9.120674533",
    "27.0926041",
    "3397.992886",
    "9.095011909",
    "9.082856397",
    "6.809866946",
    "2190.530426",
    "6.816697567",
    "6.823541904",
    "1656.572278"
  ],
  "PeriodsAmp": [
    0.30508787370803825,
    0.13110586375848174,
    0.20288728084656027,
    -0.04672659187556317,
    -0.004826158765318568,
    -0.035033863263707915,
    -0.0368824777486948,
    0.03511304770515584,
    0.011720764708907096,
    -0.004694584574980881,
    0.029609791456868918,
    0.039125743540538716,
    -0.007414683923403197,
    0.00010802542017018773,
    -0.018330796222247217,
    -0.006001961724770963,
    -0.03735314717727939,
    -0.004108234580768664,
    0.011857949379825367,
    0.01479879984548296,
    0.02390111774094945,
    -0.039440470787466424,
    -0.032966674657844246,
    -0.030591610040324502,
    0.013039117473425073
  ],
  "PeriodsPhase": [
    14.569679572272141,
    8.743347618608817,
    6.063986820806294,
    4.382376561017971,
    9.81395082674981,
    5.545094399669723,
    7.378109970639206,
    3.912962970116576,
    7.840782183776614,
    4.988264989477043,
    5.697804841039319,
    7.455439074616485,
    2.972944156135133,
    4.7630843491223365,
    6.317733397950582,
    7.279885606476663,
    3.8917494187283728,
    5.801812295837,
    6.975196465036293,
    6.128620153406749,
    4.95108326060857,
    4.307377590535454,
    5.8886081102774535,
    4.9456215506967265,
    4.232011434810574
  ],
  "Year": "365.2495755"
}

Alternate Julia fitting routine

Warnemunde, DE tidal station

https://docs.google.com/spreadsheets/d/1HysiqoPN-j1M2lTLUpQaGZPAxvJIesFrJMBoYJyWA5I/edit?usp=sharing


started from Warnemunde SLH model fit

Name Value
—- —–
ALIGN 0
EXTRA 0
FORCING 0
MAX_ITERS 50
RELATIVE 1
STEP 0.05

PS C:\Users\paul\github\pukpr\python\simple\run0> cat .\amo.dat.p
{
“Aliased”: [
“0.0537449”,
“0.1074898”,
“0.220485143”,
“0.5”,
“1”,
“2”
],
“AliasedAmp”: [
-0.12182091549739567,
0.25801568818215476,
0.09920867308439774,
-0.1737322618819654,
-0.07529335982382553,
0.052057481476465634
],
“AliasedPhase”: [
4.921761286209268,
5.7618887121423965,
7.487588835004665,
0.8600259809362271,
0.01213560781160881,
7.655542996972892
],
“DC”: -0.008758390763317466,
“Damp”: -0.022154904178658865,
“DeltaTime”: “3.416666667”,
“Hold”: 0.0014873352555352655,
“Imp_Amp”: 190.5449378494113,
“Imp_Amp2”: 1.466945315006192,
“Imp_Stride”: 7,
“Initial”: 0.060016503798714434,
“LTE_Amp”: 1.587179814234174,
“LTE_Freq”: 125.53536829233441,
“LTE_Phase”: 1.2439579952989555,
“LTE_Zero”: 0.896474895660982,
“Periods”: [
“27.2122”,
“27.3216”,
“27.5545”,
“13.63339513”,
“13.69114014”,
“13.6061”,
“13.6608”,
“13.71877789”,
“6795.985773”,
“1616.215172”,
“2120.513853”,
“13.77725”,
“3232.430344”,
“9.132931547”,
“9.108450374”,
“9.120674533”,
“27.0926041”,
“3397.992886”,
“9.095011909”,
“9.082856397”,
“6.809866946”,
“2190.530426”,
“6.816697567”,
“6.823541904”,
“1656.572278”
],
“PeriodsAmp”: [
0.27470885437689657,
0.12275502752316671,
0.08957207441483245,
-0.016351843276285773,
-0.0023253487734064167,
-0.027825652713169724,
-0.03622467995377892,
0.03745364586195977,
0.016931934821747943,
-0.007763938392135198,
0.001227009837326124,
-0.025790386622741152,
-0.008565987883641879,
0.00014664749664687222,
-0.01704107349960909,
-0.00797921907994325,
-0.03177647026752983,
-0.004956872049734769,
0.007932726074580026,
0.014516028377323971,
-0.021088964802417443,
-0.020789594142410307,
-0.0394312191315924,
-0.04134814573194381,
0.016270585503279013
],
“PeriodsPhase”: [
14.531794321199,
9.047644816654925,
6.2513288041048165,
4.835012524578427,
8.2937810112731,
5.467748908147056,
8.57387165414261,
4.054729761879573,
7.943122954685947,
8.951903685571338,
2.710382136770864,
8.02559427189266,
3.2041095507982096,
5.942537145429701,
5.976976092641082,
7.506337445154253,
5.347578022677064,
8.017917628086881,
5.8570430281895804,
6.547489676521564,
4.764028618408168,
4.06142922152038,
6.49245321390355,
4.201452643286066,
6.210242390637271
],
“Year”: “365.2495755”
}
PS C:\Users\paul\github\pukpr\python\simple\run0>

amo.dat.p

compare to warnemunde reference, warne.dat.p

{
“Aliased”: [
“0.0537449”,
“0.1074898”,
“0.220485143”,
“0.5”,
“1”,
“2”
],
“AliasedAmp”: [
-0.4042092506880945,
0.1498026647936091,
0.34974191131892546,
-0.06275860364797245,
-0.12693112051883154,
0.05360693094611856
],
“AliasedPhase”: [
5.022341284265671,
6.12724416388633,
5.10501755051668,
1.3489606861498495,
0.1576762764662913,
6.305517708416614
],
“DC”: -0.008758390763317466,
“Damp”: -0.004169125923760335,
“DeltaTime”: “3.416666667”,
“Hold”: 0.001492802207237816,
“Imp_Amp”: 197.45336102884804,
“Imp_Amp2”: 1.8841384082886352,
“Imp_Stride”: 8,
“Initial”: 0.06797642598445004,
“LTE_Amp”: 1.1234722131058268,
“LTE_Freq”: 129.45433340867712,
“LTE_Phase”: 0.9136521644032515,
“LTE_Zero”: 1.4732244756410906,
“Periods”: [
“27.2122”,
“27.3216”,
“27.5545”,
“13.63339513”,
“13.69114014”,
“13.6061”,
“13.6608”,
“13.71877789”,
“6795.985773”,
“1616.215172”,
“2120.513853”,
“13.77725”,
“3232.430344”,
“9.132931547”,
“9.108450374”,
“9.120674533”,
“27.0926041”,
“3397.992886”,
“9.095011909”,
“9.082856397”,
“6.809866946”,
“2190.530426”,
“6.816697567”,
“6.823541904”,
“1656.572278”
],
“PeriodsAmp”: [
0.2969846885625734,
0.12715090239433,
0.11195966030804025,
-0.014279802990919828,
-0.007476472864580455,
-0.027618411935182365,
-0.0314800276468536,
0.01803389223741826,
0.011163663341122482,
-0.0012907337497222084,
0.010385914775159287,
-0.024140665704639786,
-0.0024596839864129026,
0.00027007377126487056,
-0.014632061204798591,
-0.005915227697593744,
-0.04415788786521701,
-0.0030602495341499583,
0.009422574691039923,
0.013666201034033513,
-0.011874548174887829,
-0.01644029616663989,
-0.027183125961912056,
-0.01849393725550493,
0.0035426632273613356
],
“PeriodsPhase”: [
14.521637612309751,
8.824373362823483,
6.120768972631713,
5.031389621562438,
7.68019623052033,
5.535148594183447,
7.8408960747147844,
3.7085965346643084,
7.8128946785721185,
5.8037304389860065,
5.996864724827583,
8.12109584535951,
2.86102851568745,
6.520420198470608,
5.568571652192804,
7.4330567654835455,
4.544814917547044,
6.625719182549832,
7.045017606299215,
6.1446045083619385,
6.171838481758574,
4.209559209227534,
6.043091099560879,
4.664388204620863,
5.099462955240412
],
“Year”: “365.2495755”
}

warne.dat.p

AMO LTE

“LTE_Amp”: 1.587179814234174,
“LTE_Freq”: 125.53536829233441,
“LTE_Phase”: 1.2439579952989555,
“LTE_Zero”: 0.896474895660982,

Warne LTE

“LTE_Amp”: 1.1234722131058268,
“LTE_Freq”: 129.45433340867712,
“LTE_Phase”: 0.9136521644032515,
“LTE_Zero”: 1.4732244756410906,

AMO Warnemunde

Simpler models can outperform deep learning at climate prediction

This article in MIT News:

https://news.mit.edu/2025/simpler-models-can-outperform-deep-learning-climate-prediction-0826

“New research shows the natural variability in climate data can cause AI models to struggle at predicting local temperature and rainfall.” … “While deep learning has become increasingly popular for emulation, few studies have explored whether these models perform better than tried-and-true approaches. The MIT researchers performed such a study. They compared a traditional technique called linear pattern scaling (LPS) with a deep-learning model using a common benchmark dataset for evaluating climate emulators. Their results showed that LPS outperformed deep-learning models on predicting nearly all parameters they tested, including temperature and precipitation.“

Machine learning and other AI approaches such as symbolic regression will figure out that natural climate variability can be done using multiple linear regression (MLR) with cross-validation (CV), which is an outgrowth or extension of linear pattern scaling (LPS).

https://pukpr.github.io/results/image_results.html

“When this was initially created on 9/1/2025, there were 3000 CV results on time-series
that averaged around 100 years (~1200 monthly readings/set) so over 3 million data points“

In this NINO34 (ENSO) model, the test CV interval is shown as a dashed region

I developed this github model repository to make it easy to compare many different data sets, much better than using an image repository such as ImageShack.

There are about 130 sea-level height monitoring stations in the sites, which is relevant considering how much natural climate variation a la ENSO has an impact on monthly mean SLH measurements. See this paper Observing ENSO-modulated tides from space

“In this paper, we successfully quantify the influences of ENSO on tides from multi-satellite altimeters through a revised harmonic analysis (RHA) model which directly builds ENSO forcing into the basic functions of CHA. To eliminate mathematical artifacts caused by over-fitting, Lasso regularization is applied in the RHA model to replace widely-used ordinary least squares.ย “

Thread on tidal modeling

Someone on Twitter suggested that tidal models are not understood “The tides connection to the moon should be revised.”. Unrolled thread after the “Read more” break

Continue reading →

Teleconnection vs Common-Mode

A climate teleconnection is understood as one behavior impacting another — for example NINOx => AMO, meaning the Pacific ocean ENSO impacting the Atlantic ocean AMO via a remote (i.e. tele) connectiion. On the other hand, a common-mode behavior is a result of a shared underlying cause impacting a response in a uniquely parameterized fashion — for example NINOx = g(F(t), {n1, n2, n3, ...}) and AMO = g(F(t), {a1, a2, a3, ...}), where the n's are a set of constant parameters for NINOx and the a's are for AMO.

In this formulation F(t) is a forcing and g() is a transformation. Perhaps the best example of a common-mode response to a forcing is in the regional tidal response in local sea-level height (SLH). Obviously, the lunisolar forcing is a common mode in different regions and subtle variations in the parametric responses is required to model SLH uniquely. Once the parameters are known, one can make practical predictions (subject to recalibration as necessary).

Continue reading →

Topology shapes climate dynamics

A paper from last week with high press visibility that makes claims to climate1 applicability is titled: Topology shapes dynamics of higher-order networks

The higher-order Topological Kuramoto dynamics, defined in Eq. (1), entails one linear transformation of the signal induced by a boundary operator, a non-linear transformation due to the application of the sine function, concatenated by another linear transformation induced by another boundary operator. These dynamical transformations are also at the basis of simplicial neural architectures, especially when weighted boundary matrices are adopted.

\dot{\theta}_i = \omega_i + \sum_{j} K_{ij} \sin(\theta_j - \theta_i) + F(t)

This may be a significant unifying model as it could resolve the mystery of why neural nets can fit fluid dynamic behaviors effectively without deeper understanding. In concise terms, a weighted sine function acts as a nonlinear mixing term in a NN and serves as the non-linear transformation in the Kuramoto model2.

Continue reading →

Difference Model Fitting

By applying an annual impulse sample-and-hold on a common-mode basis set of tidal factors, a wide range of climate indices can be modeled and cross-validated. Whether it is a biennial impulse or annual impulse, the slowly modulating envelope is roughly the same, thus models of multidecadal indices such as AMO and PDO show similar skill — with cross validation results evaluated here for a biennial impulse. Now we will evaluate for annual impulse.

Continue reading →

Lunar Torque Controls All

Mathematical Geoenergy

The truly massive scale in the motion of fluids and solids on Earth arises from orbital interactions with our spinning planet. The most obvious of these, such as the daily and seasonal cycles, are taken for granted. Others, such as ocean tides, have more complicated mechanisms than the ordinary person realizes (e.g. ask someone to explain why there are 2 tidal cycles per day). There are also less well-known motions, such as the variation in the Earth’s rotation rate of nominally 360ยฐ per day, which is called the delta in Length of Day (LOD), and in the slight annual wobble in the Earth’s rotation axis. Nevertheless, each one of these is technically well-characterized and models of the motion include a quantitative mapping to the orbital cycles of the Sun, Moon, and Earth. This is represented in the directed graph below, where the BLUE ovals indicate behaviors that are fundamentally understood and modeled via tables of orbital factors.

The cyan background represents behaviors that have a longitudinal dependence
(rendered by GraphViz
)

However, those ovals highlighted in GRAY are nowhere near being well-understood in spite of being at least empirically well-characterized via years of measurements. Further, what is (IMO) astonishing is the lack of research interest in modeling these massive behaviors as a result of the same orbital mechanisms as that which causes tides, seasons, and the variations in LOD. In fact, everything tagged in the chart is essentially a behavior relating to an inertial response to something. That something, as reported in the Earth sciences literature, is only vaguely described — and never as a tidal or tidal/annual interaction.

I don’t see how it’s possible to overlook such an obvious causal connection. Why would the forcing that causes a massive behavior such as tides suddenly stop having a connection to other related inertial behaviors? The answers I find in the research literature are essentially that “someone looked in the past and found no correlation” [1].

Continue reading →

AMO and the Mt tide

Geophysics is a challenging endeavor — one part geology as historical evidence and the other part current measurements revealing how the forces of nature are continuously shaping the behavior of the Earth. Yet, how much faith can we place on any one interpretation, or on any past consensus?

"But for geophysics on such a massive scale, nothing can be checked via a lab controlled experiment."Someone has described geology!I prefer my own description (though taken from someone else and modified): Geology is like trying to learn about barley by studying beer.

— Compton Scatterbrained (@stommepoes.bsky.social) 2024-09-18T15:13:20.671Z

This goes double for the study of geophysical fluid dynamics — volumes and forces so large that controlled experiments are impossible. So that when a semi-controlled impulse comes about, say from the calving of a glacier, the empirical results may be surprising:

The subsequent mega-tsunami โ€” one of the highest in recent history โ€” set off a wave which became trapped in the bendy, narrow fjord for more than a week, sloshing back and forth every 90 seconds.

The phenomenon, called a โ€œseiche,โ€ refers to the rhythmic movement of a wave in an enclosed space, similar to water splashing backwards and forwards in a bathtub or cup. One of the scientists even tried (and failed) to recreate the impact in their own bathtub.

While seiches are well-known, scientists previously had no idea they could last so long.

โ€œHad I suggested a year ago that a seiche could persist for nine days, people would shake their heads and say thatโ€™s impossible,โ€ said Svennevig, who likened the discovery to suddenly finding a new colour in a rainbow. — http://www.msn.com/en-in/news/techandscience/what-caused-the-mysterious-9-day-earth-vibration-scientists-point-to-650-ft-mega-tsunami-that-rocked-greenland/ar-AA1qwIqk

This took place in a large Greenland fjord — massive but not as massive as the ocean. And that’s where massive geophysical forces also take place, such as from tidal pull.

So what about the Atlantic Multidecadal Oscillation (AMO)? The Mt long-period tide is an interference between the Mf nodal tidal cycle (13.66 days) and the Mm anomalistic tidal cycle (27.55 days). When this is synchronized to an annual impulse, a multidecadal response results.

It is much too easy to model the 50-60 year AMO cycle via nonlinear triad frequency-doubling mechanisms, and also simulate the faster cycling from the predominate Mf and Mm interactions with the annual cycle. This is essentially a sloshing behavior operating on the ocean’s thermocline as described in Chapter 12 of Mathematical Geoenergy, applying the nonlinear geophysical dynamics embedded within Laplace’s Tidal Equations.

New colors of the rainbow are waiting to be revealed. No excuse for others to reproduce the tidal forcing models as described and perform cross-validated model fits to replicate the results above. Work smart not hard.

NAO and the Median Filter

a random quote

“LLMs run a median filter on the corpus”

The North Atlantic Oscillation (NAO) time-series has always been intimidating to analyze. It appears outwardly like white-noise, but enough scientists refer to long periods of positive or negative-leaning intervals that there must be more of an underlying autocorrelation embedded in it. To reduce the white noise and to extract the signal requires a clever filtering trick. The desire is that the filter preserve or retain the edges of the waveform while reducing the noise level. The 5-point median filter does exactly that at a minimal complexity level, as the algorithm is simply expressed. It will leave edges and steep slopes alone as the median will naturally occur on the slope. That’s just what we want to retain the underlying signal.

Once applied, the NAO time-series still appears erratic, yet the problematic monthly extremes are reduced with the median filter suppressing many of them completely. If we then use the LTE model to fit the NAO time-series (with a starting point the annual-impulsed tidal forcing used for the AMO), a clear correlation emerges. The standing-wave modes of course are all high, in contrast to the one low mode for the AMO, so the higher frequency cycling is expected yet the fit is surprisingly good for the number of peaks and valleys it must traverse in the 140+ year historical interval.

Order overrides chaos

Dimensionality reduction of chaos by feedbacks and periodic forcing is a source of natural climate change,ย by P. Salmon, Climate Dynamics (2024)

Bottom line is that a forcing will tend to reduce chaos by creating a pattern to follow, thus the terminology of “forced response”. This has implications for climate prediction. The first few sentences of the abstract set the stage:

The role of chaos in the climate system has been dismissed as high dimensional turbulence and noise, with minimal impact on long-term climate change. However theory and experiment show that chaotic systems can be reduced or โ€œcontrolledโ€ from high to low dimensionality by periodic forcings and internal feedbacks. High dimensional chaos is somewhat featureless. Conversely low dimensional borderline chaos generates pattern such as oscillation, and is more widespread in climate than is generally recognised. Thus, oceanic oscillations such as the Pacific Decadal and Atlantic Multidecadal Oscillations are generated by dimensionality reduction under the effect of known feedbacks. Annual periodic forcing entrains the El Niรฑo Southern Oscillation.

In Chapters 11 and 12 in Pukite, P., Coyne, D., & Challou, D. (2019).ย Mathematical Geoenergy. John Wiley & Sons, I cited forcing as a chaos reducer:

“It is well known that a periodic forcing can reduce the erratic fluctuations and uncertainty of a nearโ€chaotic response function (Osipov et al., 2007; Wang, Yang, Zhou, 2013).“

But that’s just a motivator. Tides are the key, acting primarily on the subsurface thermocline. Salmon’s figure comparing the AMO to Barents sea subsurface temperature is substantiating in terms of linking two separated regions by something more than a nebulous “teleconnection”.

Likely every ocean index has a common-mode mechanism. The tidal forcing by itself is close to providing an external synchronizing source, but requires what I refer to as a LTE modulation to zero in on the exact forced response. Read the previous blog post to get a feel how this works:

As Salmon notes, it’s known at some level that an annual/seasonal impulse is entraining or synchronizing ENSO, and also likely PDO and AMO. The top guns at NASA JPL point out that the main lunisolar termsย are at monthly, 206 day, annual, 3 year, and 6 year periods, and this is what is used to model the forcing, see the following two charts

Now note how the middle panel in each of the following modeled climate indices does not change markedly. The most challenging aspect is the inherent structural sensitivity of the manifold1 mapping involved in LTE modulation. As the Darwin fit shows, the cross-validation is better than it may appear, as the out-of-band interval does not take much of a nudge to become synchronized with the data. Note also that the multidecadal nature of an index such as AMO may be ephemeral — the yellow cross-validation band does show valleys in what appears to be a longer multidecadal trend, capturing the long-period variations in the tides when modulated by an annual impulse – biennial in this case.

Model config repo: https://gist.github.com/pukpr/3a3566b601a54da2724df9c29159ce16?permalink_comment_id=5108154#gistcomment-5108154


1 The term manifold has an interesting etymology. From the phonetics, it is close to pronounced as “many fold”, which is precisely what’s happening here — the LTE modulation can fold over the forcing input many times in proportion to the mode of the standing wave produced. So that a higher standing wave will have “many folds” in contrast to the lowest standing wave model. At the limit, the QBO with an ostensibly wavenumber=0 mode will have no folds and will be to first-order a pass-through linear amplification of the forcing, but with likely higher modes mixed in to give the time-series some character.