【问题标题】:setting up linear regression for stock and index returns为股票和指数收益建立线性回归
【发布时间】:2021-03-17 09:43:42
【问题描述】:

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

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

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

一年有 365 天,所以有 365 个点。我正在查看的年份具有相当线性的关系,并且我已经为其设置了回归,因为它是评估金融股票表现的一种相当常见的方法。从回归中我们得到 Jensen 度量,其中回归的 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。

【问题讨论】:

    标签: python linear-regression


    【解决方案1】:

    如果您的主要目标是创建数据的回归图,那么您可以使用 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()
    

    【讨论】:

    • 好吧,我需要使用 Plotly 以破折号显示它。因此,我们需要使用 sklearn 和 train/test/split 保持基本格式,但可能会根据数据的性质更改目标变量和训练方法。
    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    相关资源
    最近更新 更多