【历史文档】高阶技巧-如何计算过去N日指标1最大值当天指标2的值
由qxiao创建,最终由small_q 被浏览 170 用户
更新
本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明
新版量化开发IDE(AIStudio):
https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW
新版模版策略:
https://bigquant.com/wiki/doc/demos-ecdRvuM1TU
新版数据平台:
https://bigquant.com/data/home
https://bigquant.com/wiki/doc/dai-PLSbc1SbZX
新版表达式算子:
https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS
新版因子平台:
https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5
\
简介
以计算过去20日最高价当天的成交量为例,介绍如何计算这种场景的需求。
1、在输入特征列表中求出过去20日最高价那天的偏移max_shift_date,然后通过自定义函数cal_high_amount求出最高价当天的成交量(注意,这里需要把自定义函数使用的基础特征amount_0作为参数传给自定义函数)。
2、在衍生特征抽取模块中实现自定义函数cal_high_amount
#计算高点那天的成交量
def func(_x):
days = 20
x = _x.copy()
x.sort_values("date", inplace=True)
x.reset_index(drop=True, inplace=True)
x["index2"] = x.index - (days - x.max_shift_date) + 1
x = x.fillna(0)
x["max_date"] = x.iloc[x.index2.values,:]["date"].values
x["high_amount"] = x.iloc[x.index2.values,:]["amount_0"].values
return x
#自定义函数df就是所有的数据
def cal_high_amount(df,amount_0):
#按照股票分组计算
result = df.groupby("instrument").apply(func).reset_index(drop=True)
#合并原df,保证顺序一致
result = pd.merge(left=df,right=result[['date','instrument','high_amount']],on=['date','instrument'],how='left')
return result['high_amount']
#固定格式,关联输入特征列表中的函数名和此处自定义函数名称
bigquant_run = {
'cal_high_amount': cal_high_amount
}
3、样例链接
https://bigquant.com/experimentshare/dc46e4b482f541709a892bc2b5db5b95
\