ToB企服应用市场:ToB评测及商务社交产业平台

标题: 高频直播笔记 [打印本页]

作者: 熊熊出没    时间: 2024-8-28 12:58
标题: 高频直播笔记
盘算五分钟流动性因子


如何天生高频因子


高频脚本功能


案例


这里的最短路径要了解一下
魔改


代码


   1 日线数据,和指数数据归并,得到完整的市场交易日期
2 盘算因子,resample选股周期,好比一个月,按照因子排序得到选股数据
3 选股,绘制资金曲线
  
   1 分钟数据
2 创建基准数据
  
   get_file_in_folder得到symbol_list
symbol_list中存储的是文件夹中的所有币种
  
   给定开始 结束时间,默认结束时间为当前时间
给定周期 1h 1D,在config内里factor_period
min_bench 分钟级别基准数据
min_bench 包罗candle_begin_time 以及time_group
time_group是对分钟数据的一个概括,假如周期为1h,2017-01-01 00:00:00 2017-01-01 00:01:00 2017-01-01 00:02:00 2017-01-01 00:03:00 2017-01-01 00:04:00的time_group都为2017-01-01 00:00:00,假如周期为1D,time_group为2017-01-01
period_bench 以factor_period为单位,将所有的日期都为一列摆列出来
  
   首先从factors中获取所有因子,存储在列表stg_file
factors_list中存储因子的绝对路径
判断是现货还是合约 candel_type
calculate_by_code 输入币种代码,输出dataframe
  
   盘算每个币的高频因子
首先读取ftr文件为mdf
然后令period_bench 的时间范围框定为mf的时间范围
归并min_bench和mdf,时间以min_bench为准,这里类似与股票和指数归并,目的是为了处理没有交易的时间,是的时间统一化
这里采用增量盘算,增量盘算的意思是,假如这个因子已经被盘算了,那么就不会再盘算第二次,每次盘算出来的因子都在data/分钟因子那里
基于的时间基准来自于:period_list,min_bench的所有group_time
那么period_bench怎么用的?
假如因子已经被盘算,那么读取数据,读取数据的时候,主要看已经盘算出来的因子时间是不是包罗所有的时间(小时/day)
假如因子没有被盘算,则创建文件夹,(这里没有做盘算因子的操纵)
然后盘算高频因子,高频因子的盘算在cal_min_factors,这个函数在factors下面的因子中实现。
new_period_list表示的是那些没有被盘算因子的时间点
  
   将因子保存在‘分钟因子下面’
  
   参数:mdf、ddf、date
mdf分钟级别的数据,包含数据
ddf 小时或者天级别的数据,这个就是所有的小时或者天,只偶然间信息
date:需要盘算的时间
dm_df:筛选出mdf当中时间为date的数据
进行resample,这里对数据resample成5分钟或者10分钟数据
盘算因子
  
   首先归并得到的所有数据,将数据按照日期 币种的次序进行排序all_factor_data。
遍历所有因子,对于每一个因子,找到这个因子的所有相关因子,好比一个因子,可能盘算了它的5min 10min数据,作为小因子
假如小因子的数量不为0,也就是说这个因子已经被盘算出来了,那么调用process_all_data,这个函数输出为所有因子数据,输出也为所有因子数据,不知道干嘛的,可以看看,解释说是盘算截面范围的因子。
  
   根据币代码对数据分组,每组都包含一个币种类,包含这个币的名字和币的数据
然后找到所有的因子,假如这个币的因子数量为0,阐明这个币没有因子,跳过
将这个币的时间 币种 因子选出来,作为一个新的dataframe
构建因子数据的保存路径:现货 / 合约 选币周期 因子名字 币种,这里的因子名字是大因子的名字,不是小因子
假如路径存在:读取路径 为 fdf,补充,去重
假如路径不存在:创建dataframe为fdf,将时间 币种 因子 都放进去
  
   之前盘算出了每个币种在选币周期得到的因子
然后对每个因子,盘算截面范围上的因子,
接着对数据按照币种分类,对于每个币的每个大因子
将这个信息都存储在分钟因子文件中。
  理解


代码


   读取原始文件
创建benchmark,这里的benchmark很故意思,我记得股票数据中的benchmark是指数数据,包含市场交易所有天数,这里的benchmark的作用也是为了衡量市场交易的所偶然间,这个benchmark一共分为两个:period_bench和min_bench,这里的period_bench 包含是时间区间内的所有选股周期,好比小时,那么period_bench就包含了所有的小时数据,好比天,那么period_bench就包含了所有的天数据。min_bench是在时间区间内的所有分钟,每个分钟对应了选股周期的时间,假如选股周期是小时,那么就是时间区间内所有分钟和小时的对应关系,假如选股周期是天,那么就是时间区间内所有分钟和天的对应关系。
  
   首先遍历factors文件夹下的所有文件,得到所有因子
  
   遍历每个币,盘算因子,这里用到了calculate_by_code函数,并行或串行
这里需要对calculate_by_code做进一步研究
对calculate_by_code的猜测:首先将分钟数据降采样为五分钟数据,然后根据选股周期,盘算因子,排序,选出n只币,盘算资金曲线
calculate_by_code的输入为假造币代码,输出为dataframe:
时间(选币周期1h / 1d) 币的代码 因子值(5min / 10min流动性指标)
那么可以推测出calculate_by_code的作用是盘算出单个币种的选股周期的因子
在这个函数之后,还需要做的是:让所有的币的数据归并在一起,按照因子排序,选出前n只币,然后盘算资金曲线
  
   首先将上一步得到的dataframe都归并在一起
然后对每一个大因子,盘算截面因子
接着按照币种和打因子,将信息存储起来。
  calculate_by_code


   首先读取币种的历史数据,而且将其和min_bench归并,与period_bench归并之后,假如数据为空,那么直接退出
  
   这里做了一个看起来很奇怪的事情,它在读历史数据,它这里假设,历史上都跑完了,而且跑的就是这个币的这个因子,假如有多有少,就先删了再跑。
它做的事情是,假如这个因子之前跑过了,那就读取之前的文件,然后获取之前没有盘算,而现在需要盘算的时间list
假如这个因子没跑过,那就新建文件,然后有一个时间list
总的来说,这一段,就是为了处理之前已经盘算过的数据,因为盘算量太大了,所以这里假如存在之前已经盘算过的数据,那就找到那些没有盘算的周期。这里的时间是小时或者天
万一有些盘算了一天 / 一小时中的某些数据,其他数据没有盘算怎么办
这里的pdf是天或者小时数据,以period_bench 盘算
在找到之前盘算过的数据之后,将之前盘算过的数据和pdf归并
开始盘算因子cal_min_factors cal_daily_factors 这里不懂,为什么要分开盘算,之后再看
  
   由于混杂了之前的历史数据,以及在盘算的时候,可能会带入一些别的列,这里找到了所有因子,和时间 币种一起保留下来,这里的数据是小时 / 天数据
  calculate_by_code


   pdf为period_bench的dataframe
mdf是min_bench的dataframe和币的历史数据的归并
  
   由于盘算量较大,假如之前有盘算过该数据,那么就找到之前的数据,并整理没有盘算过的时间周期
cal_min_factors cal_daily_factors盘算因子
这里对这两个数据的猜测是:cal_min_factors盘算1分钟到5分钟的数据,cal_daily_factors的作用是由五分钟数据盘算小时或者填数据
  
   保存数据
  cal_min_factors


   mdf 为数据和min_bench归并之后的效果
pdf(ddf)为period_bench数据,假如有已经盘算好的数据,则pdf和已经盘算好的数据归并
  
   只看一小时内放量k线的illq
成交量 > 平均成交量 + 标准差
此中平均成交量是这一小时/天的五分钟数据求平均
此中标准差是这一小时/天的五分钟数据求标准差
  cal_min_factors


cal_daily_factors


process_all_data

处理截面数据,好比5分钟和10分钟数据做加减乘除。。。
朋侪圈文案

个人做量化可行吗?
机器学习做量化可行吗?
自学量化
没有计划
抄我的就行
神经网络做量化,效果咋样?


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4