首页 > 其他分享 >R使用LASSO回归预测股票收益

R使用LASSO回归预测股票收益

时间:2024-04-28 17:45:50浏览次数:24  
标签:预测 股票 回归 LASSO 模型 变量

原文链接:http://tecdat.cn/?p=4228

原文出处:拓端数据部落公众号

 

使用LASSO预测收益

1.示例

只要有金融经济学家,金融经济学家一直在寻找能够预测股票收益的变量。对于最近的一些例子,想想Jegadeesh和Titman(1993),它表明股票的当前收益是由前几个月的股票收益预测的,侯(2007),这表明一个行业中最小股票的当前回报是通过行业中最大股票的滞后回报预测,以及Cohen和Frazzini(2008),这表明股票的当前回报是由其主要客户的滞后回报预测的。

两步流程。当你考虑它时,找到这些变量实际上包括两个独立的问题,识别和估计。首先,你必须使用你的直觉来识别一个新的预测器,然后你必须使用统计来估计这个新的预测器的质量:

但是,现代金融市场庞大。可预测性并不总是发生在易于人们察觉的尺度上,使得解决第一个问题的标准方法成为问题。例如,联邦信号公司的滞后收益率是2010 年10月一小时内所有纽约证券交易所上市电信股票的重要预测指标。你真的可以从虚假的预测指标中捕获这个特定的变量吗?

2.使用LASSO

LASSO定义。LASSO是一种惩罚回归技术,在Tibshirani(1996)中引入。它通过投注稀疏性来同时识别和估计最重要的系数,使用更短的采样周期 - 也就是说,假设在任何时间点只有少数变量实际上很重要。正式使用LASSO意味着解决下面的问题,如果你忽略了惩罚函数,那么这个优化问题就只是一个OLS回归。

惩罚函数。

但是,这个惩罚函数是LASSO成功的秘诀,允许估算器对最大系数给予优先处理,完全忽略较小系数。为了更好地理解LASSO如何做到这一点,当右侧变量不相关且具有单位方差时 。一方面,这个解决方案意味着,如果OLS估计一个大系数,那么LASSO将提供类似的估计。另一方面,解决方案意味着,如果OLS估计了足够小的系数,那么LASSO将会选择。因为LASSO可以将除少数系数之外的所有系数设置为零,即使样本长度比可能的预测变量的数量短得多,它也可用于识别最重要的预测变量。如果只有预测变量非零,那么你应该只需要几个 观察选择然后估计这几个重要系数的大小。

3.模拟分析

我运行模拟来展示如何使用LASSO来预测未来的回报。您可以在原文找到所有相关代码。

数据模拟。每次模拟都涉及为期间的股票产生回报。每个时期,所有股票的回报都受到一部分股票的回报,以及特殊冲击的影响

使模型适合数据。这意味着使用时间段来估计具有潜在变量的模型。我估计了一个OLS回归真正的预测因子是右侧变量。显然,在现实世界中,你不知道真正的预测变量是什么,但是这个规范给出了你可以达到的最佳拟合的估计。在将每个模型拟合到先前的数据之后,然后我在st期间进行样本外预测。

 

预测回归。然后,我通过分析一系列预测回归分析调整后的统计数据,检查这些预测与第一个资产的实现回报的紧密程度。例如,我将LASSO的回报预测用于估算下面的回归

 

4.调整参数

惩罚参数选择。使LASSO拟合数据涉及选择惩罚参数。我这样做是通过选择在数据的第一个时段期间具有最高样本外预测的惩罚参数。这就是为什么上面的预测回归仅使用从而不是使用数据开始的原因。下图显示了模拟中惩罚参数选择的分布。

预测数量。最后,如果你看一下调整后数字中标有“Oracle”的面板,你会发现LASSO的样本外预测能力大约是真实模型预测能力的三分之一。这是因为LASSO没有完美地选择稀疏信号。下图的右侧面板显示LASSO通常只选出这些信号中最重要的信号。更重要的是,左侧面板显示LASSO还锁定了大量的虚假信号。这一结果表明,您可以通过选择更高的惩罚参数来提高LASSO的预测能力。

5.什么时候失败?

测试。我通过研究两个替代模拟来结束这篇文章,其中LASSO不应该增加任何预测能力。也就是说,使用下面的模型模拟股票的收益,

下图显示,在这两种情况下,LASSO都不会增加任何预测能力。因此,运行这些模拟提供了一对不错的测试,显示LASSO确实在返回的横截面中拾取稀疏信号。

   
obj.gg2.PLOT <- obj.gg2.PLOT + scale_y_continuous(limits = c(0, 0.40),
                                                  breaks = c(0, 0.10, 0.20, 0.30, 0.40),
                                                  labels = c("$0.00$","$0.10$", "$0.20$", "$0.30$", "$0.40$")
                                                  )
obj.gg2.PLOT <- obj.gg2.PLOT + theme(plot.margin      = unit(c(1,0.15,-0.85,0.15), "lines"),
                                     axis.text        = element_text(size = 10),
                                     axis.title       = element_text(size = 10),
                                     plot.title       = element_text(vjust = 1.75),
                                     panel.grid.minor = element_blank(),
                                     legend.position  = "none"
                                     )

obj.gg2.PLOT <- obj.gg2.PLOT + ggtitle("Adjusted $R^2$ Distribution: Dense Shocks")

print(obj.gg2.PLOT)
dev.off()



最受欢迎的见解

1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

2.R语言GARCH-DCC模型和DCC(MVT)建模估计

3.R语言实现 Copula 算法建模依赖性案例分析报告

4.R语言使用ARIMA模型预测股票收益

5.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

6.用R语言实现神经网络预测股票实例

7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.R语言如何做马尔科夫转换模型markov switching model

标签:预测,股票,回归,LASSO,模型,变量
From: https://www.cnblogs.com/tecdat/p/18164195

相关文章

  • 深度学习之线性回归
    C#代码如下usingSystem;usingSystem.Linq;usingMathNet.Numerics.LinearAlgebra;namespaceDeepLearning{classProgram{staticvoidMain(string[]args){//数据点double[]x={1,2,3,4,5};//输入......
  • 实验10-使用keras完成线性回归
    版本python3.7tensorflow版本为tensorflow-gpu版本2.6运行结果: 代码:importnumpyasnpnp.random.seed(1337)fromkeras.modelsimportSequentialfromkeras.layersimportDensefromsklearn.metricsimportr2_scoreimportmatplotlib.pyplotasplt#创建数据......
  • 实验11-使用keras完成逻辑回归
    版本python3.7tensorflow版本为tensorflow-gpu版本2.6运行结果:  代码:importnumpyasnpfromkeras.modelsimportSequentialfromkeras.layersimportDense,Dropout,Activation,Flattenimportmatplotlib.pyplotaspltfromsklearnimportdatasets#样本......
  • MATLAB用GARCH-EVT-Copula模型VaR预测分析股票投资组合
    全文链接:http://tecdat.cn/?p=30426原文出处:拓端数据部落公众号对VaR计算方法的改进,以更好的度量开放式基金的风险。本文把基金所持股票看成是一个投资组合,引入Copula来描述多只股票间的非线性相关性,构建多元GARCH-EVT-Copula模型来度量开放式基金的风险,并与其他VaR估计方法的预......
  • 【pytorch学习】之线性神经网络-softmax回归
    softmax回归回归可以用于预测多少的问题。比如预测房屋被售出价格,或者棒球队可能获得的胜场数,又或者患者住院的天数。事实上,我们也对分类问题感兴趣:不是问“多少”,而是问“哪一个”:某个电子邮件是否属于垃圾邮件文件夹?某个用户可能注册或不注册订阅服务?某个图像描绘的是驴、......
  • 实验1-波士顿房价预测
    实验1-波士顿房价预测1fromsklearn.linear_modelimportLinearRegression,SGDRegressor,Ridge,LogisticRegression#fromsklearn.datasetsimportload_bostonfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScaler......
  • 数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据|附
    全文链接:http://tecdat.cn/?p=22813最近我们被客户要求撰写关于混合效应的研究报告,包括一些图形和统计输出。本教程为读者提供了使用频率学派的广义线性模型(GLM)的基本介绍。具体来说,本教程重点介绍逻辑回归在二元结果和计数/比例结果情况下的使用,以及模型评估的方法本教程使用......
  • R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例
    原文链接:http://tecdat.cn/?p=3186原文出处:拓端数据部落公众号 本文显示了如何基于潜在的ARMA-GARCH模型(当然也涉及更广泛意义上的QRM)来拟合和预测风险价值(VaR)。从ARMA-GARCH过程模拟(log-return)数据我们考虑使用t分布的ARMA(1,1)-GARCH(1,1)过程。模拟一个序列(用于说明目的)。......
  • 【pytorch学习】之线性神经网络-实现线性回归
    线性回归的从零开始实现在了解线性回归的关键思想之后,我们可以开始通过代码来动手实现线性回归了。我们将从零开始实现整个方法,包括数据流水线、模型、损失函数和小批量随机梯度下降优化器。虽然现代的深度学习框架几乎可以自动化地进行所有这些工作,但从零开始实现可以确保我们......
  • 【pytorch学习】之线性神经网络-线性回归
    线性神经网络【摘要】在介绍深度神经网络之前,我们需要了解神经网络训练的基础知识。我们将介绍神经网络的整个训练过程,包括:定义简单的神经网络架构、数据处理、指定损失函数和如何训练模型。为了更容易学习,我们将从经典算法————线性神经网络开始,介绍神经网络的基础知识。经典......