Exploring Uniqlo's (TYO: 9983) E-commerce Sales in Europe
This week I decided to look at Uniqlo, the Japanese apparel retailer whose parent company, Fast Retailing Co Ltd, is listed as TYO: 9983. Recently, the Financial Times published an article on Uniqlo’s expanding market presence in Europe:
Uniqlo stands out as one of the few international brands gaining traction in Europe—a region historically challenging for foreign brands due to the dominance of Zara and H&M. Starting last year, Uniqlo began emphasizing its growth strategy in this region, distinguishing European sales in its reports, which now exceed sales in North America.
As a personal project, I have been collecting Uniqlo’s European e-commerce sales data for almost a year and would like to share some of my findings.
Revenue and Discounting
One potential use-case for this data is to track European revenue KPI, keeping in mind that a significant portion of sales comes from offline channels, which this data does not capture.
When attempting to track this reported KPI, I must consider how Fast Retailing recognizes their revenue. Fast Retailing states that it adheres to IFRS 15 revenue recognition rules, which generally means that revenue is recognized when the product is shipped to the customer, not when it is purchased on the website. This method of recognizing revenue is common in e-commerce. Many commonly used datasets that capture payments, such as credit card data, often exhibit some negative lag compared to the reported KPI.
This lag is typically minor, but for Uniqlo, it's particularly relevant at the end of Q1, which coincides with the peak seasonal sales in November. This could mean that some sales recorded at the end of November might spill over into the subsequent quarter's revenue.
Interestingly, according to my data, the seasonal sales peak in November does not correspond to higher discounting during that period.
Upon examining the AUR (Average Unit Retail, or average price of an item sold), I observe some fluctuations, but nothing suggests reduced pricing in November. This differentiates this retailer from many others. In fact, I am seeing an increase in AUR during the November/December season.
This trend is explained by an expected shift in the category mix. Outerwear and knitwear, which typically command higher average unit retail prices, contributed to more than 50% of the overall sales during the November/December season.
When examining the levels of discounting specifically, I observe the highest rates of discounting during the August 2023 season, which coincides with the end of the fiscal year 2023 for the company. The company previously noted that heavier discounting impacted profit margins in the second half of 2023. It will be interesting to see if this pattern repeats this year.
The level of discounting is calculated as the ratio between actual sales and hypothetical sales, assuming all products were sold at their original price.
This method takes into account the volume of sales, rather than just tracking listed discount levels on the website, offering a more precise view of the actual discounts applied.
Growth by Country
The data captures sales across all major European markets, with the UK being the largest in terms of revenue. Germany and France are the second and third largest markets, respectively. Observing the trends over the last few months, it appears that Germany and France are growing slightly faster than the UK.
New Product Launches
Looking at some of the more popular products launched in 2024, Uniqlo reported “..large increases in revenue and profit due to strong sales of Bra Tops, linen, sports utility wear, and other ranges resulting from our decision to strengthen marketing.” (source: Fast Retailing Third Quarterly Report 2023/24)
The data corroborate this, with the most successful product launched in 2024 being the Linen Blend Relaxed Fit Trousers.
Underlying Data
Similar to the On Running example I previously discussed, I use the method described in this article to retrieve data. One known limitation of this method is the 1,000 item cap per query. To circumvent this, I've implemented a workaround using one of the numerical fields as a filter to achieve "pseudo-pagination" by iterating over ranges of values.
As always, I had to deal with some project-specific nuances. For example, the search results display only one specific variant of each product, which can vary over time. One week, it might show the blue variant, and the next week, the red variant of the same SKU, and so forth. Figuring out how to deal with this problem to avoid missing data and duplicating data took me some time. In the end I found a way to track master product level sales.
Unlike the On Running project, I did not convert the running total of 7-day revenues into true daily values using complex recursive calculations. Instead, I simply approximated daily sales by dividing each 7-day revenue total by 7 and averaged all the 7-day periods that each specific day falls into. This method is less precise than the recursive calculation approach, but it avoids the need for anchoring to a known starting value.
Additionally, I needed to apply currency conversions to standardize all regional revenues to JPY, the reporting currency for Uniqlo. It might not be obvious, but all figures are initially denominated in local currencies. For instance, sales and pricing data for Sweden are provided in SEK (Swedish Krona) and thus require conversion. Similar to some of my other projects, I used the FX rates table from the Cybersyn's Financial & Economic Essentials package, combined with Snowflake's ASOF JOIN, to obtain daily FX rates.