论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
物联网
›
物联网
›
高频直播笔记
高频直播笔记
熊熊出没
金牌会员
|
2024-8-28 12:58:39
|
显示全部楼层
|
阅读模式
楼主
主题
683
|
帖子
683
|
积分
2049
盘算五分钟流动性因子
分钟数据降采样到五分钟
盘算五分钟最短路径
一小时累计成交额
一小时累计最短路径
5分钟流动性 = 成交额 / 最短路径
如何天生高频因子
分钟数据得到小时/日线因子
日线因子放入之前的回测框架
高频脚本功能
时序
截面
兼容性
增量盘算
案例
illq = 1h成交额 / 1h最短路径
高频化:
1分钟 - 5分钟
5m最短路径 - 标准化
求和 - 1h最短路径
illq = 1h成交额 / 1h最短路径
这里的最短路径要了解一下
魔改
上涨
放量
筛选出一小时内满足要求的五分钟数据,基于这些数据盘算illq
代码
股票的逻辑为:
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
calculate_by_code
盘算每个币的高频因子
首先读取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表示的是那些没有被盘算因子的时间点
将每个币盘算出来的数据归并,然后按照时间 symbol排序,symbol是啥
遍历因子,处理数据,在界面范围盘算因子
根据因子对数据分组
对每组数据
将因子保存在‘分钟因子下面’
因子的盘算在factors下面的因子文件中实现
cal_min_factors
参数: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,将时间 币种 因子 都放进去
末了到底在干嘛???
之前盘算出了每个币种在选币周期得到的因子
然后对每个因子,盘算截面范围上的因子,
接着对数据按照币种分类,对于每个币的每个大因子
将这个信息都存储在分钟因子文件中。
理解
因子的构造:首先拥有的是分钟级别的数据,首先需要盘算因子,然后选股,盘算因子需要一个日期,选股需要一个日期
好比这里,我们采用了以日为单位的选股,但是直接采用分钟数据进行选股需要很大的盘算量,难么就先用五分钟的数据,然后用5分钟的数据盘算日线因子,以盘算出来的日线因子作为选股标准。
代码
读取预备数据
读取原始文件
创建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 pdf
mdf 为数据和min_bench归并之后的效果
pdf(ddf)为period_bench数据,假如有已经盘算好的数据,则pdf和已经盘算好的数据归并
需要盘算的是特定时间的数据,所以,先获取mdf中特定时间下的数据
现在的数据是分钟数据,首先要得到五分钟/10分钟数据。减小数据量
然后盘算小时/天数据。
这里的周期开始交易日什么意思
temp复制分钟数据
然后resample成5/10分钟数据,周期开始交易日为第一个分钟,并将名字改回candle_begin_time
得到5/10分钟数据之后,盘算最短路径,这里可以再看看,因为我也不知道最短路径是啥???
这里为什么要盘算5和10分钟,只盘算5不可吗???
最短路径:2*(最高价 - 最低价) / abs(开盘价 - 收盘价)
最短路径标准化:最短路径 / 当天/小时的第一个开盘价
标准化的作用:让值在0-1之间
盘算小时/日的成交额之和,盘算最短路径之和
将盘算出来的小时/日的因子归并到ddf中。
所以说这里的5分钟和10分钟,在盘算出来之后,这些因子都要被归并在ddf中
现有的代码,只盘算了因子,基于分钟数据,首先resample成5/10分钟,基于5/10分钟的数据,盘算小时/日的因子
盘算出因子之后,选股,绘制资金曲线不在考虑范围之内。
放量流动性
只看一小时内放量k线的illq
成交量 > 平均成交量 + 标准差
此中平均成交量是这一小时/天的五分钟数据求平均
此中标准差是这一小时/天的五分钟数据求标准差
cal_min_factors
总的来说,这个函数,传入mdf和pdf,此中mdf是分钟级别的原数据,pdf是小时/天级别的目的数据
根据分钟数据,这个函数可以盘算5/10/20分钟的因子
首先将分钟数据resample为5/10分钟数据
然后盘算因子,写到pdf
甚至可以魔改,挑选一定条件下的因子,放到pdf
cal_daily_factors
这个函数的调用是在盘算完cal_min_factors之后,对pdf进行处理
这里在处理的数据是盘算出来小时/天的因子之后,对数据进行rolling操纵,是一个时序操纵,盘算的是小时/天的rolling操纵
这里有n和d,n表示的是5/10分钟,d表示的是rolling的天数
process_all_data
处理截面数据,好比5分钟和10分钟数据做加减乘除。。。
朋侪圈文案
个人做量化可行吗?
机器学习做量化可行吗?
自学量化
没有计划
抄我的就行
神经网络做量化,效果咋样?
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
熊熊出没
金牌会员
这个人很懒什么都没写!
楼主热帖
TortoiseGit间接处理linux目录下的仓库 ...
django小项目 ----- 创建错题集 ...
在字节跳动干软件测试5年,4月无情被辞 ...
Java如何调用HttpURLConnection类模拟 ...
[Golang] GO 语言工作环境的基本概念 ...
SeaTunnel 发布成为 Apache 顶级项目后 ...
Java 知识 - 接口代理
Spring(十):注解实现自动装配 ...
java 基础——数组
3. Caller 服务调用 - dapr
标签云
挺好的
服务器
快速回复
返回顶部
返回列表