Analysing LNG Freight Metrics Time Series with Kpler Python SDK
A case study showing how to use Kpler’s proprietary data for better analysis of long-term freight dynamics in the Asian LNG market
Commodity markets are characterised by seasonal phenomena which have cascading impacts on both cargo prices and maritime freight rates. A classic example is the LNG import market which is highly susceptible to winter demand surges.
While major importers, such as utilities companies, are already aware of tight replacement cargoes from the spot market and increased gas demand for heating purposes during winter, the limited storage capacity and boil-off economics heavily restrict the allowable stockpile volumes.
When conducting forecasts and long-term planning, historical seasonality impacts are often thoroughly dissected by market analysts. Such in-depth analysis of long term seasonality trends are required to generate better forecasting, as well as a more robust commercial strategy to optimise profitability and risk exposure.
In the course of this article, we will attempt to illustrate the analysis of LNG seasonality trends using Kpler’s proprietary data via the Kpler Python SDK tool. We will focus on the LNG ton-miles metric, which is one of the key indicators for freight supply and demand dynamics. More specifically, we will try to answer the following questions:
● How can we analyse LNG freight supply and demand dynamics via the ton-miles metric?
● What is time series decomposition?
● How to automatically decompose seasonal time series data in Python?
Let us take a closer look at the Japan, South Korea, Taiwan and China (JKTC) 2015-2021 LNG import ton-miles time series, one of the Freight Metric aggregation available at Kpler.
1. Time Series Extraction
2. Time Series Decomposition: additive versus multiplicative
Now that we have extracted our time series, let’s decompose them. In this procedure, we can use the additive or multiplicative decomposition model, whereby each observation in the time series can be expressed as either a sum or a product of the components.
Additive time series: Value = Base Level + Trend + Seasonality + Residual
Multiplicative time series: Value = Base Level x Trend x Seasonality x Residual
We will apply the statsmodels module to perform seasonal decomposition on the dataset. Read more about the classes and functions for the estimation of many different statistical models.
Often, it may be difficult to cleanly specify the time series as an additive or multiplicative model. Real-world problems are noisy, with various combinations of additive and multiplicative components. There may even be non-repeating cycles mixed in with the repeating seasonality factors.
From the JKTC 2015-2021 LNG import ton-miles time series, we observed that:
- The additive model tends to generate residuals with a large range and standard deviation, along with a somewhat cyclic pattern.
- The multiplicative model tends to generate residuals with a smaller range and standard deviation, hence tightly centered around 1.
- China has exhibited consistently strong long-term growth trend to secure the leadership for Far East LNG ton-miles freight demand.
It is important to note that both the trend and seasonality can be either additive or multiplicative. Try to spot the following characteristics in the time series that you are investigating.
4. Learn More
Finding Seasonal Trends in Time-Series Data with Python - A guide to understanding the different kinds of seasonality and how to decompose the time series into trends and seasons by Spencer Hayes
Time Series From Scratch — Decomposing Time Series Data - Learn how to decompose time series into trend, seasonal, and residual components by Dario Radečić
Time Series Analysis in Python - A Comprehensive Guide with Examples by Selva Prabhakaran