问答交流

预测下跌要怎么打标签

由bq30zy4n创建,最终由bq30zy4n 被浏览 31 用户

/* 使用DAI SQL为量化模型预测生成标签数据。标签反映了未来5日的收益率,并且被离散化为20个桶,每个桶代表一个收益率范围。这样,我们就可以训练模型来预测未来的收益率范围,而不仅仅是具体的收益率值。

  1. 首先定义了一个名为label_data的临时表,用于计算和存储未来5日收益率,其1%和99%分位数,以及离散化后的收益率(被分为20个桶,每个桶代表一个收益率范围)。
  2. 对未来5日收益率进行了截断处理,只保留在1%和99%分位数之间的值。
  3. 选择了标签值不为空,并且非涨跌停(未来一天的最高价不等于最低价)的数据
  4. 从这个临时表中选择了日期、股票代码和标签字段,以供进模型训练。 */

SELECT -- 计算的是未来5日的收益率。这是通过将5天后的收盘价除以第二天的开盘价得到的。这里使用的是一个叫做m_lead的函数,它可以获取某个字段在未来某天的值。 -- _future_return 是一个中间变量名,以 _ 开始的别名列不会在最终结果返回 -- (m_lead(close, 2) / m_lead(open, 1))*2 AS _future_return, m_lead(close, 2) / m_lead(close, 1) AS _future_return,

-- 计算未来5日收益率的1%分位数。all_quantile_cont是一个分位数函数,它能够计算出某个字段值的分位数,这里是计算1%的分位数。
c_quantile_cont(_future_return, 0.01) AS _future_return_1pct,

-- 计算未来5日收益率的99%分位数。同样,all_quantile_cont函数用来计算99%的分位数。
c_quantile_cont(_future_return, 0.99) AS _future_return_99pct,

-- 对未来5日收益率进行截断处理,值位于1%和99%分位数之间的数据被保留,超过这个范围的值将被设为边界值。
clip(_future_return, _future_return_1pct, _future_return_99pct) AS _clipped_return,

-- 将截断后的未来5日收益率分为20个不同的桶,每个桶代表一个范围。all_wbins函数用于将数据离散化为多个桶。
-- cbins(_clipped_return, 10) AS _binned_return,

-- 将离散化后的数据作为标签使用,这是我们预测的目标。
_clipped_return AS label,

-- 日期,这是每个股票每天的数据
date,

-- 股票代码,代表每一支股票
instrument

-- 从cn_stock_bar1d这个表中选择数据,这个表存储的是股票的日线数据 FROM cn_stock_bar1d QUALIFY COLUMNS(*) IS NOT NULL -- 标签值不为空,且非涨跌停(未来一天的最高价不等于最低价) AND m_lead(high, 1) != m_lead(low, 1) ORDER BY date, instrument

标签

量化模型模型训练
{link}