请解释下这两行代码

来源:13-12 量化交易策略实战--大小盘轮动策略(下)

慕容3139001

2023-03-26

est=sm.OLS(trend.iloc[pos-20:pos],X)
t1.append(est.params[‘x1’]) #一阶导数

问题:
(1)为什么是pos-20到pos?为什么pos要减去20,pos不已经是(-20,0)了吗?
(2)trend.iloc[pos-20:pos]出来的是什么?
(3)est.params[‘x1’]这个表示一阶导数吗?还是est.params[1]表示一阶导数?
(4)如果est.params[‘x1’]表示一阶导数,这里的x1是什么意思?
(5)如果方括号中用x1即表示一阶导数,那么,后面二阶导数方括号中为什么是数字1?

谢谢!希望能得到详尽的令人信服的回答。

写回答

1回答

meteor2022

2023-03-26

(1)[pos-20:pos]指,从pos向前偏移20位置至pos的区间。求导是连续值,不是离散值,必须对每个值进行窗口滑动。

(2)trend.iloc[pos-20:pos]是Hp滤波趋势

(3)(4)sm.OLS为最简单的回归模型,即线性回归,表示Y对X进行回归,目标为所有观测值到回归直线距离的平方和最小。通常可以用来求导。statsmodels.OLS 的输出结果是一个 statsmodels.regression.linear_model.OLS,只是一个类,并没有进行任何运算。在 OLS 的模型之上调用拟合函数 fit(),才进行回归运算,并且得到 statsmodels.regression.linear_model.RegressionResultsWrapper,它包含了这组数据进行回归拟合的结果摘要。调用 params 可以查看计算出的回归系数 ,而params['x1']就是1阶导数值。

(5)trend是Series,加上pos循环,实际上是二维矩阵。所以一阶导数是一个一维数组,二阶导数是一维数组的导数,为一个常量。

0
0

Python 量化交易工程师养成实战-金融高薪领域

带你走进前景可观的金融量化开发

678 学习 · 105 问题

查看课程