Plot Seasonality for Ticker
Enter one financial asset ticker (e.g. T-USO). You can copy tickers into a basket using the ticker selector.
Legend:
Colored lines (Normalized YTD for various years):
One line is shown for each historical year; the year lines are coloured in the sequence of the rainbow hues. This implements Normalized YTD logic by finding the first valid price of the year (usually Jan 1st) and recalculating the rest of that year as a percentage deviation from that start price.
Thick gray line (Composite, the seasonality curve = median of colored lines):
This is a robust aggregation of the coloured lines using the median rather than the mean. Why median? If one year had a massive 50% crash in March, the Median line will ignore it, whereas an Average line would drag the whole seasonal chart down, giving you a false bearish signal.
Black dotted line: the current year to date
This represents the current year. It is vital for seeing where the current price is trading relative to historical trends.
Seasonality R2 Rank, updated May 2026
If you know a ticker that makes it into the top 20 for the list below please send us the ticker and we will add it to the rank (you can also send ticker ratios).
| # | Asset / Description | Ticker / Formula | Term Period | Best Beta | Best R2 | Analysis |
|---|---|---|---|---|---|---|
| 1 | iShares Ethereum Trust (The) | T-etha | 100d | 1.53 | 0.86 | Ratio Seasonality |
| 2 | WisdomTree Bitcoin Fund | T-btcw | 250d | 0.67 | 0.47 | Ratio Seasonality |
| 3 | Tecrium Crude Oil Fund ETF | T-crud | 250d | 1.04 | 0.38 | Ratio Seasonality |
| 4 | VanEck Semiconductor ETF | T-vvsmf | 60d | 0.80 | 0.16 | Ratio Seasonality |
| 5 | Ratio of Mosaic to Nat Gas (Input to fertilizers) | RAT(T-MOS, T-UNG) | 100d | 0.93 | 0.13 | Ratio Seasonality |
| 6 | EQT Corp | T-EQT | 60d | 0.66 | 0.03 | Ratio Seasonality |
| 7 | Tecrium Corn | T-corn | 100d | 0.55 | 0.03 | Ratio Seasonality |
| 8 | Barry Callebaut | T-BRRLY | 20d | 0.37 | 0.03 | Ratio Seasonality |
| 9 | SPDR® Bloomberg High Yield Bond ETF | T-JNK | 40d | 0.56 | 0.02 | Ratio Seasonality |
| 10 | United States Natural Gas Fund | T-nags | 60d | 0.35 | 0.02 | Ratio Seasonality |
| 11 | SPDR Gold Shares ETF | T-gld | 100d | 0.56 | 0.02 | Ratio Seasonality |
| 12 | ExxonMobil | T-XOM | 200d | 0.74 | 0.01 | Ratio Seasonality |
| 13 | Bunge | T-BG | 200d | 0.94 | 0.01 | Ratio Seasonality |
| 14 | Tyson Foods | T-TSN | 200d | 0.54 | 0.01 | Ratio Seasonality |
Trading Notes & Guide
Ticker Data Usage and Sourcing
Ticker Data Sources
Our data is provided from a variety of sources: The Federal Reserve (FED-* tickers), The World Bank (WB-* tickers), The International Monetary Fund (IMF-* tickers), Tiingo (T-* tickers covering: stocks, ETFs, etc), Ourselves (MATH-* tickers). The ticker data sources vary according to ticker prefix as you can see. Our ticker selector allows browsing each ticker and their description and placing them on a basket for use.
SEA() Ticker function
For ratio plotting, the SEA(Ticker) function can only be used in the denominator argument and only for plotting TickerA over SEA(TickerA) like this: T-CRUD/SEA(T-CRUD). The SEA() ticker function works by calculating the median yearly seasonality as a new dataset (see the seasonality page for details and examples of this calculation). This one year seasonality dataset is then unfolded exactly the same for many years and directly inputted as a synthetic ticker into this plotting page arguments. Example: Ratio plot of Crude Oil by its seasonality: T-CRUD/SEA(T-CRUD). To write custom SEA() function synthetic tickers simply input your ticker of choice between the parentheses such as SEA(T-CRUD).
RAT() Ticker function
The RAT() ticker function works by calculating the ratio between two tickers as a new dataset. This dataset is then directly inputted as an synthetic ticker into the plotting page arguments. To write custom RAT() tickers simply input your two tickers of choice between the parentheses, separating them with a comma. Such as RAT(T-AAPL, T-MSFT). This can only be once, synthetic tickers like RAT(RAT(T-AAPL, T-MSFT), SEA(T-qtec)) are invalid for the time being. Example, how is Google outpacing Microsoft in terms of CAGR curve: RAT(T-GOOGL,T-MSFT)/MATH-CAGR_PCT-2
LAG() Ticker function
The LAG() ticker function is used to create a lagged version of an asset. This lags a dataset with an amount of days equal to the lag value in the ticker. To write custom LAG() tickers simply input your ticker of choice and lag value between the parenthesis, seperated by a comma. Such as LAG(AAPL, 10). Lag values can only be inputted into the denominator as positive whole numbers between 1 and 7000 days. Using the ratio plotter with LAG(), a ticker can be analyzed in its auto correlation, or correlation to a nother ticker with a gap of X days (e.g.ratio plot of TICKERA by LAG(TICKERB, 30)).
MATH- Tickers
The MATH- tickers are custom mathematical tickers made by us (e.g. MATH-CAGR_PCT-2 for 2% exponential growth, MATH-CONST_VEC-1 for a constant value of 1 each day). To find the list of valid MATH tickers go to the Ticker Selector Page and search through the MATH category list. Important to mention is that when using the MATH tickers the last observed date for this MATH ticker will be far in te future.
Default Ticker Column Projections & Adjustments
Let's take T-GOOGL as an example. When the projection variable is left blank, the ratio plotter will use the default projection variable which is -AdjClose (close price adjusted for both dividends and splits). This means that when you input T-GOOGL into the ratio plotter it will actually plot the Tiingo split and dividend adjusted close price of GOOGL (T-GOOGL-AdjClose by T-MSFT-AdjClose). If you want to plot the split (but not dividend) adjusted close price of GOOGL you can input T-GOOGL-SplitAdjClose.
All projection columns are provided by Tiingo, with exception of the -SplitAdjClose column which is calculated by our system.