【新版】如何用SQL表达换手率5日累计值
由jayjaypp创建,最终由jliang 被浏览 49 用户
如何用SQL表达以下旧版因子
#换手率5日累计值
sum(turn_0,5)
#3日前 5日收盘价均线值
mean(close_3,5)
#统计10日内上涨次数
sum( where(return_0>1 , 1 , 0 ), 10)
#5日内大单买入额与收益的相关性
correlation(hf_buy_value_large_order , return_0 , 5 )
\
使用新版:表达式和SQL
-- DAI SQL 算子/函数: https://bigquant.com/wiki/doc/dai-PLSbc1SbZX#h-%E5%87%BD%E6%95%B0
-- 数据&字段: 数据文档 https://bigquant.com/data/home / cn_stock_prefactors https://bigquant.com/data/datasources/cn_stock_prefactors
-- 数据使用: 表名.字段名, 对于没有指定表名的列,会从 expr_tables 推断
# 换手率5日累计值,使用 m_sum 时间序列上 arg 在该窗口内的和
m_sum(turn, 5) AS f1
#3日前5日收盘价均线值
# m_avg 时间序列上 arg 在该窗口内的平均值
# m_lag 时间序列上 arg 向下偏移 n 行后的值
m_avg(m_lag(close, 3), 5) AS f2
# 统计10日内上涨次数,这里定义了一个中间变量(下划线开始的,不会输出)
if(close > open, 1, 0) AS _f3
# 保证类型为 INT
m_sum(_f3, 10)::INT AS f4
#5日内大单买入额与收益的相关性
m_corr(cn_stock_money_flow.inflow_l, close / open, 5) AS f5
可视化模块-输入特征
- 如上使用是表达式输入
- 其中 turn、close等字段没有指定表名,因为我们指定了一个默认数据表 cn_stock_prefactors,这是一个常用的预计算因子表
- 其中大单流入来自 cn_stock_money_flow,通过 表名.字段名,我们可以非常的引用和连接平台任何数据\n
SQL
运行 print(m1.data.read()["sql"])
我们可以看到对应的SQL,其中 where 里的条件是因为用的AI模版里的,没有删除,可根据需要修改。对出初学者,加你先使用表达式模式
SELECT
m_sum(turn, 5) AS f1,
m_avg(m_lag(close, 3), 5) AS f2,
if(close > open, 1, 0) AS _f3,
m_sum(_f3, 10) AS f4,
m_corr(cn_stock_money_flow.inflow_l, close / open, 5) AS f5,
date,
instrument
FROM cn_stock_prefactors
JOIN cn_stock_money_flow USING(date, instrument)
QUALIFY
list_days > 260
AND st_status = 0
AND COLUMNS(*) IS NOT NULL
ORDER BY date, instrument
\
构建一个AI策略
https://bigquant.com/codesharev2/feed64e9-150f-4264-9956-1799251f7326
\