数据

使用的数据IF合约的日数据:

链接:https://pan.baidu.com/s/1XGfITsSWdP_c1_wFepUs0A 
提取码:b880

主力合约计算规则:

1. 每个品种只选出唯一一个主力合约

2. 日成交量和持仓量都为最大的合约,确定为新的主力合约,于下一交易日进行指向切换

3. 按照第二条规定产生新的主力合约之前,维持原来的主力合约不变

4. 若出现当前主力合约的成交量和持仓量都不是最大的情况,当前指向合约在下一个交易日必须让出主力合约身份,新主力指向成交量最大的合约

计算方法:

1. 读入所有IF合约的日数据,合并到一张表中

2. 按日期进行分组,每组中的数据为当天所有在交易的合约

3. 对每组的数据按成交量和持仓量进行降序排序,排序的优先级为先成交量再持仓量

4. 取每组的第一行数据拼成一个新的表

5. 对新生成的表进行检查,看是否存在合约不连续的情况,检查方法为:

5.1 对表按时间进行升序排序

5.2 按合约进行分组

5.3 检查前一组的所有日期都在早于后一组最早的日期(也就是后一组第一行的日期)

开始计算

初始数据路径 ./if_list/

import os
import numpy as np
import pandas as pd

1. 读入所有的IF合约数据,合并成一张表

dir = r'./if_list/'
file_list = os.listdir(dir)
all_df = None
for file_name in file_list:ticker = file_name[0:-4]file_path = dir + file_namedf = pd.read_csv(file_path,encoding='utf-8',header=0,names=['date','open','close','low','high','volume','money','factor','high_limit','low_limit','avg','pre_close','paused','open_interest'])df['ticker'] = tickerif all_df is None:all_df = dfelse:all_df = pd.concat([all_df,df])

2. 按日期分组,取每组成交量和持仓量最大的一行组成一个新表

# 这个方法是对 成交量 和 持仓量 进行降序排序(即由大到小),排序优先级为先成交量后持仓量;排序后把第一行返回
def get_biggest_openinterest(x):df = x.sort_values(['volume','open_interest'],ascending=[False,False])return df.iloc[0,:]# 对所有合约合成的大表 all_df 按日期进行分组,每个日期的组里提取出成交量和持仓量最大的行 组成一个新的表 res_pd
all_df['date'] = pd.to_datetime(all_df['date'])
all_df.sort_values(by='date')
res_pd = all_df.groupby('date').apply(get_biggest_openinterest)

3. 检查合约是否连续

# 对表 res_pd 进行升序排列(即有小到大)
res_pd.sort_index(inplace=True)
# 对表 res_pd 按合约进行分组
res_group = res_pd.groupby('ticker')
# 提取每组的日期存入列表,然后对日期进行校验,确保每一组最早的那个日期都不会早于前一组的所有的日期,满足这个条件说明是连续合约
results_list = []
for name,group in res_group:results_list.append(group['date'].tolist())
for i in range(len(results_list)-1):pre_list = results_list[i]now_first = results_list[i+1][0]for item in pre_list:if item >= now_first:print(item,now_first)break

至此,res_pd是if的主力合约

pandas计算主力合约(模拟文化财经规则)相关推荐

  1. pandas计算主力合约收益率

    数据: 链接:https://pan.baidu.com/s/1XGfITsSWdP_c1_wFepUs0A  提取码:b880 特殊处理: 考虑到换月不同合约的数据会有较大差异,避免在计算收益率时在 ...

  2. pandas计算皮尔逊相关系数

    前置说明: 本文中使用的数据在文末提供下载,本文使用IH和IC主力合约的数据为例 目录 1. 概念 2. 计算过程 1. 概念 皮尔逊(pearson)相关系数:用于判断数据是否线性相关的方法 皮尔逊 ...

  3. 计算机怎么模拟人,计算机能不能模拟人的思维?

    元培学院李通 1200017674 最近我愈发感觉到计算机是那么的"不聪明".计算机只会机械地执行我写的程序代码,却从来不能帮助我分析和解决问题.我有时候想,要是计算机可以像人一样 ...

  4. vnpy框架的策略开发和回测逻辑详解---以螺纹钢主力合约的R-breaker日内策略为例

    笔者之前写过一篇关于vnpy的简单介绍和安装方法,本篇文章的目的是简单介绍vnpy的框架,然后详细介绍一下如何用vnpy开发自己的量化策略以及整个的回测逻辑是怎么样的.只有我们真的搞清楚了框架结构和相 ...

  5. python找出主力合约价格_主力合约列表

    期货主力合约完全列表 掘金数据支持期货主力合约全部历史数据,以方便研究和回测策略.主力合约的切换规则为: 该品种上市合约中持仓量最大的 并且只向前切换不回退 每日收盘结算后判断切换 主力合约完整的合约 ...

  6. 期货主力合约及其移仓特点(转)

    期货与股票不同的是,期货合约的生存周期是有限的,到合约最后交易日后就要交割,而且期货市场实行持仓限额制度.这两点对证券市场投资者不仅陌生,而且极不习惯.对于机构投资者来说,他们的投资是经过精心策划的, ...

  7. python使用pandas计算dataframe中每个分组的分位数极差、分组数据的分位数极差(range)、使用groupby函数和agg函数计算分组的两个分位数

    python使用pandas计算dataframe中每个分组的分位数极差.分组数据的分位数极差(range).使用groupby函数和agg函数计算分组的两个分位数 目录

  8. python使用pandas计算dataframe中每个分组的极差、分组数据的极差(range)、使用groupby函数和agg函数计算分组的最大值和最小值

    python使用pandas计算dataframe中每个分组的极差.分组数据的极差(range).使用groupby函数和agg函数计算分组的最大值和最小值 目录

  9. pandas计算dataframe两列数据值相等的行号、取出DataFrame中两列值相等的行号

    pandas计算dataframe两列数据值相等的行号.取出DataFrame中两列值相等的行号 目录 pandas计算dataframe两列数据值相等的行号.取出DataFrame中两列值相等的行号

最新文章

  1. PHP-Zend引擎剖析之Hello World(二)
  2. Deployer 的使用
  3. C# 操作其他进程ListView
  4. 国内人工智能专利布局存隐忧
  5. 01背包+概率问题 计蒜客 offer
  6. Emlog使用qq头像作为评论头像
  7. 计算机原理基础-原反补
  8. Scrapy 轻松定制网络爬虫
  9. 首页 、引导页、版本
  10. opencv项目6----AI绘画(隔空绘画)
  11. 第10章 数据库运行维护与优化
  12. 3、python 视频转图片及图片转视频、裁剪、创建图片压缩成视频
  13. 迅为RK3568开发板Debian系统安装ToDesk
  14. 如何(以及为什么)在Word文档中使用隐藏文本
  15. javascript原生初级到非凡-姜威-专题视频课程
  16. IPv6 基本原理详解介绍
  17. Java Type接口 运行时获取泛型类型
  18. N76E003合并boot和app
  19. 人工智能:群智能算法的一般框架、特点和不足
  20. 在日常使用中关于英特尔睿频加速的优劣分析(附带关闭睿频加速的两种方法)

热门文章

  1. jQuery实现消息列表循环垂直向上滚动
  2. 2022年第四届河南省CCPC大学生程序设计竞赛代码+简单思路(退役战了算是,还好金了)
  3. CSS笔试题: 实现表格首行首列固定和自适应窗口
  4. springboot 单元测试使用 @value读取不到值, yml的两个坑
  5. 【 malcolmcrum】基于Java后端与Typescript前端的代码自动生成
  6. 安卓机顶盒刷linux系统下载,安卓机顶盒刷机 最简单的刷机教程【图文教程】
  7. IDE+vim,提高开发效率
  8. YYCMS5.0影视系统/源码全开源无授权/影视站全自动采集
  9. ARTIX-7 XC7A35T实验项目之流水灯
  10. 输入框根据拼音首字母/中文字符联想补全