建立股票和指数收益的线性回归


与其说是编码问题,不如说是关于如何设置回归的问题。

我有一个股票和指数的一年时间序列,然后我有该股票的百分比回报率和指数,其中每年第一天之后的每一天都被计算为一年第一天的百分比收益或损失。因此,如果股票在第1天的估值为100美元,在第30天为105美元,那么这将是5%的回报率。

y列是股票回报,x列是指数回报,所以第30天股票上涨了5%,但指数可能上涨了4%,所以坐标(4,5(的回归图上会有一个散点。

一年中有365天,所以有365分。我所关注的年份是一个相当线性的关系,我已经为它建立了回归,因为这是评估金融领域股票表现的一种相当常见的方法。从回归中我们得到了詹森测度,回归的y截距和斜率告诉我们一旦考虑到风险,股票回报的重要信息。

我想知道你们在这种情况下会如何建立回归线。我的如下,所以可以随意挑选或扔掉。

df60 = pd.DataFrame()
df60['X'] = np.asarray(list23)  # Index returns
df60['Y'] = np.asarray(list21)  # Stock returns
df60
X = df60.X[:, None]
X_train, X_test, y_train, y_test = train_test_split(X, df60.Y, random_state=0)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
x_range = np.linspace(X.min(), X.max(), 100)
y_range = model.predict(x_range.reshape(-1, 1))

我这样设置主要是因为我需要在Plotly中绘制它,这是他们使用的格式示例,但对于初学者来说,我认为不应该使用random_state。

如果您的主要目标是创建数据的回归图,那么您可以使用seaborn库(如:(更轻松地完成这项工作

import seaborn as sns
import matplotlib.pyplot as plt
df60 = pd.DataFrame({'stock returns':np.asarray(list23),
'index returns':np.asarray(list21)})
sns.regplot(df60['stock returns'],df60['index returns'])
plt.show()

最新更新