Introduction
Dividend payout policy remains a key topic in Corporate Finance, with Lintner contributing to the birthing principles in his 1956 paper along with Miller Modigliani’s 1961 dividend irrelevance hypothesis. Recent studies have aligned the significance of dividend payout policy, to tax, information and agency cost, in terms of determining financial performance of a firm. Researchers are still to reach an agreement on the optimal payout policy, that will enhance firm value, thus leading to an unsolved dividend riddle. A firm’s payout policy carries potential implications for changes in share prices and investors’ returns as it is an integral part of a firm’s larger financial ecosystem with important consideration on financing, investment and risk management (Farre-Mensa, Michaely, & Schmalz 2014) (Ross, 2002) (Foong, Zakaria, & Tan, 2007. Studies depict that payout policy affects firm performance as measured by the firm’s profitability and it must be a major determinant for a firm’s performance ((Amidu, 2007), (Brigham, 1995)). This study aims to investigate whether there is a direct relationship between payout policy and firm performance of the JSE top 40 listed companies.
This paper further extends on the methodology cited of our research proposal paper titled “THE IMPACT OF DIVIDEND PAYOUT POLICY ON PERFORMANCE OF THE TOP 40 JSE LISTED FIRMS” which aims to test if there is a relationship between dividend payout policy and firm’s performance. Our data looks at the period between 2009 to 2016, results of top 40 JSE listed entities.
Data Limitations
The top 40 listed firms vary year to year, which can distort results as the sampled entities can change annually. On the paper the sampled top 40 listed entities are as at 2019 and the study tracks their performance and payout policy from 2009 to 2016. The key factor and emphasise is to track and interpret top listed entities year on year performance returns versus their payout policy and not the entity’s name. On the final paper we will conduct a VLOOKUP year on year to calculate aggregate change in the overall entities listed annual see if the change is significant change in names.
Methodology
Packages Installed
The list below is packages installed on the R interface and included in the library to examine data. ‘data. table’which is a package used to manipulate data, subdivide rows,to enable to select and compute information in columns and calculate total by group. ‘dplyr’ which provides relatively easy to use functions when performing data analysis, allows for data to be transformed and tabulated. ‘ggplot2’ which enables interface to create graphics and map variables to aesthetics and provides more detail than primitive graphs. ‘tseries’ to convert a numerical vector into a time series which will unable to run normality test. ‘readxl’ efficient way to read rectangular data in excel format.
# install.packages("backports")
# install.packages("tidyr")
# install.packages("dplyr")
# install.packages("ggplot2")
# install.packages("moments")
# install.packages("forecast")
# install.packages("tseries")
library(moments)
library(ggplot2)
library(dplyr)
library(tidyr)
library(forecast)
library(tseries)
library(knitr)
library(readxl)
Importing Data
library(readxl)
ROE <- read_excel("C:/Users/Tam/Desktop/Top 40 JSE LISTED CO'S.xlsx",
sheet = "ROE")
PE <- read_excel("C:/Users/Tam/Desktop/Top 40 JSE LISTED CO'S.xlsx",
sheet = "PE")
MBT <- read_excel("C:/Users/Tam/Desktop/Top 40 JSE LISTED CO'S.xlsx",
sheet = "MBT")
DP <- read_excel("C:/Users/Tam/Desktop/Top 40 JSE LISTED CO'S.xlsx",
sheet = "DP")
View(ROE)
View(PE)
View(MBT)
View(DP)
Pre-testing and Variable Creation
For us to analyse data, the first step involves examining the properties of the data.
Normality Testing
Test conducted to determine if the variables are symmetrical i.e. take the shape of a bell-shaped graph, are variables negatively or positively stewed?
Testing for Normality using Histogram on the ROE variables
### Testing for Normality using Jarque-Bera Test on the ROE variables
library(broom)
library(tseries)
library(knitr)
library(tidyr)
kable(tidy(jarque.bera.test(ROE$`40178`)))
statistic | p.value | parameter | method |
---|---|---|---|
69.2137 | 0 | 2 | Jarque Bera Test |
statistic | p.value | parameter | method |
---|---|---|---|
496.8081 | 0 | 2 | Jarque Bera Test |
statistic | p.value | parameter | method |
---|---|---|---|
97.17495 | 0 | 2 | Jarque Bera Test |
statistic | p.value | parameter | method |
---|---|---|---|
12.63585 | 0.0018037 | 2 | Jarque Bera Test |
statistic | p.value | parameter | method |
---|---|---|---|
18.44264 | 9.89e-05 | 2 | Jarque Bera Test |
statistic | p.value | parameter | method |
---|---|---|---|
9.077716 | 0.0106856 | 2 | Jarque Bera Test |
statistic | p.value | parameter | method |
---|---|---|---|
17.64217 | 0.0001476 | 2 | Jarque Bera Test |
statistic | p.value | parameter | method |
---|---|---|---|
1335.76 | 0 | 2 | Jarque Bera Test |
x |
---|
1.906946 |
x |
---|
8.194463 |
Normality Test on MBV
x |
---|
NA |
x |
---|
NA |
Histogram
### Jarque-Bera Test
# library(broom)
# library(tseries)
# library(knitr)
# library(tidyr)
# kable(tidy(jarque.bera.test(MBT$`40178`)))
# kable(tidy(jarque.bera.test(MBT$`40543`)))
# kable(tidy(jarque.bera.test(MBT$`40908`)))
# kable(tidy(jarque.bera.test(MBT$`41274`)))
# kable(tidy(jarque.bera.test(MBT$`41639`)))
# kable(tidy(jarque.bera.test(MBT$`42004`)))
# kable(tidy(jarque.bera.test(MBT$`42369`)))
# kable(tidy(jarque.bera.test(MBT$`42735`)))
Histogram
### Jarque-Bera Test
# library(broom)
# library(tseries)
# library(knitr)
# library(tidyr)
# kable(tidy(jarque.bera.test(PE$`40178`)))
# kable(tidy(jarque.bera.test(PE$`40543`)))
# kable(tidy(jarque.bera.test(PE$`40908`)))
# kable(tidy(jarque.bera.test(PE$`41274`)))
# kable(tidy(jarque.bera.test(PE$`41639`)))
# kable(tidy(jarque.bera.test(PE$`42004`)))
# kable(tidy(jarque.bera.test(PE$`42369`)))
# kable(tidy(jarque.bera.test(PE$`42735`)))
Histogram
Jarque-Bera Test
# library(broom)
# library(tseries)
# library(knitr)
# library(tidyr)
# kable(tidy(jarque.bera.test(DP$`40178`)))
# kable(tidy(jarque.bera.test(DP$`40543`)))
# kable(tidy(jarque.bera.test(DP$`40908`)))
# kable(tidy(jarque.bera.test(DP$`41274`)))
# kable(tidy(jarque.bera.test(DP$`41639`)))
# kable(tidy(jarque.bera.test(DP$`42004`)))
# kable(tidy(jarque.bera.test(DP$`42369`)))
# kable(tidy(jarque.bera.test(DP$`42735`)))
Stationarity Test
Three stationarity tests were run per segment.
Stationarity Test on ROE
Stationarity Test on MBV
Stationarity Test on PE
Linear Regression
The linear regression model developed for the study is as follows: \[DPit=β_0+β_1 ROE_it+β_2 MTB_it+β_3 PE_it+ε_it... (1)\]
reg <- lm(ROE$`40178` ~ MBT$`40178`)
reg1 <- lm(ROE$`40178` ~ PE$`40178`)
reg2 <- lm(MBT$`40178`~PE$`40178`)
library(broom)
kable(tidy(summary(reg)))
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | 14.6824560 | 4.348043 | 3.376796 | 0.0017364 |
MBT$40178 |
0.8411271 | 1.126661 | 0.746566 | 0.4600433 |
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | 16.4674653 | 3.5111733 | 4.6900179 | 0.0000366 |
PE$40178 |
0.0221877 | 0.0765439 | 0.2898688 | 0.7735349 |
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | 2.2198186 | 0.4854180 | 4.573004 | 0.0000523 |
PE$40178 |
0.0203509 | 0.0105822 | 1.923133 | 0.0621851 |