历史文档

【历史文档】高阶技巧-如何计算过去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作为参数传给自定义函数)。

{w:100}

2、在衍生特征抽取模块中实现自定义函数cal_high_amount

{w:100}

#计算高点那天的成交量
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

\

{link}