In der Rubrik Investor Relations auf der Internetpräsenz von Volvo Trucks kann man nicht nur die Absatzzahlen herunterladen (und fortschreiben wie im vorherigen Post), sondern auch ein Set an Kennzahlen. Das Volvo-eigene Kennzahlensystem wurde nach eigenen Angaben zu Beginn 2018 überarbeitet; insofern lohnt sich ein genauer Blick auf deren Entwicklung. Im Folgenden eine kleine Analyse, bzw. vor allem eine Visualisierung.
Zur Einordnung als erstes die weltweite Absatzmenge und der Umsatz von Volvo Trucks mitsamt bereinigter Wachstumsrate im Vgl. zum selben Quartal im Vorjahr. Die Besonderheit durch Corona in 2020 ist vor allem an dieser Wachstumsrate gut sichtbar; doch der Rückgang beginnt bereits in 2019.
Profitabilität
Hier benutzt Volvo die Operating Margin (Bruttoeinkommen/Umsatz). Sie gibt an, wie viel Prozent vom Umsatz nach Abzug der variablen Kosten (Löhne, Materialien, ...) übrig bleiben. Volvo zielt mind. 10% (über einen Business Cycle hinweg) an. Das Ziel selbst wird durchweg übertroffen; interessant ist v.a. dass Volvo nach einem Einbruch im Q2 2020 seine Bruttomarge wieder auf das vorherige Level bringen konnte. Diese konstante Marge verweist trotz/dank des sich verändernden Umsatzes auf ein gutes Management der variablen Kosten.
Speziell für das industrielle Geschäft führt Volvo noch die EBITDA-Marge auf. Die Earnings before Interest, Tax, Depreciation and Amortization gibt Aufschluss darüber, wie rentabel die operativen Aktivitäten - isoliert von unterschiedlichen Besteuerungssystemen und Abschreibungen auf Maschinen - eines Unternehmens sind. es wird deutlich, wie Corona das Jahr 2020 durcheinanderbrachte; nimmt man aber einen Durchschnitt von Q2 und Q3 2020, so sieht man, dass sich der Abwärtstrend in der Rentabilität fortsetzt.
Liquidität
Volvo schreibt hierzu: "A debt-free industrial balance sheet, ..., enables the Volvo Group to better manage cyclicality in a capital-intensive industry and to secure competitive cost of funds for the Financial Services’ operation." - also, dass das operative Geschäft unter Normalbedingungen keine Verschuldung bedingen sollte (Verbindlichkeiten von Leasing und Pensionen ausgeschlossen). Dies sei speziell angesichts der kapitalintensiven Natur des LKW-Geschäfts von Bedeutung.
Die erte Grafik zeigt die Volatilität der Eigenfinanzierungsquote (wie oft die Investitionen mit dem operativen Cashflow finanziert werden können). Die Quote sinkt deutlich hin zu 2020. Das Q3 2020 hat eine erhebliche Verbesserung der Quote - v.a. wegen nicht steigender Investitionen.
Zur Finanzsituation des operativen Geschäfts verweist Volvo zudem auf den Return on Capital Employed. Er verweist darauf, wie profitabel das Unternehmen mit dem eingesetzten Kapital umgeht. Auch hier fällt das Jahr 2020 auf.Zur Liquidität der Volvo Gruppe wird auf die Eigenkapitalrendite verwiesen, also auf die Verzinsung für das Eigenkapital der Eigentümer - selbe Geschichte: auch hier fällt das Jahr 2020 auf.
Der obige Return on Equity ist wohlgemerkt inklusive des Leasinggeschäfts. In der folgenden Grafik wird sichtbar, dass die Durchdringungsrate des Leasinggeschäfts steigt. Hier ist die Frage, ob dies auf eine steigende Notwendigkeit der Kunden für solche Finanzierungsangebote hinweist, oder ob diese dennoch in der Lage wären, einen LKW zu kaufen.
library(dplyr)
library(ggplot2)
library(zoo)
library(reshape2)
library(viridis)
library(quantmod)
data <- read.csv("~/Documents/Blog/20 Volvo Financials/Volvo Key Ratios.csv") %>%
mutate_if(is.character,as.numeric) %>%
mutate(period = gsub("/","-",period)) %>%
mutate(period = paste("Q",period)) %>%
mutate(period = gsub(" ","",period)) %>%
mutate(period = as.Date(as.yearqtr(period, format = "Q%q-%Y"),frac=1))
data %>%
select(scope, period, Absatzmenge, Umsatz, Umsatzwachstum_adj) %>%
filter(scope=="Volvo Group" | scope == "Industrial Operations") %>%
melt(., id.vars=c("scope", "period")) %>%
ggplot(aes(x=period, y=value, group=scope, color=scope)) +
geom_hline(yintercept = 0, color="grey") +
geom_point() +
geom_line() +
scale_colour_manual(values=c("#249DA6","#4EE7F2"), breaks=c("Volvo Group","Industrial Operations")) +
facet_grid(vars(variable), scales="free") +
theme_minimal() +
labs(x = NULL, y = NULL,
title = paste("Umsatz Volvo Trucks"),
caption = "Plot 1")
## Plot 2 - Profitiabilität
data %>%
select(scope, period, Umsatz, Bruttoeinkommen, Bruttomarge) %>%
filter(scope=="Volvo Group" | scope == "Industrial Operations") %>%
melt(., id.vars=c("scope", "period")) %>%
ggplot(aes(x=period, y=value, group=scope, color=scope)) +
geom_point() +
geom_line(size=1) +
geom_hline(yintercept = 0, color="grey") +
scale_colour_manual(values=c("#249DA6","#4EE7F2"), breaks=c("Volvo Group","Industrial Operations")) +
facet_grid(vars(variable), scales="free") +
theme_minimal() +
labs(x = NULL, y = NULL,
title = paste("Profitabilität Volvo Trucks"),
caption = "Plot 2")
data %>%
select(scope, period, Umsatz, EBITDA, EBITDA.Marge) %>%
filter(scope=="Industrial Operations") %>%
melt(., id.vars=c("scope", "period")) %>%
ggplot(aes(x=period, y=value, group=scope, color=scope)) +
geom_point() +
geom_line(size=1) +
geom_hline(yintercept = 0, color="grey") +
scale_colour_manual(values=c("#249DA6","#4EE7F2"), breaks=c("Volvo Group","Industrial Operations")) +
facet_grid(vars(variable), scales="free") +
theme_minimal() +
labs(x = NULL, y = NULL,
title = paste("Profitabilität Volvo Trucks"),
caption = "Plot 3")
# Plot 3 - Liquidität
data %>%
select(scope, period, Cashflow_lauf._Geschäft, Investitionen, Eigenfinanzierungsquote) %>%
filter(scope=="Volvo Group" | scope == "Industrial Operations") %>%
melt(., id.vars=c("scope", "period")) %>%
ggplot(aes(x=period, y=value, group=scope, color=scope)) +
geom_point() +
geom_line(size=1) +
geom_hline(yintercept = 0, color="grey") +
scale_colour_manual(values=c("#249DA6","#4EE7F2"), breaks=c("Volvo Group","Industrial Operations")) +
facet_grid(vars(variable), scales="free") +
theme_minimal() +
labs(x = NULL, y = NULL,
title = paste("Liquidität Volvo Trucks"),
caption = "Plot 4")
data %>%
select(scope, period, Betriebsergebnis_12m, Betriebskapital, ReturnOnCapitalEmployed) %>%
filter(scope =="Industrial Operations") %>%
melt(., id.vars=c("scope", "period")) %>%
ggplot(aes(x=period, y=value, group=scope, color=scope)) +
geom_point() +
geom_line(size=1) +
geom_hline(yintercept = 0, color="grey") +
scale_colour_manual(values=c("#249DA6","#4EE7F2"), breaks=c("Volvo Group","Industrial Operations")) +
facet_grid(vars(variable), scales="free") +
theme_minimal() +
labs(x = NULL, y = NULL,
title = paste("Liquidität Volvo Trucks"),
caption = "Plot 5")
data %>%
select(scope, period, JÜ_12mrolling, Eigenkapital_Quartalsgewichtung, Eigenkapitalrendite) %>%
filter(scope =="Volvo Group") %>%
melt(., id.vars=c("scope", "period")) %>%
ggplot(aes(x=period, y=value, group=scope, color=scope)) +
geom_point() +
geom_line(size=1) +
geom_hline(yintercept = 0, color="grey") +
scale_colour_manual(values=c("#249DA6","#4EE7F2"), breaks=c("Volvo Group","Industrial Operations")) +
facet_grid(vars(variable), scales="free") +
theme_minimal() +
labs(x = NULL, y = NULL,
title = paste("Liquidität Volvo Trucks"),
caption = "Plot 6")
# Leasinggeschäft Volvo Trucks
data %>%
select(scope, period, Absatz_Finanzangebot, Absatz_finanziert, Durchdringungsrate) %>%
filter(scope=="Financial Services") %>%
melt(., id.vars=c("scope", "period")) %>%
ggplot(aes(x=period, y=value, group=scope, color=scope)) +
geom_point() +
geom_line(size=1) +
geom_hline(yintercept = 0, color="grey") +
scale_colour_manual(values=c("#249DA6","#4EE7F2", "#1AD9AC"), breaks=c("Volvo Group","Industrial Operations", "Financial Services")) +
facet_grid(vars(variable), scales="free") +
theme_minimal() +
labs(x = NULL, y = NULL,
title = paste("Leasinggeschäft Volvo Trucks"),
caption = "Plot 7")