股票数据的日历效应:星期效应

股票数据的日历效应(一):星期效应

完整代码和数据可关注gzh’finance褪黑素’回复关键词 【2001】 免费+无套路 获取!

1. 获取数据

import baostock as bs
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime, date
# 登陆系统
import baostock as bs
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime, date
lg = bs.login()
code = 'sz.399006' 
start = '2018-01-01'
end = '2023-1-01'
# 获取指数基金指数历史数据
# 沪深300指数
hs300_price = bs.query_history_k_data_plus(code, "date,code,open,high,low,close,preclose,pctChg",
              start_date=start, end_date=end, frequency="d")
# 整合为DataFrame格式
data_list = []
while (hs300_price.error_code == '0') & hs300_price.next():
    data_list.append(hs300_price.get_row_data())
hs300 = pd.DataFrame(data_list, columns=hs300_price.fields)
hs300.to_csv('hs30.csv')
hs300.to_excel('hs30.xlsx')
login success!


hs300.to_excel('hs30.xlsx')
hs300=pd.read_csv('hs30.csv',index_col='date')
del hs300['code']
hs300.head()
df=hs300['close']
plt.rcParams['font.sans-serif'] = ['simhei'] #字体为黑体
plt.rcParams['axes.unicode_minus'] = False #正常显示负号 #时序图的绘制

df.plot()
plt.xticks(rotation=45) #坐标角度旋转
plt.xlabel('日期') #横、纵坐标以及标题命名
plt.ylabel('收盘价')
plt.title('沪深300收盘价',loc='center')
plt.grid()
plt.legend()
plt.savefig("hs300_close.svg")
plt.show()

在这里插入图片描述

2. 描述性统计分析

基本指标介绍:

  1. 平均值(Mean):

    • 公式: Mean = ∑ i = 1 n x i n \text{Mean} = \frac{\sum_{i=1}^{n} x_i}{n} Mean=ni=1nxi
    • 解释: 所有数据点的总和除以观测次数。
  2. 中位数(Median):

    • 公式: 对数据进行排序,中间位置的值即为中位数。
    • 解释: 将数据按升序或降序排列,中间位置的值即为中位数。
  3. 标准差(Standard Deviation):

    • 公式: σ = ∑ i = 1 n ( x i − Mean ) 2 n \sigma = \sqrt{\frac{\sum_{i=1}^{n} (x_i - \text{Mean})^2}{n}} σ=ni=1n(xiMean)2
    • 解释: 衡量数据点与平均值的偏离程度,标准差越大,数据分散越广。
  4. 方差(Variance):

    • 公式: Variance = ∑ i = 1 n ( x i − Mean ) 2 n \text{Variance} = \frac{\sum_{i=1}^{n} (x_i - \text{Mean})^2}{n} Variance=ni=1n(xiMean)2
    • 解释: 标准差的平方,表示数据偏离平均值的程度。
  5. 百分位数(Percentiles):

    • 公式: P k = k ( n + 1 ) 100 P_k = \frac{k(n+1)}{100} Pk=100k(n+1) ,其中 k k k 是百分位数的百分比。
    • 解释: 将数据排序并将其分为百分比,描述给定百分比以下的数据点的值。
  6. 四分位数(Quartiles):

    • 公式: 第一四分位数 Q 1 Q_1 Q1,中位数 Q 2 Q_2 Q2,第三四分位数 Q 3 Q_3 Q3
    • 解释: 将数据分为四个等份,通常用来检测数据分布的形状。
  7. 偏度(Skewness):

    • 公式: Skewness = ∑ i = 1 n ( x i − Mean σ ) 3 n \text{Skewness} = \frac{\sum_{i=1}^{n} \left(\frac{x_i - \text{Mean}}{\sigma}\right)^3}{n} Skewness=ni=1n(σxiMean)3
    • 解释: 衡量数据分布的偏斜程度。
  8. 峰度(Kurtosis):

    • 公式: Kurtosis = ∑ i = 1 n ( x i − Mean σ ) 4 n − 3 \text{Kurtosis} = \frac{\sum_{i=1}^{n} \left(\frac{x_i - \text{Mean}}{\sigma}\right)^4}{n} - 3 Kurtosis=ni=1n(σxiMean)43
    • 解释: 衡量数据分布的尖锐或平缓程度。
  9. Jarque-Bera统计量。JB统计量主要用于检验一个样本是否符合正态分布,特别是对于大样本。

    JB统计量的计算公式为:

    J B = n 6 ( S 2 + ( K − 3 ) 2 4 ) JB = \frac{n}{6} \left( S^2 + \frac{(K-3)^2}{4} \right) JB=6n(S2+4(K3)2)

    其中,(n) 是样本大小,(S) 是偏度,(K) 是峰度。

    在零假设下(假设数据是正态分布的),JB统计量应该近似服从卡方分布,因此可以进行卡方检验。检验的原假设是数据是正态分布的,如果JB统计量的值显著大于期望的卡方分布的临界值,就会拒绝这一假设,意味着数据不服从正态分布。

    在实际应用中,如果对数据正态性的检验结果为拒绝原假设,则可能需要谨慎解释和处理数据,尤其是在使用依赖于正态性的统计方法时。如果接受原假设,则可以在统计分析中使用正态性假设。

# from pandas_datareader import data
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 导入数据
hs300 =pd.read_csv("hs30.csv")
del hs300['code']
# 标准化数据格式
hs300["dates"]=pd.to_datetime(hs300["date"])
# 获取星期几的数据
hs300["weekday"] = hs300["dates"].dt.day_name()
# 星期字符串转换成数值
days ={'Monday':1,'Tuesday':2,'Wednesday':3,'Thursday':4,'Friday':5}
hs300["weekday"] = hs300["weekday"].apply(lambda x: days[x])
# 计算对数收益率
hs300_close=hs300['close']
hs300_lgreturn=np.log(hs300_close)-np.log(hs300_close.shift(1))
# 计算收益率
hs300_return=hs300_close/hs300_close.shift(1)
# 分组描述
df1=pd.DataFrame(hs300_lgreturn.groupby(hs300["weekday"]).describe()) 
df2=pd.DataFrame(hs300_lgreturn.describe())
df3=pd.DataFrame(np.array(df2).reshape(1,8))
df3.columns=['count','mean','std','min','25%','50%','75%','max']
df3.index=['All']
hh=pd.concat([df1,df3],axis=0)
hh
# 偏度、峰度、标准差、J-B统计量
import numpy as np
import scipy.stats as stats

def self_JBtest(y):
    # 样本规模n
    n = y.size
    y_ = y - y.mean()
    """
    M2:二阶中心钜
    skew 偏度 = 三阶中心矩 与 M2^1.5的比
    krut 峰值 = 四阶中心钜 与 M2^2 的比
    """
    M2 = np.mean(y_**2)
    skew =  np.mean(y_**3)/M2**1.5
    krut = np.mean(y_**4)/M2**2

    """
    计算JB统计量,以及建立假设检验
    """
    JB = n*(skew**2/6 + (krut-3 )**2/24)
    pvalue = 1 - stats.chi2.cdf(JB,df=2)
    data={'偏度':skew,'峰值':krut,'JB检验':JB,'P值':pvalue}
    data1=pd.DataFrame(data,index=[1])
    return data1
a1=pd.DataFrame()
a2=self_JBtest(hs300_lgreturn)
a2.index=['All']
for i in range(1,6):
    data=hs300[hs300['weekday']==i]
    w_close=data["close"]
    ret = np.log(w_close) - np.log(w_close.shift(1))  # 这里用对数收益率,因为对数收益率的统计特性比较好
    a=self_JBtest(ret)
    a1=pd.concat([a,a1],axis=0)
a1.index=[1,2,3,4,5]
result=pd.concat([a1,a2])
result
ds=pd.concat([result,hh],axis=1)
del ds['25%']
del ds['50%']
del ds['75%']
ds1=pd.DataFrame()
for i in range(6):
    ds0=pd.DataFrame(np.array(ds[i:i+1]).reshape(9,1))
    ds1=pd.concat([ds1,ds0],axis=1)
ds1.columns=['Monday','Tuesday','Wednesday','Thursday','Friday','All']
ds1.index=ds.columns
ds1
MondayTuesdayWednesdayThursdayFridayAll
偏度0.011566-0.151217-5.523671e-01-0.3231760.043572-0.249467
峰值3.2624693.9568994.541166e+003.4024073.1361294.109590
JB检验0.69714310.3649633.700504e+015.8936440.25689774.931360
P值0.7056950.0056149.214204e-090.0525060.8794590.000000
count236.000000243.0000002.470000e+02247.000000241.0000001214.000000
mean0.0020050.001620-1.016630e-03-0.001022-0.0003360.000232
std0.0220070.0160631.673080e-020.0163650.0176090.017873
min-0.082707-0.059298-4.919148e-02-0.065055-0.063340-0.082707
max0.0535260.0472665.370838e-020.0518460.0470390.053708

3. 可视化收益率序列

绘制总体收益率图以及周一到周五的收益率序列

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns     #seaborn画出的图更好看,且代码更简单,缺点是可塑性差
from statsmodels.graphics.tsaplots import plot_acf  #自相关图
from statsmodels.tsa.stattools import adfuller as ADF  #平稳性检测
from statsmodels.graphics.tsaplots import plot_pacf    #偏自相关图
from statsmodels.stats.diagnostic import acorr_ljungbox    #白噪声检验
from statsmodels.tsa.arima_model import ARIMA
#seaborn 是建立在matplotlib之上的

#jupyter中文显示是方框,加入下面两行即可显示中文,若嫌麻烦,也可去网上搜索如何永久显示中文
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
plt.rcParams['figure.figsize'] = (10, 6)   #设置输出图片大小
sns.set(color_codes=True) #seaborn设置背景
# 计算对数收益率

hs300_close=hs300['close']
hs300_lgreturn=np.log(hs300_close)-np.log(hs300_close.shift(1))
# print(hs300_close.head())
hs300_lgreturn.plot(grid=True).axhline(y=0,c="orange",ls="--",lw=2)
plt.show()

在这里插入图片描述

for i in range(1,6):
    bel=['Monday','Tuesday','Wednesday','Thursday','Friday']
    fig, ax = plt.subplots()
    plt.axhline(y=0,c="orange",ls="--",lw=2)
    data=hs300[hs300['weekday']==i]
    w_close=data["close"]
    ret = np.log(w_close) - np.log(w_close.shift(1))  # 这里用对数收益率,因为对数收益率的统计特性比较好
    y=ret
    ax.plot(y, linewidth=2.0,label=bel[i-1])
    ax.legend() 
    plt.grid()
   # save=['w1.svg','w2.svg','w3.svg','w4.svg','w5.svg'] #保存为svg格式的图形
   # plt.savefig(save[i-1])
    plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 虚拟变量回归

当涉及到星期效应的回归分析时,我们同样可以使用虚拟变量回归来处理。假设我们有一个表示星期的分类变量,通常用1到7表示周一到周日。我们可以创建6个虚拟变量,每个对应一个工作日(周一到周五),如下所示:

D 1 , D 2 , D 3 , D 4 , D 5 D_1, D_2, D_3, D_4, D_5 D1,D2,D3,D4,D5

这里, D i D_i Di 表示是否是星期 i i i,取值为:

D i = { 1 , if 当前天是星期  i 0 , otherwise D_i = \begin{cases} 1, & \text{if 当前天是星期 } i \\ 0, & \text{otherwise} \end{cases} Di={1,0,if 当前天是星期 iotherwise

然后,我们的回归模型可能如下:

Y = β 0 + β 1 D 1 + β 2 D 2 + β 3 D 3 + β 4 D 4 + β 5 D 5 + … + ϵ Y = \beta_0 + \beta_1 D_1 + \beta_2 D_2 + \beta_3 D_3 + \beta_4 D_4 + \beta_5 D_5 + \ldots + \epsilon Y=β0+β1D1+β2D2+β3D3+β4D4+β5D5++ϵ

这里, β 0 \beta_0 β0 是截距, β 1 , β 2 , … , β 5 \beta_1, \beta_2, \ldots, \beta_5 β1,β2,,β5是相应虚拟变量的回归系数, ϵ \epsilon ϵ 是误差项。

通过检验每个虚拟变量的回归系数,你可以评估每个工作日对因变量的影响。例如,如果 β 1 \beta_1 β1 是显著的正值,说明星期一对因变量有正向影响;如果 β 2 \beta_2 β2 是显著的负值,说明星期二对因变量有负向影响,以此类推。

import statsmodels.api as sm
# 设置虚拟变量
all_data = []
for x in hs300["weekday"]:
    item={
    "Mon": 1 if x==1 else 0,
    "Tue": 1 if x==2 else 0,
    "Wens": 1 if x==3 else 0,
    "Thus": 1 if x==4 else 0,
    "Fri": 1 if x==5 else 0
    }
    all_data.append(item)
all_data = pd.DataFrame(data=all_data)
r=pd.DataFrame(hs300_lgreturn)
X=all_data[['Mon','Tue','Wens','Thus','Fri']]
X.index = r.index
df=pd.concat([r,X],axis=1)
# 处理空值
import missingno
# missingno.matrix(df)
# 直接剔除
df = df.dropna()
missingno.matrix(df)
plt.savefig("dropno.svg")
plt.show()

在这里插入图片描述

X=df[['Mon','Tue','Wens','Thus','Fri']]
Y=df[["close"]]
from statsmodels.compat import scipy
import statsmodels.api as sm
X2 = sm.add_constant(X)
est = sm.OLS(Y*100, X2).fit()
print(est.summary())
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                  close   R-squared:                       0.005
Model:                            OLS   Adj. R-squared:                  0.002
Method:                 Least Squares   F-statistic:                     1.616
Date:                Sat, 27 May 2023   Prob (F-statistic):              0.168
Time:                        03:23:37   Log-Likelihood:                -2423.8
No. Observations:                1214   AIC:                             4858.
Df Residuals:                    1209   BIC:                             4883.
Df Model:                           4                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0208      0.043      0.488      0.626      -0.063       0.105
Mon            0.1796      0.104      1.726      0.085      -0.025       0.384
Tue            0.1411      0.103      1.373      0.170      -0.061       0.343
Wens          -0.1225      0.102     -1.200      0.231      -0.323       0.078
Thus          -0.1230      0.102     -1.204      0.229      -0.323       0.077
Fri           -0.0544      0.103     -0.527      0.598      -0.257       0.148
==============================================================================
Omnibus:                       48.158   Durbin-Watson:                   1.994
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               89.286
Skew:                          -0.285   Prob(JB):                     4.09e-20
Kurtosis:                       4.200   Cond. No.                     1.02e+15
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 1.41e-27. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular.

结果分析:
根据上述结果,可以看出周一到周五的系数都存在,其中周一周二的系数为正,说明在一定程度上可能存在正的日历效应;周三周四周五的系数为负,说明在一定程度上存在负的日历效应。但是周一至周五的回归系数t检验的P值都大于0.05,说明接受原假设,该模型不显著。回归方程R2的值为0.005,说明该模型的拟合效果不佳,有待进一步提高。

5.使用arch-garch进行波动性消除以进一步验证星期效应的稳健性

参考文献《中国股市日历效应研究 :基于滚动样本检验的方法》,运用基于 GED 分布的 GARCH(1 , 1)模型, 专

注于研究在不同长度窗口时, 星期效应存在的稳健性。

对于金融时间序列,波动率往往具有以下特征:

(1)存在波动率聚集现象。 即波动率在一段时间上高,一段时间上低。

(2)波动率以连续时间变化,很少发生跳跃

(3)波动率不会发散到无穷,波动率往往是平稳的

(4)波动率对价格大幅上升和大幅下降的反应是不同的,这个现象为杠杆效应

建立arch-garch模型进行收益率序列的波动率修正

5.1 查看收益率序列情况

# data=hs300['pctChg']
data=df["close"]*100
data.plot(grid=True)
plt.legend()
plt.savefig("revenue.svg")

在这里插入图片描述

5.2 利用混成检验(Ljung-Box),检验序列 { a t 2 a_t^2 at2} 的相关性,来判断是否具有ARCH效应

计算均值方程残差:
a t = r t − μ t a_t=r_t- \mu_t at=rtμt
画出残差及残差的平方

at = data -  model.fittedvalues
at2 = np.square(at)
plt.figure(figsize=(10,6))
plt.subplot(211)
plt.plot(at,label = 'at')

plt.legend()
plt.subplot(212)
plt.plot(at2,label='at^2')

plt.legend(loc=0)
plt.savefig("at2.svg")

在这里插入图片描述

然后对{ a t 2 a_t^2 at2}序列进行混成检验: 原假设H0:序列没有相关性,备择假设H1:序列具有相关性

m = 15 # 我们检验15个自相关系数
acf,q,p = sm.tsa.acf(at2,nlags=m,qstat=True)  ## 计算自相关系数 及p-value
out = np.c_[range(1,16), acf[1:], q, p]
output=pd.DataFrame(out, columns=['lag', "AC", "Q", "P-value"])
output = output.set_index('lag')
output

p-value小于显著性水平0.05,我们拒绝原假设,即认为序列具有相关性。因此具有ARCH效应。

fig = plt.figure(figsize=(10,5))
ax1=fig.add_subplot(111)
fig = sm.graphics.tsa.plot_pacf(at2,lags = 30,ax=ax1)
plt.savefig("arch.svg")

在这里插入图片描述

import arch

可以用{ a t 2 a_t^2 at2}序列的偏自相关函数PAC来确定阶次,由上面的图我们可以定为7阶

train = data[:-10]
test = data[-10:]
am = arch.arch_model(train,mean='AR',lags=0,vol='ARCH',p=7) 
res = am.fit()
res.summary()
AR - ARCH Model Results
Dep. Variable:close R-squared: 0.000
Mean Model:AR Adj. R-squared: 0.000
Vol Model:ARCH Log-Likelihood: -2410.30
Distribution:Normal AIC: 4826.60
Method:Maximum Likelihood BIC: 4841.88
No. Observations: 1204
Date:Sat, May 27 2023 Df Residuals: 1203
Time:03:24:33 Df Model: 1
Mean Model
coefstd errtP>|t|95.0% Conf. Int.
Const 0.02355.132e-02 0.457 0.648[-7.713e-02, 0.124]
Volatility Model
coefstd errtP>|t|95.0% Conf. Int.
omega 3.1776 0.183 17.3631.581e-67[ 2.819, 3.536]
alpha[1]9.9298e-032.696e-02 0.368 0.713[-4.292e-02,6.278e-02]

Covariance estimator: robust

r t = 0.086676 + 0.042566 a t − 0.007013 a t − 1 + 0.024126 a t − 2 − 0.020781 a t − 3 − 0.046320 a t − 4 − 0.071373 a t − 5 + 0.051107 a t − 6 r_t=0.086676+0.042566a_t-0.007013a_{t-1}+0.024126a_{t-2}-0.020781a_{t-3}-0.046320a_{t-4}-0.071373a_{t-5}+0.051107a_{t-6} rt=0.086676+0.042566at0.007013at1+0.024126at20.020781at30.046320at40.071373at5+0.051107at6
σ 2 = 1.308054 + 0.185033 a t − 1 2 + 0.087033 a t − 2 2 \sigma^2=1.308054+0.185033a_{t-1}^2+0.087033a_{t-2}^2 σ2=1.308054+0.185033at12+0.087033at22
对上述模型,我们可以看出,上证指数的日收益率期望大约在0.%。 模型的R-squared较小,拟合效果一般。

ARCH模型的预测

res.hedgehog_plot()
plt.savefig("hedgehog.svg")


在这里插入图片描述

可以看出,虽然具体值差距挺大,但是均值和方差的变化相似。

5.3 GARCH模型与波动率预测

GARCH(m,s)的定阶较难,一般使用低阶模型如GARCH(1,1),GARCH(2,1),GARCH(1,2)等。
下面我们以之前的数据为例,构建GARCH模型,均值方程为AR(7)模型,波动率模型为GARCH(1,1)

am = arch.arch_model(y=data,x=X,mean='LS',lags=0,vol='GARCH') 
res1 = am.fit()
res1.summary()
Least Squares - GARCH Model Results
Dep. Variable:close R-squared: 0.004
Mean Model:Least Squares Adj. R-squared: -0.000
Vol Model:GARCH Log-Likelihood: -2395.71
Distribution:Normal AIC: 4809.41
Method:Maximum Likelihood BIC: 4855.33
No. Observations: 1214
Date:Sat, May 27 2023 Df Residuals: 1208
Time:03:24:50 Df Model: 6
Mean Model
coefstd errtP>|t|95.0% Conf. Int.
Const 0.03164.947e-02 0.639 0.523[-6.537e-02, 0.129]
Mon 0.2166 0.134 1.619 0.105[-4.559e-02, 0.479]
Tue 0.12469.989e-02 1.247 0.212[-7.118e-02, 0.320]
Wens -0.2264 0.112 -2.0244.301e-02[ -0.446,-7.121e-03]
Thus -0.03516.651e-02 -0.528 0.598[ -0.165,9.525e-02]
Fri -0.04809.643e-02 -0.498 0.618[ -0.237, 0.141]
Volatility Model
coefstd errtP>|t|95.0% Conf. Int.
omega 0.13275.085e-02 2.6109.060e-03[3.304e-02, 0.232]
alpha[1] 0.07341.776e-02 4.1353.554e-05[3.863e-02, 0.108]
beta[1] 0.88642.356e-02 37.6306.861e-310[ 0.840, 0.933]

Covariance estimator: robust

σ 2 = 0.096793 + 0.132097 a t − 1 2 + 0.821024 σ t − 1 2 \sigma^2= 0.096793+ 0.132097a_{t-1}^2+ 0.821024\sigma_{t-1}^2 σ2=0.096793+0.132097at12+0.821024σt12

am = arch.arch_model(y=data,x=X,mean='LS',lags=0,vol='GARCH') 
res1 = am.fit()
res1.plot()
plt.plot(data)
plt.savefig("residuals.svg")

在这里插入图片描述

观察上图,第一张图为标准化残差,近似平稳序列,说明模型在一定程度上是正确的;

第二张图,绿色为原始收益率序列、蓝色为条件异方差序列,可以发现条件异方差很好得表现出了波动率。

am = arch.arch_model(y=data,x=X,mean='AR',lags=0,vol='GARCH') 
res1 = am.fit()
res1.summary()
AR - GARCH Model Results
Dep. Variable:close R-squared: 0.000
Mean Model:AR Adj. R-squared: 0.000
Vol Model:GARCH Log-Likelihood: -2400.75
Distribution:Normal AIC: 4809.51
Method:Maximum Likelihood BIC: 4829.91
No. Observations: 1214
Date:Sat, May 27 2023 Df Residuals: 1213
Time:03:25:00 Df Model: 1
Mean Model
coefstd errtP>|t|95.0% Conf. Int.
Const 0.03494.744e-02 0.737 0.461[-5.803e-02, 0.128]
Volatility Model
coefstd errtP>|t|95.0% Conf. Int.
omega 0.12804.960e-02 2.5829.835e-03[3.083e-02, 0.225]
alpha[1] 0.06841.620e-02 4.2222.420e-05[3.664e-02, 0.100]
beta[1] 0.89292.225e-02 40.1360.000[ 0.849, 0.936]


Covariance estimator: robust

res1.hedgehog_plot()
plt.savefig("heg2.svg")

在这里插入图片描述

观察拟合图发现,在方差的还原上还是不错的

6. 利用修正的数据再次进行OLS回归检验稳健性

Y=res.conditional_volatility
df=pd.concat([Y,X2],axis=1)
missingno.matrix(df)
plt.show()
df = df.dropna()
df=df.values
X=df[:,1:7]
Y=df[:,0]
from statsmodels.compat import scipy
import statsmodels.api as sm
est2 = sm.OLS(Y, X).fit()
print(est2.summary())

在这里插入图片描述

P值均小于0.05 说明模型参数是显著的 存在影响,当前星期效应是初步存在的。但R2依然不高 后续可考虑使用滚动样本检验进一步进行稳健性分析。

参考文献:
[1]张兵.中国股市日历效应研究:基于滚动样本检验的方法[J].金融研究,2005(07):33-44.
[2]焦璇琨,李从欣.中国股票市场周内效应的实证研究[J].统计与管理,2020,35(02):64-68.DOI:10.16722/j.issn.1674-537x.2020.02.012.

完整代码和数据可关注gzh’finance褪黑素’回复关键词【2001】免费+无套路 获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值