# 本代码由可视化策略环境自动生成 2022年7月6日 21:19
# 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
'''
s 开头的函数 输入值是 数值
v 开头的函数 输入值是 数组
s_shu
s_max
s_min
v_add
v_sub
v_mul
v_div
v_sqrt
v_log
v_neg
v_sign
v_s_sqrt
v_s_log
v_abs
v_shift
v_delta
v_ts_min
v_ts_max
v_ts_argmin
v_ts_argmax
v_ts_incv
v_ts_rank
v_ts_wma2
v_ts_ema
v_sum
v_mean
v_std
v_correlation
v_covariance
v_product
v_rank
v_sign 被其他2个函数调用了,参数也要把df传进去
'''
# 自定义运算符函数
import numpy as np
import pandas as pd
from functools import reduce # 算子里求累乘用
import talib as ta
# 子函数
#把为0的值处理为nan
def _zero_to_nan(A):
A2 = (A !=0)
A3 = np.where(A2,A,np.nan)
return A3
# 求列表累乘
def _red(aaa):
re = reduce(lambda x,y:x*y,aaa)
return re
# 传入array返回最后一个元素排序值的函数,这里除以n则是为了正则化(这里很重要)
def _get_sort_value(x):
s = pd.Series(x)
return s.rank(method='first')[len(s)-1]
# 过去n天加权移动平均,m需要小于n
# alpha为 指定平滑系数,alpha 参数为 n/m
# alpha must satisfy: 0 < alpha <= 1
def _my_ewm(temp,alpha1):
data2 =pd.DataFrame(temp)
bak = data2.ewm(alpha=alpha1,adjust=False,axis=0).mean()
bak = bak[0].values
bak = bak[len(temp)-1]
return bak
# 过去n天指数移动平均值
# 当com=2时,α=1/(1+com)=1/3
def _my_ema(temp):
data2 =pd.DataFrame(temp)
bak = data2.ewm(com=2,adjust=False,axis=0).mean()
bak = bak[0].values
bak = bak[len(temp)-1]
return bak
def s_shu(df,a):
return a
# 这个函数主要是用于解决算子返回值必须有Int类型的错误的
def s_max(df,a, b):
if a>=b:
return a
else:
return b
# 这个函数主要是用于解决算子返回值必须有Int类型的错误的
def s_min(df,a, b):
if a>=b:
return b
else:
return a
# 加减乘除
def v_add(df,A, B):
return A + B
def v_sub(df,A, B):
return A - B
def v_mul(df,A, B):
return A * B
def v_div(df,A, B):
B = _zero_to_nan(B) #把为0的值处理为nan
return A / B
# 不含符号的开方
def v_sqrt(df,A):
return np.sqrt(abs(A))
# 自然对数
def v_log(df,A):
A = _zero_to_nan(A) #把为0的值处理为nan
return np.log(abs(A))
# 相反数
def v_neg(df,A):
return -A
# 符号函数
def v_sign(df,A):
data4 = np.sign(A)
return data4
# 带符号的开方
def v_s_sqrt(df,A):
return np.sqrt(abs(A))*v_sign(df,A)
# 带符号的Log
def v_s_log(df,A):
A = _zero_to_nan(A) #把为0的值处理为nan
return np.log(abs(A))*v_sign(df,A)
# 绝对值
def v_abs(df,A):
return abs(A)
# 过去 n 天的数值
def v_shift(df,A, n):
data1 =pd.DataFrame(A)
data4 = data1.shift(periods=n, axis=0)
return data4.values
# 当日值-过去 n 天值
def v_delta(df,A, n):
data1 =pd.DataFrame(A)
data4 = data1.shift(periods=n, axis=0)
data5 = data1-data4
return data5.values
# 过去 n 天的最小值
def v_ts_min(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).min()
return data6.values
# 过去 n 天的最大值
def v_ts_max(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).max()
return data6.values
# 过去 n 天最小值序号(即过去 n 天最小值的下标)
def v_ts_argmin(df,A, n):
data1 = pd.DataFrame(A)
data7 = data1.rolling(n, min_periods=1,axis=0).apply(lambda x: x.argmin(),raw=True)
return data7.values
# 过去 n 天最大值序号(即过去 n 天最大值的下标)
def v_ts_argmax(df,A, n):
data1 = pd.DataFrame(A)
data7 = data1.rolling(n, min_periods=1,axis=0).apply(lambda x: x.argmax(),raw=True)
return data7.values
# 过去 n 天的均值除以标准差
def v_ts_incv(df,A, n):
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).mean()
data7 = data1.rolling(n, min_periods=1,center=False,axis=0).std()
data8 = data6/data7
return data8.values
# 过去 n 天排序
def v_ts_rank(df,A, n):
data1 = pd.DataFrame(A)
data2 = data1.rolling(n,axis=0).apply(lambda x: _get_sort_value(x)/n,raw=True)
data2
return data2.values
# ts_wma参数不能有浮点数,有浮点数,就意味着必须引入bak为浮点的函数!!
def v_ts_wma2(df,A,n,m):
a = m/n
if a > 1:
a = 1/a
a = round(a, 2)
df = pd.DataFrame(A)
aaa = df.rolling(n, min_periods=1,center=False,axis=0).apply(lambda x:_my_ewm(x,a) ,raw=True)
return aaa.values
def v_ts_ema(df,A,n):
df = pd.DataFrame(A)
aaa = df.rolling(n, min_periods=1,center=False,axis=0).apply(lambda x:_my_ema(x) ,raw=True)
return aaa.values
# 过去 n 天的求和
def v_sum(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).sum()
return data6.values
# 过去 n 天的均值
def v_mean(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).mean()
return data6.values
# 过去 n 天的标准差
def v_std(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).std()
return data6.values
# 过去 n 天的相关系数
def v_correlation(df,A,B,n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data2 = pd.DataFrame(B)
aaa = data1.rolling(n, min_periods=1,center=False,axis=0)
bbb = data2.rolling(n, min_periods=1,center=False,axis=0)
ccc = aaa.corr(bbb)
return ccc.values
# 过去 n 天的协方差
def v_covariance(df,A,B,n):
#这里的 center 必须是 False!
'''
rolling 第一个参数是包含今天的 窗口大小,1就是代表当天
'''
data1 = pd.DataFrame(A)
data2 = pd.DataFrame(B)
aaa = data1.rolling(n, min_periods=1,center=False,axis=0)#min_periods 最少观测值数量
bbb = data2.rolling(n, min_periods=1,center=False,axis=0)
ccc = aaa.cov(bbb)
return ccc.values
# 过去 n 天累乘
def v_product(df,A, n):
data1 = pd.DataFrame(A)
aaa = data1.rolling(n, min_periods=1,center=False,axis=0).apply(lambda x: _red(x),raw=True)
return aaa.values
# 截面排序
def v_rank(df,A):
data1 = pd.DataFrame(A)
data2 = data1.rank(method="first",axis=1)
return data2.values
# 过去 n 天的排序(今天的因子值在过去n天的排序)
# 考虑固定窗口不一样时,计算结果难以相互比较,故而可以将每次得到的序值除以窗口长度,从而将结果正则到[0,1]之间
m9_user_functions_bigquant_run = {
's_shu': s_shu,
's_max': s_max,
's_min': s_min,
'v_add': v_add,
'v_sub': v_sub,
'v_mul': v_mul,
'v_div': v_div,
'v_sqrt': v_sqrt,
'v_log': v_log,
'v_neg': v_neg,
'v_sign': v_sign,
'v_s_sqrt': v_s_sqrt,
'v_s_log': v_s_log,
'v_abs': v_abs,
'v_shift': v_shift,
'v_delta': v_delta,
'v_ts_min': v_ts_min,
'v_ts_max': v_ts_max,
'v_ts_argmin': v_ts_argmin,
'v_ts_argmax': v_ts_argmax,
'v_ts_incv': v_ts_incv,
'v_ts_rank': v_ts_rank,
'v_ts_wma2': v_ts_wma2,
'v_ts_ema': v_ts_ema,
'v_sum': v_sum,
'v_mean': v_mean,
'v_std': v_std,
'v_correlation': v_correlation,
'v_covariance': v_covariance,
'v_product': v_product,
'v_rank': v_rank
}
'''
s 开头的函数 输入值是 数值
v 开头的函数 输入值是 数组
s_shu
s_max
s_min
v_add
v_sub
v_mul
v_div
v_sqrt
v_log
v_neg
v_sign
v_s_sqrt
v_s_log
v_abs
v_shift
v_delta
v_ts_min
v_ts_max
v_ts_argmin
v_ts_argmax
v_ts_incv
v_ts_rank
v_ts_wma2
v_ts_ema
v_sum
v_mean
v_std
v_correlation
v_covariance
v_product
v_rank
v_sign 被其他2个函数调用了,参数也要把df传进去
'''
# 自定义运算符函数
import numpy as np
import pandas as pd
from functools import reduce # 算子里求累乘用
import talib as ta
# 子函数
#把为0的值处理为nan
def _zero_to_nan(A):
A2 = (A !=0)
A3 = np.where(A2,A,np.nan)
return A3
# 求列表累乘
def _red(aaa):
re = reduce(lambda x,y:x*y,aaa)
return re
# 传入array返回最后一个元素排序值的函数,这里除以n则是为了正则化(这里很重要)
def _get_sort_value(x):
s = pd.Series(x)
return s.rank(method='first')[len(s)-1]
# 过去n天加权移动平均,m需要小于n
# alpha为 指定平滑系数,alpha 参数为 n/m
# alpha must satisfy: 0 < alpha <= 1
def _my_ewm(temp,alpha1):
data2 =pd.DataFrame(temp)
bak = data2.ewm(alpha=alpha1,adjust=False,axis=0).mean()
bak = bak[0].values
bak = bak[len(temp)-1]
return bak
# 过去n天指数移动平均值
# 当com=2时,α=1/(1+com)=1/3
def _my_ema(temp):
data2 =pd.DataFrame(temp)
bak = data2.ewm(com=2,adjust=False,axis=0).mean()
bak = bak[0].values
bak = bak[len(temp)-1]
return bak
def s_shu(df,a):
return a
# 这个函数主要是用于解决算子返回值必须有Int类型的错误的
def s_max(df,a, b):
if a>=b:
return a
else:
return b
# 这个函数主要是用于解决算子返回值必须有Int类型的错误的
def s_min(df,a, b):
if a>=b:
return b
else:
return a
# 加减乘除
def v_add(df,A, B):
return A + B
def v_sub(df,A, B):
return A - B
def v_mul(df,A, B):
return A * B
def v_div(df,A, B):
B = _zero_to_nan(B) #把为0的值处理为nan
return A / B
# 不含符号的开方
def v_sqrt(df,A):
return np.sqrt(abs(A))
# 自然对数
def v_log(df,A):
A = _zero_to_nan(A) #把为0的值处理为nan
return np.log(abs(A))
# 相反数
def v_neg(df,A):
return -A
# 符号函数
def v_sign(df,A):
data4 = np.sign(A)
return data4
# 带符号的开方
def v_s_sqrt(df,A):
return np.sqrt(abs(A))*v_sign(df,A)
# 带符号的Log
def v_s_log(df,A):
A = _zero_to_nan(A) #把为0的值处理为nan
return np.log(abs(A))*v_sign(df,A)
# 绝对值
def v_abs(df,A):
return abs(A)
# 过去 n 天的数值
def v_shift(df,A, n):
data1 =pd.DataFrame(A)
data4 = data1.shift(periods=n, axis=0)
return data4.values
# 当日值-过去 n 天值
def v_delta(df,A, n):
data1 =pd.DataFrame(A)
data4 = data1.shift(periods=n, axis=0)
data5 = data1-data4
return data5.values
# 过去 n 天的最小值
def v_ts_min(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).min()
return data6.values
# 过去 n 天的最大值
def v_ts_max(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).max()
return data6.values
# 过去 n 天最小值序号(即过去 n 天最小值的下标)
def v_ts_argmin(df,A, n):
data1 = pd.DataFrame(A)
data7 = data1.rolling(n, min_periods=1,axis=0).apply(lambda x: x.argmin(),raw=True)
return data7.values
# 过去 n 天最大值序号(即过去 n 天最大值的下标)
def v_ts_argmax(df,A, n):
data1 = pd.DataFrame(A)
data7 = data1.rolling(n, min_periods=1,axis=0).apply(lambda x: x.argmax(),raw=True)
return data7.values
# 过去 n 天的均值除以标准差
def v_ts_incv(df,A, n):
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).mean()
data7 = data1.rolling(n, min_periods=1,center=False,axis=0).std()
data8 = data6/data7
return data8.values
# 过去 n 天排序
def v_ts_rank(df,A, n):
data1 = pd.DataFrame(A)
data2 = data1.rolling(n,axis=0).apply(lambda x: _get_sort_value(x)/n,raw=True)
data2
return data2.values
# ts_wma参数不能有浮点数,有浮点数,就意味着必须引入bak为浮点的函数!!
def v_ts_wma2(df,A,n,m):
a = m/n
if a > 1:
a = 1/a
a = round(a, 2)
df = pd.DataFrame(A)
aaa = df.rolling(n, min_periods=1,center=False,axis=0).apply(lambda x:_my_ewm(x,a) ,raw=True)
return aaa.values
def v_ts_ema(df,A,n):
df = pd.DataFrame(A)
aaa = df.rolling(n, min_periods=1,center=False,axis=0).apply(lambda x:_my_ema(x) ,raw=True)
return aaa.values
# 过去 n 天的求和
def v_sum(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).sum()
return data6.values
# 过去 n 天的均值
def v_mean(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).mean()
return data6.values
# 过去 n 天的标准差
def v_std(df,A, n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data6 = data1.rolling(n, min_periods=1,center=False,axis=0).std()
return data6.values
# 过去 n 天的相关系数
def v_correlation(df,A,B,n):
#这里的 center 必须是 False!
data1 = pd.DataFrame(A)
data2 = pd.DataFrame(B)
aaa = data1.rolling(n, min_periods=1,center=False,axis=0)
bbb = data2.rolling(n, min_periods=1,center=False,axis=0)
ccc = aaa.corr(bbb)
return ccc.values
# 过去 n 天的协方差
def v_covariance(df,A,B,n):
#这里的 center 必须是 False!
'''
rolling 第一个参数是包含今天的 窗口大小,1就是代表当天
'''
data1 = pd.DataFrame(A)
data2 = pd.DataFrame(B)
aaa = data1.rolling(n, min_periods=1,center=False,axis=0)#min_periods 最少观测值数量
bbb = data2.rolling(n, min_periods=1,center=False,axis=0)
ccc = aaa.cov(bbb)
return ccc.values
# 过去 n 天累乘
def v_product(df,A, n):
data1 = pd.DataFrame(A)
aaa = data1.rolling(n, min_periods=1,center=False,axis=0).apply(lambda x: _red(x),raw=True)
return aaa.values
# 截面排序
def v_rank(df,A):
data1 = pd.DataFrame(A)
data2 = data1.rank(method="first",axis=1)
return data2.values
# 过去 n 天的排序(今天的因子值在过去n天的排序)
# 考虑固定窗口不一样时,计算结果难以相互比较,故而可以将每次得到的序值除以窗口长度,从而将结果正则到[0,1]之间
m2_user_functions_bigquant_run = {
's_shu': s_shu,
's_max': s_max,
's_min': s_min,
'v_add': v_add,
'v_sub': v_sub,
'v_mul': v_mul,
'v_div': v_div,
'v_sqrt': v_sqrt,
'v_log': v_log,
'v_neg': v_neg,
'v_sign': v_sign,
'v_s_sqrt': v_s_sqrt,
'v_s_log': v_s_log,
'v_abs': v_abs,
'v_shift': v_shift,
'v_delta': v_delta,
'v_ts_min': v_ts_min,
'v_ts_max': v_ts_max,
'v_ts_argmin': v_ts_argmin,
'v_ts_argmax': v_ts_argmax,
'v_ts_incv': v_ts_incv,
'v_ts_rank': v_ts_rank,
'v_ts_wma2': v_ts_wma2,
'v_ts_ema': v_ts_ema,
'v_sum': v_sum,
'v_mean': v_mean,
'v_std': v_std,
'v_correlation': v_correlation,
'v_covariance': v_covariance,
'v_product': v_product,
'v_rank': v_rank
}
# 回测引擎:初始化函数,只执行一次
def m12_initialize_bigquant_run(context):
# 加载预测数据
context.ranker_prediction = context.options['data'].read_df()
# 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数
context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
# 预测数据,通过options传入进来,使用 read_df 函数,加载到内存 (DataFrame)
# 设置买入的股票数量,这里买入预测股票列表排名靠前的5只
stock_count = 5
# 每只的股票的权重,如下的权重分配会使得靠前的股票分配多一点的资金,[0.339160, 0.213986, 0.169580, ..]
context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])
# 设置每只股票占用的最大资金比例
context.max_cash_per_instrument = 0.2
context.hold_days = 1
# 回测引擎:每日数据处理函数,每天执行一次
def m12_handle_data_bigquant_run(context, data):
# 按日期过滤得到今日的预测数据
ranker_prediction = context.ranker_prediction[
context.ranker_prediction.date == data.current_dt.strftime('%Y-%m-%d')]
# 1. 资金分配
# 平均持仓时间是hold_days,每日都将买入股票,每日预期使用 1/hold_days 的资金
# 实际操作中,会存在一定的买入误差,所以在前hold_days天,等量使用资金;之后,尽量使用剩余资金(这里设置最多用等量的1.5倍)
is_staging = context.trading_day_index < context.hold_days # 是否在建仓期间(前 hold_days 天)
cash_avg = context.portfolio.portfolio_value / context.hold_days
cash_for_buy = min(context.portfolio.cash, (1 if is_staging else 1.5) * cash_avg)
cash_for_sell = cash_avg - (context.portfolio.cash - cash_for_buy)
positions = {e.symbol: p.amount * p.last_sale_price
for e, p in context.perf_tracker.position_tracker.positions.items()}
# 2. 生成卖出订单:hold_days天之后才开始卖出;对持仓的股票,按StockRanker预测的排序末位淘汰
if not is_staging and cash_for_sell > 0:
equities = {e.symbol: e for e, p in context.perf_tracker.position_tracker.positions.items()}
instruments = list(reversed(list(ranker_prediction.instrument[ranker_prediction.instrument.apply(
lambda x: x in equities and not context.has_unfinished_sell_order(equities[x]))])))
# print('rank order for sell %s' % instruments)
for instrument in instruments:
context.order_target(context.symbol(instrument), 0)
cash_for_sell -= positions[instrument]
if cash_for_sell <= 0:
break
# 3. 生成买入订单:按StockRanker预测的排序,买入前面的stock_count只股票
buy_cash_weights = context.stock_weights
buy_instruments = list(ranker_prediction.instrument[:len(buy_cash_weights)])
max_cash_per_instrument = context.portfolio.portfolio_value * context.max_cash_per_instrument
for i, instrument in enumerate(buy_instruments):
cash = cash_for_buy * buy_cash_weights[i]
if cash > max_cash_per_instrument - positions.get(instrument, 0):
# 确保股票持仓量不会超过每次股票最大的占用资金量
cash = max_cash_per_instrument - positions.get(instrument, 0)
if cash > 0:
context.order_value(context.symbol(instrument), cash)
# 回测引擎:准备数据,只执行一次
def m12_prepare_bigquant_run(context):
pass
# 回测引擎:每个单位时间开始前调用一次,即每日开盘前调用一次。
def m12_before_trading_start_bigquant_run(context, data):
pass
m1 = M.input_features.v1(
features="""ts_min(v_add(mf_net_pct_main_0, v_div(turn_0, low_0)), s_shu(5))
v_add(ts_max(ts_argmin(close_1, s_shu(s_shu(5))), s_shu(s_shu(5))), v_sub(ts_rank(rank(close_0), s_shu(8)), return_0))
rank(v_div(rank(product(low_0, 3)), mean(open_0, 1)))
v_mul(correlation(covariance(amount_0, mf_net_pct_main_0, 9), ts_max(mf_net_pct_main_0, 2), s_shu(4)), v_s_sqrt(v_div(close_1, close_1)))
rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(3))))
rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(s_shu(s_shu(6))))))
rank(v_div(delta(v_s_sqrt(volume_0), s_shu(10)), turn_0))
ta_wma(v_sqrt(ts_rank(rank(v_sqrt(ts_rank(rank(high_0), s_shu(s_shu(3))))), s_shu(s_shu(s_shu(s_shu(4)))))), s_shu(s_shu(4)))
ta_wma(v_sqrt(ts_rank(rank(high_0), s_shu(s_shu(2)))), s_shu(s_shu(6)))
v_div(v_abs(close_0), delta(return_0, 7))
v_s_log(v_sub(v_abs(v_s_log(mf_net_amount_main_0)), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(9))))))
v_div(rank(ts_max(v_neg(v_add(std(low_0, s_shu(2)), volume_0)), 9)), v_add(mf_net_pct_main_0, v_div(turn_0, low_0)))
v_div(rank(ts_max(v_add(mf_net_pct_main_0, v_div(turn_0, ts_max(v_s_sqrt(mf_net_pct_main_0), s_shu(9)))), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(9))))))))), v_add(mf_net_pct_main_0, v_div(turn_0, low_0)))
v_div(v_div(rank(v_neg(ts_rank(ts_argmin(close_0, 4), s_shu(8)))), v_s_sqrt(v_add(delta(mf_net_amount_main_0, s_shu(9)), v_s_log(ts_max(high_0, 8))))), v_s_log(v_mul(mf_net_amount_main_0, amount_0)))
v_s_log(v_sub(rank(rank(turn_0)), ts_argmin(mf_net_pct_main_0, s_shu(9))))
product(v_add(return_0, v_add(mf_net_pct_main_0, ts_min(mean(rank(rank(shift(return_0, 3))), 9), 6))), s_shu(s_shu(s_shu(s_shu(2)))))
v_s_log(v_sub(rank(return_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(9))))))
v_s_log(v_sub(rank(v_sub(rank(open_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(6)))))), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(6))))))
covariance(v_s_log(open_0), correlation(close_0, mf_net_pct_main_0, 6), s_shu(5))
v_s_log(rank(v_sub(rank(open_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(10)))))))
v_s_sqrt(delta(ta_ema(mf_net_amount_main_0, 10), s_shu(s_shu(s_shu(s_shu(3))))))
ta_ema(ts_argmin(v_neg(mf_net_amount_main_0), s_shu(8)), s_shu(s_shu(s_shu(4))))
sum(v_mul(mf_net_pct_main_0, ts_argmax(close_0, 6)), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(6)))))))))
sum(v_div(ts_max(low_0, 1), open_0), s_shu(s_shu(10)))
v_s_log(v_sub(rank(rank(rank(return_0))), ts_argmin(mf_net_pct_main_0, 6)))
v_sqrt(sum(v_mul(ta_ema(v_s_log(ta_ema(product(mf_net_pct_main_0, 5), s_shu(8))), s_shu(s_shu(s_shu(3)))), return_0), s_shu(s_shu(3))))
ta_wma(v_sqrt(ts_rank(rank(ts_rank(rank(return_0), s_shu(s_shu(s_shu(5))))), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(9)))))))), s_shu(s_shu(6)))
v_div(v_sub(ta_wma(high_0, 10), rank(delta(v_sign(close_0), 7))), close_1)
v_s_log(rank(v_add(ts_argmax(high_0, 5), ts_argmin(turn_0, s_shu(2)))))
v_div(v_sqrt(delta(ts_max(v_sqrt(mean(mf_net_pct_main_0, s_shu(s_shu(4)))), s_shu(s_shu(4))), s_shu(10))), v_sign(mf_net_pct_main_0))
ts_max(v_div(delta(mf_net_amount_main_0, 4), delta(amount_0, 4)), s_shu(1))
v_div(std(mean(mf_net_pct_main_0, s_shu(s_shu(4))), s_shu(s_shu(s_shu(s_shu(2))))), v_sign(mf_net_pct_main_0))
v_div(v_sqrt(delta(ts_max(v_sqrt(mean(mf_net_pct_main_0, s_shu(s_shu(4)))), s_shu(s_shu(10))), s_shu(10))), v_sign(sum(v_add(mf_net_amount_main_0, volume_0), s_shu(5))))
v_add(v_add(mf_net_amount_main_0, turn_0), delta(v_add(ts_argmax(close_1, s_shu(s_shu(10))), ts_min(v_add(amount_0, v_abs(volume_0)), s_shu(s_shu(5)))), s_shu(2)))
v_sub(mean(v_div(close_0, open_0), s_shu(s_shu(s_shu(s_shu(6))))), product(std(mf_net_pct_main_0, s_shu(s_shu(6))), s_shu(s_shu(s_shu(1)))))
v_div(v_abs(rank(ta_ema(return_0, 7))), close_1)
delta(ta_ema(mf_net_amount_main_0, s_shu(8)), s_shu(s_shu(s_shu(8))))
v_s_log(rank(rank(rank(v_div(ts_rank(mf_net_amount_main_0, s_shu(s_shu(2))), std(v_s_sqrt(amount_0), s_shu(s_shu(6))))))))
v_s_sqrt(v_add(v_add(v_sub(ts_min(shift(shift(v_abs(volume_0), s_shu(4)), 4), s_shu(s_shu(4))), v_abs(std(ts_max(ta_ema(volume_0, 10), s_shu(1)), s_shu(s_shu(9))))), mf_net_amount_main_0), mf_net_amount_main_0))
v_div(delta(covariance(v_abs(amount_0), v_abs(high_0), 10), s_shu(3)), close_1)
ta_wma(v_sqrt(ts_rank(rank(return_0), s_shu(s_shu(s_shu(s_shu(6)))))), s_shu(s_shu(s_shu(10))))
rank(v_sub(return_0, ts_argmax(v_add(high_0, return_0), s_shu(3))))
rank(correlation(ta_wma(mf_net_amount_main_0, 8), ts_max(mf_net_amount_main_0, 5), s_shu(8)))
v_div(rank(v_add(v_sqrt(correlation(mf_net_amount_main_0, ts_max(turn_0, 3), 9)), product(return_0, 6))), v_add(v_sqrt(v_log(amount_0)), turn_0))
ta_wma(v_sqrt(ts_rank(rank(ts_rank(rank(return_0), s_shu(s_shu(3)))), s_shu(s_shu(s_shu(5))))), s_shu(s_shu(6)))
v_s_sqrt(v_add(v_add(delta(mf_net_amount_main_0, s_shu(s_shu(s_shu(s_shu(s_shu(1)))))), mf_net_amount_main_0), mf_net_amount_main_0))
rank(v_mul(correlation(v_s_sqrt(low_0), ts_rank(amount_0, 2), s_shu(7)), amount_0))
v_s_log(rank(v_sub(v_s_sqrt(v_s_sqrt(return_0)), ts_argmin(mean(shift(return_0, 10), 1), s_shu(5)))))
product(v_add(correlation(v_mul(v_add(close_1, mf_net_pct_main_0), v_sign(mf_net_amount_main_0)), ts_max(v_abs(v_abs(volume_0)), 3), s_shu(s_shu(8))), ts_min(return_0, 6)), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(1))))))))
delta(v_add(low_0, v_mul(v_sqrt(high_0), ts_argmax(volume_0, 3))), s_shu(9))
v_sub(mf_net_pct_main_0, product(std(std(v_log(sum(ts_rank(v_neg(close_0), 8), s_shu(s_shu(5)))), 3), 3), s_shu(1)))
ta_wma(v_sqrt(ts_rank(mean(rank(v_div(return_0, open_0)), s_shu(1)), s_shu(5))), s_shu(s_shu(s_shu(s_shu(8)))))
v_s_log(rank(rank(rank(rank(rank(correlation(ts_rank(v_neg(ts_max(return_0, 5)), s_shu(s_shu(6))), ta_wma(close_0, s_shu(s_shu(8))), s_shu(s_shu(s_shu(3))))))))))
rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(s_shu(s_shu(s_shu(s_shu(8))))))))
rank(v_mul(mf_net_amount_main_0, ts_argmin(ta_wma(delta(ts_argmax(mean(mf_net_amount_main_0, 3), 10), s_shu(s_shu(8))), s_shu(2)), s_shu(s_shu(7)))))
v_div(v_sign(rank(ts_argmin(mf_net_amount_main_0, 8))), product(delta(v_abs(high_0), s_shu(s_shu(8))), s_shu(s_shu(1))))
v_s_sqrt(v_add(v_add(delta(mf_net_amount_main_0, 8), mf_net_amount_main_0), v_add(v_add(delta(v_add(v_add(delta(mf_net_amount_main_0, s_shu(s_shu(s_shu(10)))), mf_net_amount_main_0), mf_net_amount_main_0), s_shu(s_shu(s_shu(3)))), mf_net_amount_main_0), mf_net_amount_main_0)))""",
m_cached=False
)
m4 = M.instruments.v2(
start_date='20190101',
end_date='20190201',
market='CN_STOCK_A',
instrument_list='',
max_count=0
)
m8 = M.general_feature_extractor.v7(
instruments=m4.data,
features=m1.data,
start_date='',
end_date='',
before_start_days=90
)
m9 = M.derived_feature_extractor.v3(
input_data=m8.data,
features=m1.data,
date_col='date',
instrument_col='instrument',
drop_na=False,
remove_extra_columns=False,
user_functions=m9_user_functions_bigquant_run
)
m11 = M.chinaa_stock_filter.v1(
input_data=m9.data,
index_constituent_cond=['中证500'],
board_cond=['全部'],
industry_cond=['全部'],
st_cond=['全部'],
delist_cond=['全部'],
output_left_data=False
)
m15 = M.dropnan.v2(
input_data=m11.data
)
m17 = M.instruments.v2(
start_date='20180928',
end_date='20181227',
market='CN_STOCK_A',
instrument_list='',
max_count=0
)
m13 = M.advanced_auto_labeler.v2(
instruments=m17.data,
label_expr="""# #号开始的表示注释
# 0. 每行一个,顺序执行,从第二个开始,可以使用label字段
# 1. 可用数据字段见 https://bigquant.com/docs/develop/datasource/deprecated/history_data.html
# 添加benchmark_前缀,可使用对应的benchmark数据
# 2. 可用操作符和函数见 `表达式引擎 <https://bigquant.com/docs/develop/bigexpr/usage.html>`_
# 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)
shift(open, -2) / shift(open, -1)
# 极值处理:用1%和99%分位的值做clip
clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))
# 将分数映射到分类,这里使用20个分类
all_wbins(label, 20)
# 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)
where(shift(high, -1) == shift(low, -1), NaN, label)
""",
start_date='20180928',
end_date='20181227',
benchmark='000300.SHA',
drop_na_label=True,
cast_label_int=True,
user_functions={}
)
m6 = M.general_feature_extractor.v7(
instruments=m17.data,
features=m1.data,
start_date='',
end_date='',
before_start_days=90
)
m2 = M.derived_feature_extractor.v3(
input_data=m6.data,
features=m1.data,
date_col='date',
instrument_col='instrument',
drop_na=False,
remove_extra_columns=False,
user_functions=m2_user_functions_bigquant_run
)
m14 = M.join.v3(
data1=m13.data,
data2=m2.data,
on='date,instrument',
how='inner',
sort=False
)
m5 = M.chinaa_stock_filter.v1(
input_data=m14.data,
index_constituent_cond=['全部'],
board_cond=['全部'],
industry_cond=['全部'],
st_cond=['全部'],
delist_cond=['全部'],
output_left_data=False
)
m10 = M.dropnan.v2(
input_data=m5.data
)
m7 = M.stock_ranker_train.v6(
training_ds=m10.data,
features=m1.data,
learning_algorithm='排序',
number_of_leaves=30,
minimum_docs_per_leaf=1000,
number_of_trees=20,
learning_rate=0.1,
max_bins=1023,
feature_fraction=1,
data_row_fraction=1,
plot_charts=True,
ndcg_discount_base=1,
m_lazy_run=False
)
m3 = M.stock_ranker_predict.v5(
model=m7.model,
data=m15.data,
m_lazy_run=False
)
m12 = M.trade.v4(
instruments=m4.data,
options_data=m3.predictions,
start_date='',
end_date='',
initialize=m12_initialize_bigquant_run,
handle_data=m12_handle_data_bigquant_run,
prepare=m12_prepare_bigquant_run,
before_trading_start=m12_before_trading_start_bigquant_run,
volume_limit=0.025,
order_price_field_buy='open',
order_price_field_sell='open',
capital_base=1000000,
auto_cancel_non_tradable_orders=True,
data_frequency='daily',
price_type='真实价格',
product_type='股票',
plot_charts=True,
backtest_only=False,
benchmark='000300.HIX'
)
[2022-07-06 21:03:17.850035] INFO: moduleinvoker: input_features.v1 开始运行..
[2022-07-06 21:03:17.877438] INFO: moduleinvoker: input_features.v1 运行完成[0.027407s].
[2022-07-06 21:03:17.883707] INFO: moduleinvoker: instruments.v2 开始运行..
[2022-07-06 21:03:17.895280] INFO: moduleinvoker: 命中缓存
[2022-07-06 21:03:17.897433] INFO: moduleinvoker: instruments.v2 运行完成[0.013743s].
[2022-07-06 21:03:17.913716] INFO: moduleinvoker: general_feature_extractor.v7 开始运行..
[2022-07-06 21:03:17.923423] INFO: moduleinvoker: 命中缓存
[2022-07-06 21:03:17.925014] INFO: moduleinvoker: general_feature_extractor.v7 运行完成[0.011321s].
[2022-07-06 21:03:17.957410] INFO: moduleinvoker: derived_feature_extractor.v3 开始运行..
[2022-07-06 21:03:19.279347] INFO: derived_feature_extractor: 提取完成 ts_min(v_add(mf_net_pct_main_0, v_div(turn_0, low_0)), s_shu(5)), 0.565s
[2022-07-06 21:03:22.414456] INFO: derived_feature_extractor: 提取完成 v_add(ts_max(ts_argmin(close_1, s_shu(s_shu(5))), s_shu(s_shu(5))), v_sub(ts_rank(rank(close_0), s_shu(8)), return_0)), 3.133s
[2022-07-06 21:03:25.357899] INFO: derived_feature_extractor: 提取完成 rank(v_div(rank(product(low_0, 3)), mean(open_0, 1))), 2.941s
[2022-07-06 21:04:08.483277] INFO: derived_feature_extractor: 提取完成 v_mul(correlation(covariance(amount_0, mf_net_pct_main_0, 9), ts_max(mf_net_pct_main_0, 2), s_shu(4)), v_s_sqrt(v_div(close_1, close_1))), 43.123s
[2022-07-06 21:04:09.759853] INFO: derived_feature_extractor: 提取完成 rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(3)))), 1.275s
[2022-07-06 21:04:11.046387] INFO: derived_feature_extractor: 提取完成 rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(s_shu(s_shu(6)))))), 1.285s
[2022-07-06 21:04:11.212230] INFO: derived_feature_extractor: 提取完成 rank(v_div(delta(v_s_sqrt(volume_0), s_shu(10)), turn_0)), 0.164s
[2022-07-06 21:04:17.731521] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(v_sqrt(ts_rank(rank(high_0), s_shu(s_shu(3))))), s_shu(s_shu(s_shu(s_shu(4)))))), s_shu(s_shu(4))), 6.517s
[2022-07-06 21:04:23.173319] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(high_0), s_shu(s_shu(2)))), s_shu(s_shu(6))), 5.435s
[2022-07-06 21:04:23.239001] INFO: derived_feature_extractor: 提取完成 v_div(v_abs(close_0), delta(return_0, 7)), 0.064s
[2022-07-06 21:04:24.418253] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(v_abs(v_s_log(mf_net_amount_main_0)), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(9)))))), 1.177s
[2022-07-06 21:04:25.506154] INFO: derived_feature_extractor: 提取完成 v_div(rank(ts_max(v_neg(v_add(std(low_0, s_shu(2)), volume_0)), 9)), v_add(mf_net_pct_main_0, v_div(turn_0, low_0))), 1.086s
[2022-07-06 21:04:26.440213] INFO: derived_feature_extractor: 提取完成 v_div(rank(ts_max(v_add(mf_net_pct_main_0, v_div(turn_0, ts_max(v_s_sqrt(mf_net_pct_main_0), s_shu(9)))), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(9))))))))), v_add(mf_net_pct_main_0, v_div(turn_0, low_0))), 0.932s
[2022-07-06 21:04:29.483905] INFO: derived_feature_extractor: 提取完成 v_div(v_div(rank(v_neg(ts_rank(ts_argmin(close_0, 4), s_shu(8)))), v_s_sqrt(v_add(delta(mf_net_amount_main_0, s_shu(9)), v_s_log(ts_max(high_0, 8))))), v_s_log(v_mul(mf_net_amount_main_0, amount_0))), 3.042s
[2022-07-06 21:04:31.057204] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(rank(rank(turn_0)), ts_argmin(mf_net_pct_main_0, s_shu(9)))), 1.571s
[2022-07-06 21:04:34.440232] INFO: derived_feature_extractor: 提取完成 product(v_add(return_0, v_add(mf_net_pct_main_0, ts_min(mean(rank(rank(shift(return_0, 3))), 9), 6))), s_shu(s_shu(s_shu(s_shu(2))))), 3.381s
[2022-07-06 21:04:35.864041] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(rank(return_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(9)))))), 1.422s
[2022-07-06 21:04:38.508297] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(rank(v_sub(rank(open_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(6)))))), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(6)))))), 2.642s
[2022-07-06 21:05:24.111122] INFO: derived_feature_extractor: 提取完成 covariance(v_s_log(open_0), correlation(close_0, mf_net_pct_main_0, 6), s_shu(5)), 45.601s
[2022-07-06 21:05:25.562892] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(v_sub(rank(open_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(10))))))), 1.449s
[2022-07-06 21:05:30.015808] INFO: derived_feature_extractor: 提取完成 v_s_sqrt(delta(ta_ema(mf_net_amount_main_0, 10), s_shu(s_shu(s_shu(s_shu(3)))))), 4.451s
[2022-07-06 21:05:35.453844] INFO: derived_feature_extractor: 提取完成 ta_ema(ts_argmin(v_neg(mf_net_amount_main_0), s_shu(8)), s_shu(s_shu(s_shu(4)))), 5.416s
[2022-07-06 21:05:37.048216] INFO: derived_feature_extractor: 提取完成 sum(v_mul(mf_net_pct_main_0, ts_argmax(close_0, 6)), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(6))))))))), 1.593s
[2022-07-06 21:05:37.858558] INFO: derived_feature_extractor: 提取完成 sum(v_div(ts_max(low_0, 1), open_0), s_shu(s_shu(10))), 0.808s
[2022-07-06 21:05:39.666284] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(rank(rank(rank(return_0))), ts_argmin(mf_net_pct_main_0, 6))), 1.806s
[2022-07-06 21:05:51.048071] INFO: derived_feature_extractor: 提取完成 v_sqrt(sum(v_mul(ta_ema(v_s_log(ta_ema(product(mf_net_pct_main_0, 5), s_shu(8))), s_shu(s_shu(s_shu(3)))), return_0), s_shu(s_shu(3)))), 11.380s
[2022-07-06 21:05:57.765189] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(ts_rank(rank(return_0), s_shu(s_shu(s_shu(5))))), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(9)))))))), s_shu(s_shu(6))), 6.715s
[2022-07-06 21:06:01.671312] INFO: derived_feature_extractor: 提取完成 v_div(v_sub(ta_wma(high_0, 10), rank(delta(v_sign(close_0), 7))), close_1), 3.904s
[2022-07-06 21:06:04.186313] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(v_add(ts_argmax(high_0, 5), ts_argmin(turn_0, s_shu(2))))), 2.512s
[2022-07-06 21:06:05.119216] INFO: derived_feature_extractor: 提取完成 v_div(v_sqrt(delta(ts_max(v_sqrt(mean(mf_net_pct_main_0, s_shu(s_shu(4)))), s_shu(s_shu(4))), s_shu(10))), v_sign(mf_net_pct_main_0)), 0.931s
[2022-07-06 21:06:05.651786] INFO: derived_feature_extractor: 提取完成 ts_max(v_div(delta(mf_net_amount_main_0, 4), delta(amount_0, 4)), s_shu(1)), 0.531s
[2022-07-06 21:06:06.457715] INFO: derived_feature_extractor: 提取完成 v_div(std(mean(mf_net_pct_main_0, s_shu(s_shu(4))), s_shu(s_shu(s_shu(s_shu(2))))), v_sign(mf_net_pct_main_0)), 0.804s
[2022-07-06 21:06:07.784366] INFO: derived_feature_extractor: 提取完成 v_div(v_sqrt(delta(ts_max(v_sqrt(mean(mf_net_pct_main_0, s_shu(s_shu(4)))), s_shu(s_shu(10))), s_shu(10))), v_sign(sum(v_add(mf_net_amount_main_0, volume_0), s_shu(5)))), 1.325s
[2022-07-06 21:06:09.502522] INFO: derived_feature_extractor: 提取完成 v_add(v_add(mf_net_amount_main_0, turn_0), delta(v_add(ts_argmax(close_1, s_shu(s_shu(10))), ts_min(v_add(amount_0, v_abs(volume_0)), s_shu(s_shu(5)))), s_shu(2))), 1.716s
[2022-07-06 21:06:12.881767] INFO: derived_feature_extractor: 提取完成 v_sub(mean(v_div(close_0, open_0), s_shu(s_shu(s_shu(s_shu(6))))), product(std(mf_net_pct_main_0, s_shu(s_shu(6))), s_shu(s_shu(s_shu(1))))), 3.377s
[2022-07-06 21:06:16.950494] INFO: derived_feature_extractor: 提取完成 v_div(v_abs(rank(ta_ema(return_0, 7))), close_1), 4.067s
[2022-07-06 21:06:21.137843] INFO: derived_feature_extractor: 提取完成 delta(ta_ema(mf_net_amount_main_0, s_shu(8)), s_shu(s_shu(s_shu(8)))), 4.185s
[2022-07-06 21:06:23.062652] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(rank(rank(v_div(ts_rank(mf_net_amount_main_0, s_shu(s_shu(2))), std(v_s_sqrt(amount_0), s_shu(s_shu(6)))))))), 1.923s
[2022-07-06 21:06:27.985443] INFO: derived_feature_extractor: 提取完成 v_s_sqrt(v_add(v_add(v_sub(ts_min(shift(shift(v_abs(volume_0), s_shu(4)), 4), s_shu(s_shu(4))), v_abs(std(ts_max(ta_ema(volume_0, 10), s_shu(1)), s_shu(s_shu(9))))), mf_net_amount_main_0), mf_net_amount_main_0)), 4.921s
[2022-07-06 21:06:46.221976] INFO: derived_feature_extractor: 提取完成 v_div(delta(covariance(v_abs(amount_0), v_abs(high_0), 10), s_shu(3)), close_1), 18.234s
[2022-07-06 21:06:52.227351] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(return_0), s_shu(s_shu(s_shu(s_shu(6)))))), s_shu(s_shu(s_shu(10)))), 6.003s
[2022-07-06 21:06:53.606221] INFO: derived_feature_extractor: 提取完成 rank(v_sub(return_0, ts_argmax(v_add(high_0, return_0), s_shu(3)))), 1.377s
[2022-07-06 21:07:28.157700] INFO: derived_feature_extractor: 提取完成 rank(correlation(ta_wma(mf_net_amount_main_0, 8), ts_max(mf_net_amount_main_0, 5), s_shu(8))), 34.550s
[2022-07-06 21:07:58.502876] INFO: derived_feature_extractor: 提取完成 v_div(rank(v_add(v_sqrt(correlation(mf_net_amount_main_0, ts_max(turn_0, 3), 9)), product(return_0, 6))), v_add(v_sqrt(v_log(amount_0)), turn_0)), 30.343s
[2022-07-06 21:08:05.529563] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(ts_rank(rank(return_0), s_shu(s_shu(3)))), s_shu(s_shu(s_shu(5))))), s_shu(s_shu(6))), 7.025s
[2022-07-06 21:08:05.583100] INFO: derived_feature_extractor: 提取完成 v_s_sqrt(v_add(v_add(delta(mf_net_amount_main_0, s_shu(s_shu(s_shu(s_shu(s_shu(1)))))), mf_net_amount_main_0), mf_net_amount_main_0)), 0.051s
[2022-07-06 21:08:33.674284] INFO: derived_feature_extractor: 提取完成 rank(v_mul(correlation(v_s_sqrt(low_0), ts_rank(amount_0, 2), s_shu(7)), amount_0)), 28.089s
[2022-07-06 21:08:35.476436] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(v_sub(v_s_sqrt(v_s_sqrt(return_0)), ts_argmin(mean(shift(return_0, 10), 1), s_shu(5))))), 1.800s
[2022-07-06 21:09:06.781291] INFO: derived_feature_extractor: 提取完成 product(v_add(correlation(v_mul(v_add(close_1, mf_net_pct_main_0), v_sign(mf_net_amount_main_0)), ts_max(v_abs(v_abs(volume_0)), 3), s_shu(s_shu(8))), ts_min(return_0, 6)), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(1)))))))), 31.303s
[2022-07-06 21:09:08.154060] INFO: derived_feature_extractor: 提取完成 delta(v_add(low_0, v_mul(v_sqrt(high_0), ts_argmax(volume_0, 3))), s_shu(9)), 1.371s
[2022-07-06 21:09:12.992414] INFO: derived_feature_extractor: 提取完成 v_sub(mf_net_pct_main_0, product(std(std(v_log(sum(ts_rank(v_neg(close_0), 8), s_shu(s_shu(5)))), 3), 3), s_shu(1))), 4.837s
[2022-07-06 21:09:19.536434] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(mean(rank(v_div(return_0, open_0)), s_shu(1)), s_shu(5))), s_shu(s_shu(s_shu(s_shu(8))))), 6.538s
[2022-07-06 21:09:52.353316] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(rank(rank(rank(rank(correlation(ts_rank(v_neg(ts_max(return_0, 5)), s_shu(s_shu(6))), ta_wma(close_0, s_shu(s_shu(8))), s_shu(s_shu(s_shu(3)))))))))), 32.815s
[2022-07-06 21:09:53.681737] INFO: derived_feature_extractor: 提取完成 rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(s_shu(s_shu(s_shu(s_shu(8)))))))), 1.326s
[2022-07-06 21:10:01.492935] INFO: derived_feature_extractor: 提取完成 rank(v_mul(mf_net_amount_main_0, ts_argmin(ta_wma(delta(ts_argmax(mean(mf_net_amount_main_0, 3), 10), s_shu(s_shu(8))), s_shu(2)), s_shu(s_shu(7))))), 7.809s
[2022-07-06 21:10:05.227046] INFO: derived_feature_extractor: 提取完成 v_div(v_sign(rank(ts_argmin(mf_net_amount_main_0, 8))), product(delta(v_abs(high_0), s_shu(s_shu(8))), s_shu(s_shu(1)))), 3.732s
[2022-07-06 21:10:05.394773] INFO: derived_feature_extractor: 提取完成 v_s_sqrt(v_add(v_add(delta(mf_net_amount_main_0, 8), mf_net_amount_main_0), v_add(v_add(delta(v_add(v_add(delta(mf_net_amount_main_0, s_shu(s_shu(s_shu(10)))), mf_net_amount_main_0), mf_net_amount_main_0), s_shu(s_shu(s_shu(3)))), mf_net_amount_main_0), mf_net_amount_main_0))), 0.157s
[2022-07-06 21:10:06.237153] INFO: derived_feature_extractor: /y_2018, 210561
[2022-07-06 21:10:07.683059] INFO: derived_feature_extractor: /y_2019, 81866
[2022-07-06 21:10:08.224309] INFO: moduleinvoker: derived_feature_extractor.v3 运行完成[410.266901s].
[2022-07-06 21:10:08.233533] INFO: moduleinvoker: chinaa_stock_filter.v1 开始运行..
[2022-07-06 21:10:10.036004] INFO: A股股票过滤: 过滤 /y_2018, 29554/0/210561
[2022-07-06 21:10:10.706540] INFO: A股股票过滤: 过滤 /y_2019, 11480/0/81866
[2022-07-06 21:10:10.711222] INFO: A股股票过滤: 过滤完成, 41034 + 0
[2022-07-06 21:10:10.745811] INFO: moduleinvoker: chinaa_stock_filter.v1 运行完成[2.512256s].
[2022-07-06 21:10:10.756071] INFO: moduleinvoker: dropnan.v2 开始运行..
[2022-07-06 21:10:11.160383] INFO: dropnan: /y_2018, 16315/29554
[2022-07-06 21:10:11.259344] INFO: dropnan: /y_2019, 11130/11480
[2022-07-06 21:10:11.327355] INFO: dropnan: 行数: 27445/41034
[2022-07-06 21:10:11.335133] INFO: moduleinvoker: dropnan.v2 运行完成[0.579042s].
[2022-07-06 21:10:11.341790] INFO: moduleinvoker: instruments.v2 开始运行..
[2022-07-06 21:10:11.352880] INFO: moduleinvoker: 命中缓存
[2022-07-06 21:10:11.355593] INFO: moduleinvoker: instruments.v2 运行完成[0.013789s].
[2022-07-06 21:10:11.368363] INFO: moduleinvoker: advanced_auto_labeler.v2 开始运行..
[2022-07-06 21:10:11.378356] INFO: moduleinvoker: 命中缓存
[2022-07-06 21:10:11.380351] INFO: moduleinvoker: advanced_auto_labeler.v2 运行完成[0.012005s].
[2022-07-06 21:10:11.399092] INFO: moduleinvoker: general_feature_extractor.v7 开始运行..
[2022-07-06 21:10:11.410261] INFO: moduleinvoker: 命中缓存
[2022-07-06 21:10:11.412287] INFO: moduleinvoker: general_feature_extractor.v7 运行完成[0.013216s].
[2022-07-06 21:10:11.448996] INFO: moduleinvoker: derived_feature_extractor.v3 开始运行..
[2022-07-06 21:10:13.068300] INFO: derived_feature_extractor: 提取完成 ts_min(v_add(mf_net_pct_main_0, v_div(turn_0, low_0)), s_shu(5)), 0.517s
[2022-07-06 21:10:17.070730] INFO: derived_feature_extractor: 提取完成 v_add(ts_max(ts_argmin(close_1, s_shu(s_shu(5))), s_shu(s_shu(5))), v_sub(ts_rank(rank(close_0), s_shu(8)), return_0)), 4.001s
[2022-07-06 21:10:21.291891] INFO: derived_feature_extractor: 提取完成 rank(v_div(rank(product(low_0, 3)), mean(open_0, 1))), 4.219s
[2022-07-06 21:11:03.307209] INFO: derived_feature_extractor: 提取完成 v_mul(correlation(covariance(amount_0, mf_net_pct_main_0, 9), ts_max(mf_net_pct_main_0, 2), s_shu(4)), v_s_sqrt(v_div(close_1, close_1))), 42.013s
[2022-07-06 21:11:05.144964] INFO: derived_feature_extractor: 提取完成 rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(3)))), 1.836s
[2022-07-06 21:11:06.873322] INFO: derived_feature_extractor: 提取完成 rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(s_shu(s_shu(6)))))), 1.727s
[2022-07-06 21:11:07.174927] INFO: derived_feature_extractor: 提取完成 rank(v_div(delta(v_s_sqrt(volume_0), s_shu(10)), turn_0)), 0.300s
[2022-07-06 21:11:14.463948] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(v_sqrt(ts_rank(rank(high_0), s_shu(s_shu(3))))), s_shu(s_shu(s_shu(s_shu(4)))))), s_shu(s_shu(4))), 7.287s
[2022-07-06 21:11:20.947819] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(high_0), s_shu(s_shu(2)))), s_shu(s_shu(6))), 6.482s
[2022-07-06 21:11:21.040945] INFO: derived_feature_extractor: 提取完成 v_div(v_abs(close_0), delta(return_0, 7)), 0.091s
[2022-07-06 21:11:22.580892] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(v_abs(v_s_log(mf_net_amount_main_0)), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(9)))))), 1.538s
[2022-07-06 21:11:23.783030] INFO: derived_feature_extractor: 提取完成 v_div(rank(ts_max(v_neg(v_add(std(low_0, s_shu(2)), volume_0)), 9)), v_add(mf_net_pct_main_0, v_div(turn_0, low_0))), 1.200s
[2022-07-06 21:11:24.897810] INFO: derived_feature_extractor: 提取完成 v_div(rank(ts_max(v_add(mf_net_pct_main_0, v_div(turn_0, ts_max(v_s_sqrt(mf_net_pct_main_0), s_shu(9)))), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(9))))))))), v_add(mf_net_pct_main_0, v_div(turn_0, low_0))), 1.113s
[2022-07-06 21:11:28.614639] INFO: derived_feature_extractor: 提取完成 v_div(v_div(rank(v_neg(ts_rank(ts_argmin(close_0, 4), s_shu(8)))), v_s_sqrt(v_add(delta(mf_net_amount_main_0, s_shu(9)), v_s_log(ts_max(high_0, 8))))), v_s_log(v_mul(mf_net_amount_main_0, amount_0))), 3.715s
[2022-07-06 21:11:30.580020] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(rank(rank(turn_0)), ts_argmin(mf_net_pct_main_0, s_shu(9)))), 1.964s
[2022-07-06 21:11:35.004063] INFO: derived_feature_extractor: 提取完成 product(v_add(return_0, v_add(mf_net_pct_main_0, ts_min(mean(rank(rank(shift(return_0, 3))), 9), 6))), s_shu(s_shu(s_shu(s_shu(2))))), 4.422s
[2022-07-06 21:11:36.790470] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(rank(return_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(9)))))), 1.784s
[2022-07-06 21:11:40.276034] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(rank(v_sub(rank(open_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(6)))))), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(6)))))), 3.484s
[2022-07-06 21:12:21.454732] INFO: derived_feature_extractor: 提取完成 covariance(v_s_log(open_0), correlation(close_0, mf_net_pct_main_0, 6), s_shu(5)), 41.176s
[2022-07-06 21:12:23.358842] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(v_sub(rank(open_0), ts_argmin(mf_net_pct_main_0, s_shu(s_shu(s_shu(10))))))), 1.902s
[2022-07-06 21:12:27.297444] INFO: derived_feature_extractor: 提取完成 v_s_sqrt(delta(ta_ema(mf_net_amount_main_0, 10), s_shu(s_shu(s_shu(s_shu(3)))))), 3.937s
[2022-07-06 21:12:32.705857] INFO: derived_feature_extractor: 提取完成 ta_ema(ts_argmin(v_neg(mf_net_amount_main_0), s_shu(8)), s_shu(s_shu(s_shu(4)))), 5.406s
[2022-07-06 21:12:35.432018] INFO: derived_feature_extractor: 提取完成 sum(v_mul(mf_net_pct_main_0, ts_argmax(close_0, 6)), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(6))))))))), 2.724s
[2022-07-06 21:12:36.372696] INFO: derived_feature_extractor: 提取完成 sum(v_div(ts_max(low_0, 1), open_0), s_shu(s_shu(10))), 0.939s
[2022-07-06 21:12:38.556123] INFO: derived_feature_extractor: 提取完成 v_s_log(v_sub(rank(rank(rank(return_0))), ts_argmin(mf_net_pct_main_0, 6))), 2.181s
[2022-07-06 21:12:50.856478] INFO: derived_feature_extractor: 提取完成 v_sqrt(sum(v_mul(ta_ema(v_s_log(ta_ema(product(mf_net_pct_main_0, 5), s_shu(8))), s_shu(s_shu(s_shu(3)))), return_0), s_shu(s_shu(3)))), 12.299s
[2022-07-06 21:12:59.264711] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(ts_rank(rank(return_0), s_shu(s_shu(s_shu(5))))), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(9)))))))), s_shu(s_shu(6))), 8.406s
[2022-07-06 21:13:03.460410] INFO: derived_feature_extractor: 提取完成 v_div(v_sub(ta_wma(high_0, 10), rank(delta(v_sign(close_0), 7))), close_1), 4.194s
[2022-07-06 21:13:06.970242] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(v_add(ts_argmax(high_0, 5), ts_argmin(turn_0, s_shu(2))))), 3.508s
[2022-07-06 21:13:08.140361] INFO: derived_feature_extractor: 提取完成 v_div(v_sqrt(delta(ts_max(v_sqrt(mean(mf_net_pct_main_0, s_shu(s_shu(4)))), s_shu(s_shu(4))), s_shu(10))), v_sign(mf_net_pct_main_0)), 1.168s
[2022-07-06 21:13:08.875375] INFO: derived_feature_extractor: 提取完成 ts_max(v_div(delta(mf_net_amount_main_0, 4), delta(amount_0, 4)), s_shu(1)), 0.733s
[2022-07-06 21:13:09.825852] INFO: derived_feature_extractor: 提取完成 v_div(std(mean(mf_net_pct_main_0, s_shu(s_shu(4))), s_shu(s_shu(s_shu(s_shu(2))))), v_sign(mf_net_pct_main_0)), 0.948s
[2022-07-06 21:13:11.440957] INFO: derived_feature_extractor: 提取完成 v_div(v_sqrt(delta(ts_max(v_sqrt(mean(mf_net_pct_main_0, s_shu(s_shu(4)))), s_shu(s_shu(10))), s_shu(10))), v_sign(sum(v_add(mf_net_amount_main_0, volume_0), s_shu(5)))), 1.613s
[2022-07-06 21:13:13.687903] INFO: derived_feature_extractor: 提取完成 v_add(v_add(mf_net_amount_main_0, turn_0), delta(v_add(ts_argmax(close_1, s_shu(s_shu(10))), ts_min(v_add(amount_0, v_abs(volume_0)), s_shu(s_shu(5)))), s_shu(2))), 2.245s
[2022-07-06 21:13:18.072448] INFO: derived_feature_extractor: 提取完成 v_sub(mean(v_div(close_0, open_0), s_shu(s_shu(s_shu(s_shu(6))))), product(std(mf_net_pct_main_0, s_shu(s_shu(6))), s_shu(s_shu(s_shu(1))))), 4.383s
[2022-07-06 21:13:22.162907] INFO: derived_feature_extractor: 提取完成 v_div(v_abs(rank(ta_ema(return_0, 7))), close_1), 4.088s
[2022-07-06 21:13:26.280385] INFO: derived_feature_extractor: 提取完成 delta(ta_ema(mf_net_amount_main_0, s_shu(8)), s_shu(s_shu(s_shu(8)))), 4.115s
[2022-07-06 21:13:29.185114] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(rank(rank(v_div(ts_rank(mf_net_amount_main_0, s_shu(s_shu(2))), std(v_s_sqrt(amount_0), s_shu(s_shu(6)))))))), 2.903s
[2022-07-06 21:13:34.587501] INFO: derived_feature_extractor: 提取完成 v_s_sqrt(v_add(v_add(v_sub(ts_min(shift(shift(v_abs(volume_0), s_shu(4)), 4), s_shu(s_shu(4))), v_abs(std(ts_max(ta_ema(volume_0, 10), s_shu(1)), s_shu(s_shu(9))))), mf_net_amount_main_0), mf_net_amount_main_0)), 5.400s
[2022-07-06 21:13:52.616339] INFO: derived_feature_extractor: 提取完成 v_div(delta(covariance(v_abs(amount_0), v_abs(high_0), 10), s_shu(3)), close_1), 18.027s
[2022-07-06 21:13:58.719210] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(return_0), s_shu(s_shu(s_shu(s_shu(6)))))), s_shu(s_shu(s_shu(10)))), 6.101s
[2022-07-06 21:14:00.669971] INFO: derived_feature_extractor: 提取完成 rank(v_sub(return_0, ts_argmax(v_add(high_0, return_0), s_shu(3)))), 1.949s
[2022-07-06 21:14:31.580366] INFO: derived_feature_extractor: 提取完成 rank(correlation(ta_wma(mf_net_amount_main_0, 8), ts_max(mf_net_amount_main_0, 5), s_shu(8))), 30.909s
[2022-07-06 21:15:01.257074] INFO: derived_feature_extractor: 提取完成 v_div(rank(v_add(v_sqrt(correlation(mf_net_amount_main_0, ts_max(turn_0, 3), 9)), product(return_0, 6))), v_add(v_sqrt(v_log(amount_0)), turn_0)), 29.675s
[2022-07-06 21:15:10.078265] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(rank(ts_rank(rank(return_0), s_shu(s_shu(3)))), s_shu(s_shu(s_shu(5))))), s_shu(s_shu(6))), 8.819s
[2022-07-06 21:15:10.151750] INFO: derived_feature_extractor: 提取完成 v_s_sqrt(v_add(v_add(delta(mf_net_amount_main_0, s_shu(s_shu(s_shu(s_shu(s_shu(1)))))), mf_net_amount_main_0), mf_net_amount_main_0)), 0.072s
[2022-07-06 21:15:39.009239] INFO: derived_feature_extractor: 提取完成 rank(v_mul(correlation(v_s_sqrt(low_0), ts_rank(amount_0, 2), s_shu(7)), amount_0)), 28.856s
[2022-07-06 21:15:41.365061] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(v_sub(v_s_sqrt(v_s_sqrt(return_0)), ts_argmin(mean(shift(return_0, 10), 1), s_shu(5))))), 2.354s
[2022-07-06 21:16:10.977681] INFO: derived_feature_extractor: 提取完成 product(v_add(correlation(v_mul(v_add(close_1, mf_net_pct_main_0), v_sign(mf_net_amount_main_0)), ts_max(v_abs(v_abs(volume_0)), 3), s_shu(s_shu(8))), ts_min(return_0, 6)), s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(s_shu(1)))))))), 29.611s
[2022-07-06 21:16:12.699897] INFO: derived_feature_extractor: 提取完成 delta(v_add(low_0, v_mul(v_sqrt(high_0), ts_argmax(volume_0, 3))), s_shu(9)), 1.720s
[2022-07-06 21:16:18.904539] INFO: derived_feature_extractor: 提取完成 v_sub(mf_net_pct_main_0, product(std(std(v_log(sum(ts_rank(v_neg(close_0), 8), s_shu(s_shu(5)))), 3), 3), s_shu(1))), 6.202s
[2022-07-06 21:16:26.045934] INFO: derived_feature_extractor: 提取完成 ta_wma(v_sqrt(ts_rank(mean(rank(v_div(return_0, open_0)), s_shu(1)), s_shu(5))), s_shu(s_shu(s_shu(s_shu(8))))), 7.139s
[2022-07-06 21:17:01.808580] INFO: derived_feature_extractor: 提取完成 v_s_log(rank(rank(rank(rank(rank(correlation(ts_rank(v_neg(ts_max(return_0, 5)), s_shu(s_shu(6))), ta_wma(close_0, s_shu(s_shu(8))), s_shu(s_shu(s_shu(3)))))))))), 35.761s
[2022-07-06 21:17:03.910584] INFO: derived_feature_extractor: 提取完成 rank(v_mul(mf_net_amount_main_0, ts_argmin(v_sub(open_0, close_0), s_shu(s_shu(s_shu(s_shu(s_shu(8)))))))), 2.099s
[2022-07-06 21:17:12.118421] INFO: derived_feature_extractor: 提取完成 rank(v_mul(mf_net_amount_main_0, ts_argmin(ta_wma(delta(ts_argmax(mean(mf_net_amount_main_0, 3), 10), s_shu(s_shu(8))), s_shu(2)), s_shu(s_shu(7))))), 8.206s
[2022-07-06 21:17:17.395162] INFO: derived_feature_extractor: 提取完成 v_div(v_sign(rank(ts_argmin(mf_net_amount_main_0, 8))), product(delta(v_abs(high_0), s_shu(s_shu(8))), s_shu(s_shu(1)))), 5.275s
[2022-07-06 21:17:17.645429] INFO: derived_feature_extractor: 提取完成 v_s_sqrt(v_add(v_add(delta(mf_net_amount_main_0, 8), mf_net_amount_main_0), v_add(v_add(delta(v_add(v_add(delta(mf_net_amount_main_0, s_shu(s_shu(s_shu(10)))), mf_net_amount_main_0), mf_net_amount_main_0), s_shu(s_shu(s_shu(3)))), mf_net_amount_main_0), mf_net_amount_main_0))), 0.248s
[2022-07-06 21:17:19.210538] INFO: derived_feature_extractor: /y_2018, 425361
[2022-07-06 21:17:20.942810] INFO: moduleinvoker: derived_feature_extractor.v3 运行完成[429.493819s].
[2022-07-06 21:17:20.952986] INFO: moduleinvoker: join.v3 开始运行..
[2022-07-06 21:17:25.331851] INFO: join: /y_2018, 行数=202830/425361, 耗时=3.841948s
[2022-07-06 21:17:25.390508] INFO: join: 最终行数: 202830
[2022-07-06 21:17:25.401524] INFO: moduleinvoker: join.v3 运行完成[4.448532s].
[2022-07-06 21:17:25.412003] INFO: moduleinvoker: chinaa_stock_filter.v1 开始运行..
[2022-07-06 21:17:26.233664] INFO: A股股票过滤: 未自定义过滤保留项,保留全部行数据 /y_2018
[2022-07-06 21:17:26.749061] INFO: A股股票过滤: 过滤 /y_2018, 202830/0/202830
[2022-07-06 21:17:26.753593] INFO: A股股票过滤: 过滤完成, 202830 + 0
[2022-07-06 21:17:26.786493] INFO: moduleinvoker: chinaa_stock_filter.v1 运行完成[1.374488s].
[2022-07-06 21:17:26.798736] INFO: moduleinvoker: dropnan.v2 开始运行..
[2022-07-06 21:17:28.123459] INFO: dropnan: /y_2018, 177134/202830
[2022-07-06 21:17:28.195845] INFO: dropnan: 行数: 177134/202830
[2022-07-06 21:17:28.207771] INFO: moduleinvoker: dropnan.v2 运行完成[1.408958s].
[2022-07-06 21:17:28.254217] INFO: moduleinvoker: stock_ranker_train.v6 开始运行..
[2022-07-06 21:17:29.286973] INFO: StockRanker: 特征预处理 ..
[2022-07-06 21:17:30.783358] INFO: StockRanker: prepare data: training ..
[2022-07-06 21:17:33.477304] INFO: StockRanker: sort ..
[2022-07-06 21:17:41.265403] INFO: StockRanker训练: fbdfce78 准备训练: 177134 行数
[2022-07-06 21:17:41.267721] INFO: StockRanker训练: AI模型训练,将在177134*57=1009.66万数据上对模型训练进行20轮迭代训练。预计将需要4~8分钟。请耐心等待。
[2022-07-06 21:17:41.550484] INFO: StockRanker训练: 正在训练 ..
[2022-07-06 21:17:41.613950] INFO: StockRanker训练: 任务状态: Pending
[2022-07-06 21:17:51.666238] INFO: StockRanker训练: 任务状态: Running
[2022-07-06 21:18:51.936176] INFO: StockRanker训练: 任务状态: Succeeded
[2022-07-06 21:18:51.956684] ERROR: moduleinvoker: module name: stock_ranker_train, module version: v6, trackeback: Exception: 模型训练失败:可能导致错误的原因是训练数据问题,请检查训练数据, err_code=1 (fbdfce78fd2d11ec901d422a9c1a9dc9)