框架函数
data
- data.feature.feature.good_or_bad(up,down) 返回down特征,在up中的比例。值越小越好{'a':1,'b':0,'c':0.5}
- data.feature.feature.featureinitReRank(df,variableProcessing) 返回排序的值,在树分隔中。不在重排序reRank(# 如果有rank,,非排序数据需要调用此方法)
- data.feature.feature.localCorr(df,cause=[],result=[],Interval=20,date='date',period={}) 相关性局部热点
- data.feature.feature.localGroup(df,cause=[],result=[],Interval=20,groupCount=5,date='date',period={}) 分组局部热点
- data.feature.feature.corrs(df,wipeFun=None,limit=0.99,dislodgeCount=1,reversal=False,keepCount=None) 更具相关性删除特征
- data.feature.feature.round(df,variableProcessing)浮点数舍入
- data.feature.feature.section(self,ser,fun,sectionLen=5,step=1)数据分区,用于计算ic/ir等
- data.feature.feature.section.sectionFixation(ser,fun,sectionLen=21,step=15)数据固定长度分区,用于计算ic/ir等
- data.feature.feature.section.matrix_fun(ser,fun,sectionLen=21,step=15)交叉计算特征矩阵,如corr
- data.feature.feature.log(ds)用于,数值差异大的情况(比如全市场股票市值)
- data.feature.featureGenerate.parseTree(featureGenerate.factorTree[k]) 获取因子值
- data.feature.featureGenerate.loadVal([k]) 批量调用parseTree,并将结果值复制给df
- data.feature.featureGenerate.loop(self,fun)特征再次生成
- data.feature.index.minus(self,ser,mins=None)减去最小值
- data.feature.index.MinMaxScaler(self,ds,interval=None)0-1
- data.feature.index.minusStandardScaler(self,ds,interval=None)-无穷到+无穷,均值为0,方差为1
- data.feature.index.minusminmax_minus(self,ser,interval=None)归一化到-1到1,保留正负及大小关系 及绝对大小关系(如无负数,结果值里也无负数)
- data.feature.index.replaceNanVp(self,ser,interval=None)把nan设为最小值-0.1
- data.feature.index.rankNormalizingGroup(self,ser,interval=None)排序归一到0-1
- data.feature.index.nanInfo(df,date=None) 统计nan分布情况
- data.dataDay.batchNext(self,random=0.5,randomStep=10) 按天随机游走,支持lstm
- data.dataDay.batch(self,index,random=0) 按天索引取数据
model
- model.inheritance.day.day按天选股票池的,遗传特征生成
- model.inheritance.minx.minx基于遗传算法的权重生成
- model.inheritance.param.param 基于遗传算法的模型参数寻优
- model.inheritance.symbol.symbol基于遗传算法的特征生成
- model.access.auxiliary.stabilize(step=100,showImg=True)因子时序稳定性检测
- model.access.auxiliary.kde(step=100,showImg=True)特征密度分布图
- model.access.auxiliary.kdeArea(step=100,showImg=True)特征密度分布交叉面积
- model.access.auxiliary.corr_rank()对特征按天排序后,在进行相关性检测
- model.access.auxiliary.corr(df,figsize=(15, 15)) 因子相关性画图
- model.access.base.irs(period=30,step=20,showImage=True) 批量获取特征与收益关系稳定性
- model.access.base._ic 获取ic值
- model.access.base.ir(period=30,step=20,barRank=None,returnSource=False)计算ir值
- model.access.base.view(key,barIndex=None) 因子统计及画图
- model.access.base.views(list,barIndex=None) 多个因子因子统计及画图
- model.access.base.ascribe(key,barIndex,factors_continuous=[],factors_classification=[],backDf=False,showImg=True):因子分位数归因
- model.access.base.gtBasePair(self,s,limit=2)返回收益排序的两端的特征,limit个数量(总共limit*2)
- model.access.base.gtBase(list,barIndex=None) 返回大于基准的特征,收益从大到小
- model.access.base.dull() 返回单调性好的
- model.tree.importanceTree.importance()特征重要度
特征重要性分析 基于gini
root = copy.deepcopy(decisionMakingTree.root)
feature = {}
correlations={}
importanceTree.importance(root, feature,correlations)
_,corr=importanceTree.importance_combine([],[correlations,correlations]) 某个特征对另一个特征的重要度
importanceTree.importance_corrdf(corr).sort_values('importance') #importance_combine结果的可视化
importanceTree.importance_select(corr,top=3) 选择top个,参数corr=importance_combine函数的corr返回值
特征重要度 少一个特征对整体的影响
def earnings(df):
return df.groupby('date').apply(
lambda df:df.sort_values('@earnings_forecast',ascending=False)[:5]['earnings_source'].mean()
).mean()
def earningsMean(df):
return df['earnings_source'].mean()
ifa={}
for k in variableProcessing.keys():
ifa[k]=0
importanceTree.import_feature_affect(gbdts,dp,ifa,earnings,earningsMean)
- model.base.kFold.loop(model)参数对模型的稳定性
- model.base.cache.getData(self,day,fun) 按天缓存,指定数据(用于多线程提取因子时,缓存全局数据时使用)
- model.base.roll.timeLine 按时间循环取数据(最到最后取总数)
- model.base.roll.timeLineCirculation 按时间循环取数据(首尾相连)
- model.base.thread.trigger_thread 线程相关操作
- model.base.com.timeit(fun,arg,*param) 函数执行时间
- model.base.com.xmlToDict('str/readIo') xml转dict
- model.access.model/optimal 【{'train','verify','model'}更具训练集,与验证集的得分,来选取最优模型】
- model.access.model/exhaustion 【shape=[3,4],穷举模板权重混合,代表有3个模型,每个模型取值0-3(0代表丢弃此模型)】
- model.access.model/adfullerCheck 序列平稳检测
- model.access.ascribe.ascribe.loop(self,df) 归因分析
- model.access.optimize.optimize.generate(self,targetFun,initParam={},**param) 组合优化
- model.access.optimize.optimize.gridSearch(self,modelFun,param) 参数随机寻优
- model.access.optimizeKeys.loop([2,3])#variableProcessing参数随机组合寻优
- model.access.stock.threshold_affect(dp,names,limits=None,round=2,quantiles=[],top=5,earnings='earnings_source',code='code')调整预测值的阈值对结果的影响
- model.access.stock.to_df(self,arr,feature=None,predictField=False) predictField预测返回的字段的名称,结合深度学习ranks函数的predictField参数使用
- model.access.stock.random_feature(self,minFeatureCount=2,maxFeatureCount=None) 随机返回特征
- model.access.stock.random(self,emphasisData=[]): 随机返回数据
- model.access.stock.readDf(self,index,emphasisData=[]): 读取从roll模块的返回索引对应的数据。日期从小向大排序
- model.util.com/combinationOptimization 【[s1,s2]返回组合的统计值,回撤,夏普,波动,平均收益,年化收益回撤比等】
- model.util.com/getql 获取当前日期季度末年月日
- model.util.com/extract(start,end,maps,key=None) 提取字符串
- model.util.com/now_str(date=None) 获取当前时间%Y%m%d
- model.util.com/xp 夏普
- model.util.com/back 回撤
- model.util.com/kl 凯莉
- model.util.com/compd 收益
- model.util.syss.openUrl(url,param): 打开浏览器,可以用来把回测结果网页展示
- model.util.syss.save(f,name,pickleTag=False): 保存数据
- model.util.syss.load(name,pickleTag=False):加载数据
- model.util.syss.remove_cache(path=None) 移除缓存目录
- model.util.syss.rebuild(dirs,delete=True) 重构目录
- model.util.syss.log(msg,param=None) 打印日志
- model.util.syss.delSonProcess() 删除此进程下的子进程,如joblib产生的进程。不能删除其他进程的joblib
- model.util.syss.delProcess(names='python.exe') 结束所有指定进程
- model.util.share.set(key,val) 全局变量设置
- model.util.share.get(key,val) 获取全局变量
- model.util.share.loadCwd(path) 向系统path变量追加路径
- model.util.share.load(path,cwd=None) 加载模块
- model.util.task.ever(fun,times=5) 每几秒运行
- model.util.task.everDay(fun,times='21:10') 每天什么时候运行
- model.util.task.run()任务开始运行
- model.util.emailSend.send(subject,body='',to=qqEmail)发送邮件
- model.util.email.get_origin_maps()解析邮件
- model.util.cover.savior.reckon(dr=0.02)计算每次补仓多少,需要n个点回本
- model.tree.path.getFeature(ser,type) 获取每个树的决策值
- model.tree.path.getFeatureOneHot(ser,type='index') 获取决策路径的独热编码特征
- model.tree.path.getFeatureNormalizing(ser,type='avg')获取决策路径值的归一化特征
- model.tree.general.cumcount(ser) 数值连续出现计次
- model.tree.general.classifyQ(ser,Kind) Length总长度 Kind分为几个区间
- model.tree.general.makeRely(maps,depend_on_or=[],depend_on_and=[],mapValues={},excludeArr=[]) 决策树依赖路径
- model.util.combinationTree.generate(maps=None)离散数据的组合情况
- model.tree.general.categoryRegression(categorys={})分类加权,返回值越大越好
trade
- trade.backtest.postition.init 分析股票每日持仓初始化 backDf=positions.init()
- trade.backtest.postition.replay(backDf)回放
- trade.backtest.postition.partition(backDf)用于看某个字段是否可以把最差的收益剥离掉
- trade.backtest.postition.partitionView(backDf)返回收益,与某个字段的关系散点图
- trade.backtest.postition.controlcontrol(self,gainList=[],lossList=[],pct_list_name='',type='abs')止盈止损模块
- trade.backtest.main.review.buy 回测买入
- trade.backtest.main.review.sell 回测售出
db
- db.mongo.ext.ableBusiness(dates)当前日期是否可交易
- db.mongo.ext.trade(start,end=None,market='SSE')获取时间范围内的交易日
- db.mongo.ext.stock(dates)获取某日的市场股票