股票收益率与现金分红行为之间的关系,及半强制分红政策评价

股票收益率与现金分红行为之间的关系,及半强制分红政策评价

​ 基于中国上市公司分红意愿不强以及分红水平较低的现实背景, 中国证监会从 2001 年起将上市公司再融资资格与股利分配水平相挂钩, 不满足股利分配要求的上市公司将不能进行再融资 。我们将该政策理解为半强制分红。

​ 那么,半强制分红政策对上市公司会产生什么影响呢?本文将会探究半强制分红政策与上市公司的股票收益率之间的关系,从半强制分红政策对股票收益率的影响的角度出发,对半强制分红政策进行评价。

1.准备探究如下两个假设是否正确:

假设一:如果该报告期内股票收益率高,则公司在该报告期会倾向于采取现金分红行为;

假设二:如果上一报告期公司采取了现金分红,那么当前报告期内公司股票收益率较高;

一:首先,对假设一进行分析。

假设一个上市公司有分红的报告期内股票的收益率与无分红的报告期内股票的收益率有显著区别,进行研究。每6个月报告一次,报告期内的收益率即为半年内的收益率。

假设报告期内收益率的取值在分红与否的报告期中都服从正态分布且各个观测数据相互独立;

那么对零假设“分红与否的报告期内的收益率的均值相等” 的检验统计量就可以采用t统计量进行检验。

首先对原始数据进行处理,把各公司分红与否的报告期筛选出来,并合并各公司的报告期数据;

处理公司是否有现金分红的数据集
proc import  out=work.fhyf
			Datafile='D:\mySASDATA\期末大作业\分红数据 修改\分红.xlsx'
			DbmS=xlsx replace;
			getnames=yes;
run;
%macro fhyfcl;/*进行分红数据的处理,有分红的为1,无分红的为0*/
data fhyf1;
set fhyf;
%do i=10 %to 20;
if c&i.='--' or  . then c&i.=0;
else c&i.=1;
if d&i.='--' or . then d&i.=0;
else d&i.=1;
%end;
%mend fhyfcl;
%fhyfcl;
run;
proc sort data=fhyf1;
by var1;
run;
/*收益率中有些股票的数据没有,把这些股票的分红情况删去*/
data fhyf1;
modify fhyf1;
if _n_<=2408 then remove;
run;
对各年度各股票的数据计算收益率并进行汇总
data WORK.sj2010_1;                                                                                    
      %let _EFIERR_ = 0; /* set the ERROR detection macro variable */                                                                    
      infile 'D:\mySASDATA\期末大作业\分红数据 修改\2010.1.csv' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;                      
      informat VAR1 $9. ;                                                                                                           
      informat VAR2 $8. ;                                                                                                              
      informat VAR3 yymmdd10. ;                                                                                                       
      informat VAR4 comma12.0 ;                                                                                                      
      format VAR1 $9. ;                                                                                                             
      format VAR2 $8. ;                                                                                                               
      format VAR3 yymmdd10. ;                                                                                                       
      format VAR4 best12. ;                                                                                                         
      input   VAR1 $  VAR2 $    VAR3      VAR4 ;                                                                                                                                                                                                                                                                                                  
      if _ERROR_ then call symputx('_EFIERR_',1);  /* set ERROR detection macro variable */      
 run; 
%macro sy(x);
data sj20&x.;
modify  sj20&x.;
if var4=.  then remove;
data sj20&x.;
set sj20&x.;
rename var4=close;
year=year(var3);
month=month(var3);
proc sort data=sj20&x.;
by var1 year month;
data sj20&x.;
set sj20&x.;
by var1 year month;
if last.var1=1 or first.var1=1;
data sj20&x.;
set sj20&x.;
by var1;
lag_close=lag(close);
a=first.var1;
if first.var1 then lag_close='.';
r_pct=(close-lag_close)/lag_close;
data  sj20&x.;
modify  sj20&x.;
if a=1  then remove;
data sj20&x.;
set sj20&x.;
keep var1 var2 close year month lag_close r_pct;
%mend sy;
%sy(10_1);
run;
proc import out=WORK.sj2010_7                                                                               
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2010.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(10_7);
run;
proc import out=WORK.sj2011_1                                                                               
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2011.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(11_1);
run;
data WORK.sj2011_7;                                                                                    
      %let _EFIERR_ = 0; /* set the ERROR detection macro variable */                                                                    
      infile 'D:\mySASDATA\期末大作业\分红数据 修改\2011.7.csv' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;                      
      informat VAR1 $9. ;                                                                                                           
      informat VAR2 $8. ;                                                                                                              
      informat VAR3 yymmdd10. ;                                                                                                       
      informat VAR4 comma12.0 ;                                                                                                      
      format VAR1 $9. ;                                                                                                             
      format VAR2 $8. ;                                                                                                               
      format VAR3 yymmdd10. ;                                                                                                       
      format VAR4 best12. ;                                                                                                         
      input   VAR1 $  VAR2 $    VAR3      VAR4 ;                                                                                                                                                                                                                                                                                                  
      if _ERROR_ then call symputx('_EFIERR_',1);  /* set ERROR detection macro variable */      
 run; 
%sy(11_7);
run;
proc import out=WORK.sj2012_1                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2012.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(12_1);
run;
proc import out=WORK.sj2012_7                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2012.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(12_7);
run;
proc import out=WORK.sj2013_1                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2013.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(13_1);
run;
proc import out=WORK.sj2013_7                                                                          
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2013.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(13_7);
run;
proc import out=WORK.sj2014_1                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2014.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(14_1);
run;
proc import out=WORK.sj2014_7                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2014.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(14_7);
run;
proc import out=WORK.sj2015_1                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2015.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(15_1);
run;
proc import out=WORK.sj2015_7                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2015.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(15_7);
run;
proc import out=WORK.sj2016_1                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2016.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(16_1);
run;
proc import out=WORK.sj2016_7                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2016.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(16_7);
run;
proc import out=WORK.sj2017_1                                                                           
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2017.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(17_1);
run;
proc import out=WORK.sj2017_7                                                                          
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2017.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(17_7);
run;
proc import out=WORK.sj2018_1                                                                          
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2018.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(18_1);
run;
proc import out=WORK.sj2018_7                                                                        
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2018.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(18_7);
run;
proc import out=WORK.sj2019_7                                                                        
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2019.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(19_7);
run;
data WORK.sj2019_1;                                                                                    
      %let _EFIERR_ = 0; /* set the ERROR detection macro variable */                                                                    
      infile 'D:\mySASDATA\期末大作业\分红数据 修改\2019.1.csv' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;                      
      informat VAR1 $9. ;                                                                                                           
      informat VAR2 $8. ;                                                                                                              
      informat VAR3 yymmdd10. ;                                                                                                       
      informat VAR4 comma12.0 ;                                                                                                      
      format VAR1 $9. ;                                                                                                             
      format VAR2 $8. ;                                                                                                               
      format VAR3 yymmdd10. ;                                                                                                       
      format VAR4 best12. ;                                                                                                         
      input   VAR1 $  VAR2 $    VAR3      VAR4 ;                                                                                                                                                                                                                                                                                                  
      if _ERROR_ then call symputx('_EFIERR_',1);  /* set ERROR detection macro variable */      
 run; 
%sy(19_1);
run;
proc import out=WORK.sj2020_1                                                                      
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2020.1.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(20_1);
run;
proc import out=WORK.sj2020_7                                                                      
    Datafile='D:\mySASDATA\期末大作业\分红数据 修改\2020.7.xlsx'                    
    DbmS=xlsx replace;
	getnames=yes;
run;
%sy(20_7);
run;
data hz;
set sj2010_1 sj2010_7 sj2011_1 sj2011_7 sj2012_1 sj2012_7 sj2013_1 sj2013_7 
sj2014_1 sj2014_7 sj2015_1 sj2015_7 sj2016_1 sj2016_7 sj2017_1 sj2017_7 sj2018_1 sj2018_7 sj2019_1 sj2019_7 sj2020_1 sj2020_7;
run;
proc sort data=hz;
by var1 year month;
run;

分红数据与收益率数据的拼接

%macro sjzl;
%do i=10 %to 20;
data a&i.; set fhyf1; year=2000+&i.;month=6; keep var1 var2 c&i.  year month ;rename c&i.= fhyf;run;
data b&i.; set fhyf1; year=2000+&i.;month=12; keep var1 var2 d&i.  year month ;rename d&i.= fhyf;run;
%end;
%mend sjzl;
%sjzl;
run;
data fhyfsj;
set a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 b10 b11 b12 b13 b14 b15 b16 b17 b18 b19 b20;
run;
proc sort data=fhyfsj;
by var1 year month;
run;
data fhyfsj;
set fhyfsj;
label fhyf="fhyf";
run;
data hzsj;
merge hz fhyfsj;
by var1 year month ;
run;
data hzsj;
modify hzsj;
if close=. or fhyf=. then remove;
run;
proc contents data=hzsj;
run;
判断有无现金分红两种情况下的股票的收益率是否满足正态分布

1.对不进行现金分红的股票进行验证

data hzsj0;
set hzsj;
run;
data hzsj0;
modify hzsj0;
if fhyf=1 then remove;
run;
proc means data=hzsj0;
var r_pct;
run;
/*得到其均值为0.0642490 标准差为0.4412867 最小值为-0.8563339 最大值为12.0952381 */
proc sort data=hzsj0;
by r_pct;
run;
proc contents data=hzsj0;
run;
/*得到该数据集有16067个观测*/
data hzsj0a;
set hzsj0;
p1=_n_/16067;
p2=probnorm((r_pct-0.0642490)/0.4412867 );/*计算每个观测所对应的正态分布概率*/
run;
proc gplot data=hzsj0a;
plot p1*r_pct p2*r_pct/overlay vaxis=axis1 haxis=axis2 vref=1;
symbol11 v=. h=1 I=join L=1 font=swissb c=red h=1;
symbol12 v=none I=join L=1 c=blue;
axis1 label=('prob') order=(0 to 1 by 0.1);
axis2 label=('r_pct') order=(-0.9 to 12.1 by 1);
run;
quit;
image-20210529215703760

由上图可以得到不进行现金分红的股票收益率大体满足正态分布

2.对进行现金分红的股票进行验证

data hzsj1;
set hzsj;
run;
data hzsj1;
modify hzsj1;
if fhyf=0 then remove;
run;
proc means data=hzsj1;
var r_pct;
run;
/*得到其均值为0.0825653标准差为0.4732710 最小值为-0.6722616 最大值为16.0056497 */
proc sort data=hzsj1;
by r_pct;
run;
proc contents data=hzsj1;
run;
/*得到该数据集有9130个观测*/
data hzsj1a;
set hzsj1;
p1=_n_/9130;
p2=probnorm((r_pct-0.0825653)/0.4732710 );/*计算每个观测所对应的正态分布概率*/
run;
proc gplot data=hzsj1a;
plot p1*r_pct p2*r_pct/overlay vaxis=axis1 haxis=axis2 vref=1;
symbol11 v=. h=1 I=join L=1 font=swissb c=red h=1;
symbol12 v=none I=join L=1 c=blue;
axis1 label=('prob') order=(0 to 1 by 0.1);
axis2 label=('r_pct') order=(-0.7 to 16.1 by 1);
run;
quit;
image-20210529215924301

由上图可以得到进行现金分红的股票收益率大体满足正态分布

进行T检验
data hzsjjh;
set hzsj;
keep r_pct fhyf;
run;
proc ttest cochran data=hzsjjh;
class fhyf;
run;

对是否现金分红的检验结果

image-20210529220154575
结论:从上图中可以知道,在当前报告期内有现金分红的股票收益率的均值在0.05的显著性水平下与无现金分红的股票收益率显著不相等,且明显大于无现金分红的股票收益率。在一定程度上,我们可以认为收益率高的股票更倾向于现金分红。也可以发现,收益率高的股票标准差较大,说明收益率高的股票波动性较大。
二:然后,对假设二进行分析。

对数据集hzsj 进行处理,区别出上一报告期有无分红,然后进行对两种类别的股票当期收益率的均值是否相等进行T检验;

data hzcl;
set hzsj;
by var1;
lag_fhyf=lag(fhyf);
b=first.var1;
if first.var1  then lag_fhyf='.';
run;
data hzcl;
set hzcl;
if lag_fhyf=0 then a=-2;
if lag_fhyf=1 then a=2;
run;
data hzcl;
modify hzcl;
if lag_fhyf=. then remove;
run;
data hzcljh;
set hzcl;
keep r_pct  a;
run;
proc ttest cochran data=hzcljh;
class a;
run;
image-20210529220353454

根据以上结果,可以发现在0.05的显著性水平下,不能拒绝上一报告期有现金分红的股票的收益率与上一报告期无现金分红的股票的收益率均值相等的假设。所以,上一报告期有现金分红的股票的收益率不显著大于上一报告期无现金分红的股票的收益率。

结论:上一报告期是否分红对当期的收益率影响不大;

进一步分析连续两个报告期(上一报告期与当前报告期)无现金分红对股票收益率的影响;

对数据集hzcl进一步进行处理;

data hzcl1;
set hzcl;
if lag_fhyf=0 and fhyf=0 then a=-2;
else  a=2;
run;
data hzcljh1;
set hzcl1;
keep r_pct  a;
run;
proc ttest cochran data=hzcljh1;
class a;
run;
image-20210529221431575

结论:连续两个报告期(上一报告期与当前报告期)无现金分红对股票收益率均值的影响不显著;

进一步分析连续两个报告期(上一报告期与当前报告期)有现金分红的股票收益率与连续两个报告期(上一报告期与当前报告期)无现金分红的股票收益率的区别

对数据集hzcl进一步进行处理;

data hzcl2;
set hzcl;
if fhyf=1 and lag_fhyf=1 then a=2;
if lag_fhyf=0 then a=-2;
if  fhyf=1 and lag_fhyf=0 then a=0;
run;
data hzcl2;
modify hzcl2;
if a=0  then remove;
run;
data hzcljh2;
set hzcl2;
keep r_pct  a;
run;
proc ttest cochran data=hzcljh2;
class a;
run;
image-20210529221534897

结论:连续两个报告期(上一报告期与当前报告期)有现金分红的股票收益率与连续两个报告期(上一报告期与当前报告期)无现金分红的股票收益率之间的差异在显著性水平为0.05的条件下不显著;

根据以上分析,可以得到如果该报告期内股票收益率高,则公司在该报告期会倾向于采取现金分红行为;但是公司所采取的现金分红行为,对下一报告期的股票收益率的影响十分有限,并不显著。

2.对半强制分红政策的评价:

​ 半强制分红政策也许能使得公司的经营更加规范,便于监管者管理,在一定程度上保护投资者利益。半强制分红政策对于引导和规范上市公司分红行为以及保护投资者利益具有积极的意义, 但其局限性亦不容忽视。股市本就是风险由投资者自担,企业只要做到合法经营就行了。并且经过以上分析,半强制政策的实施对公司股票的收益率并无显著影响。这可能是由于半强制分红对企业的现金流管理,再融资等造成了困难。不同的企业的情况本就存在着很大差异,该项政策也没有考虑到企业的自身情况。

​ 但从另一个角度来看,股票收益率高的企业倾向于现金分红,这也许是企业的自身战略,也可能是半强制分红所起的作用,半强制分红对这些企业还是有较好的规范作用的。

​ 总之,仅通过目前的半强制分红政策来规范公司的行为是不太合理的,该政策有待仅一步细分,根据不同类型的公司作出相应的规定,可能会达到比较好的效果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
DividendStock类是一个派生自Stock类的子类,用于表示拥有分红功能的股票。与Stock类不同的是,DividendStock类增加了一个记录分红的字段dividends,并重写了父类的getProfit方法,以计算包括分红在内的利润。 在DividendStock类中,有以下主要特点: 1. 增加了一个私有的double类型数据域dividends,用于记录分红。 2. 重写了父类Stock的getProfit方法,将分红纳入计算利润的范围。 3. 增加了一个方法payDividend,用于计算并设置分红的数量。 通过创建DividendStock对象,可以实现分红股票的功能。例如,创建一个名为"Oracle"的分红股票,先后以32元和40元的价格购买200股和350股,每股分红为2.8元,当前价格为50元。可以通过调用payDividend方法传入每股分红的数量来计算并设置分红金额。然后,可以通过调用getProfit方法获取股票的利润,该利润已经包括了分红部分的计算。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Java面向对象: Stock类及其子类](https://blog.csdn.net/m0_46695871/article/details/117532515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [设计一个Stock类和DividendStock类 - 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了...](https://blog.csdn.net/m0_47256162/article/details/109955220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值