当前位置: 首页 > news >正文

农业公司怎样建立网站网站域名被重定向

农业公司怎样建立网站,网站域名被重定向,wordpress主题vue,好123上网主页免费文章目录 蜘蛛网策略研报概述持仓数据整理三大商品交易所的数据统一筛选共有会员清洗数据计算研报要求数据全部代码 策略结果分析无参数策略有参数策略正做反做 MSD技术指标化 蜘蛛网策略 策略来自《东方证券-股指期货趋势交易之蜘蛛网策略——从成交持仓表中捕捉知情投资者行为… 文章目录 蜘蛛网策略研报概述持仓数据整理三大商品交易所的数据统一筛选共有会员清洗数据计算研报要求数据全部代码 策略结果分析无参数策略有参数策略正做反做 MSD技术指标化 蜘蛛网策略 策略来自《东方证券-股指期货趋势交易之蜘蛛网策略——从成交持仓表中捕捉知情投资者行为-高子剑、魏建榕》 研报概述 结算会员成交持仓排名是每各交易日收盘后交易所官网会公布的内容披露信息为每个商品期货合约前20名结算会员的成交量与持仓量。 投资者的交易行为包含了对市场走势的预期并最终反映到成交量和持仓量的变化之中。 将投资者分为两类知情投资者和非知情投资者前者在交易时更加坚定地偏向于卖或买地某一边单位持仓量创造的成交量较小后者交易行为较为反复、单位持仓量创造的成交量较大。 由于成交量、持买单量、持卖单量的前20名会员各不相同挑出当月合约成交持仓表中3个排行榜共有的结算会员个数记为m(m$ 20 ) 将当月合约剔除该 m 个结算会员后剩余的成交量、持买单量、持卖单量等效的视为一个会员单位如此有 n m 1 个会员单位针对该 n 个会员单位成交量为 20)将当月合约剔除该m个结算会员后剩余的成交量、持买单量、持卖单量等效的视为一个会员单位如此有nm1个会员单位针对该n个会员单位成交量为 20)将当月合约剔除该m个结算会员后剩余的成交量、持买单量、持卖单量等效的视为一个会员单位如此有nm1个会员单位针对该n个会员单位成交量为V_i 持买单量为 持买单量为 持买单量为b_i 持卖单量为 持卖单量为 持卖单量为s_i 构建统计量 构建统计量 构建统计量Stat_i\frac{b_is_i}{V_i} 越大说明其知情成分越高针对前 20 名会员公司的总量构建统计量 越大说明其知情成分越高针对前20名会员公司的总量构建统计量 越大说明其知情成分越高针对前20名会员公司的总量构建统计量IF\frac{OI}{Vol}$其中OI为未平仓量持买单量持卖单量、Vol为成交量。 构建ITS知情投资者情绪Informed Trader Sentiment指标计算n个会员单位的Stat筛选Stat大于IF的会员单位将筛选出的会员单位作为知情投资者这些筛选出来的会员的持买单量之和为B、持卖单量之和为S I T S B − S B S ITS\frac{B-S}{BS} ITSBSB−S​。 构建UTS非知情投资者情绪Uninformed Trader Sentiment指标筛选Stat小于IF的会员单位作为非知情投资者 U T S B − S B S UTS\frac{B-S}{BS} UTSBSB−S​。 构建MSD市场情绪差异Market Sentiment Difference指标 M S D ≡ I T S − U T S MSD\equiv ITS-UTS MSD≡ITS−UTS描述了知情投资者与非知情投资者看多市场的力度差异。 策略 ITS0买入收盘价平仓。反之卖出收盘价平仓。我们可以第二日平仓。遍历参数ITS λ \lambda λ买入反之卖出。遍历参数UTS λ \lambda λ买入反之卖出。MSD λ \lambda λ买入反之卖出。MSD技术指标化MSDMA(MSD, n)买入反之卖出。 持仓数据整理 本次基础数据需要整理的内容有四点 三大商品交易所的数据统一筛选共有会员清洗数据计算研报要求数据 三大商品交易所的数据统一 商品期货交易所目前有四个郑州商品交易所、上海期货交易所、大连商品交易所、广州期货交易所。由于广期所目前只有工业硅一个品种不在我们统计范围内。 其它三个交易所他们的数据各自有各自的一些特点需要我们统一起来。 郑州商品交易所19年以后给出了纯英文和中英结合的文件前者给出了所有合约、后者只有主力合约因为我们不确定每次用的是交易所给到的合约还是没给到的因此我们筛选出后者 # 筛选不含中文的文件 def contains_chinese(file_path):return any(u\u4e00 char u\u9fff for char in file_path) if exchange ZhenZhou:futures_hold_folder_path_list [path for path in futures_hold_folder_path_list if not contains_chinese(path)]上期所和大商所有共同的问题就是没有时间因此 _, date_string os.path.split(os.path.split(path)[0]) temp_df pd.read_csv(path, encodinggbk, skiprows1) temp_df[交易时间] pd.to_datetime(date_string)上期所还有个问题是他的原始列名都是英文因此需要改成中文 if exchange ShangHai:temp_df.rename(columns{INSTRUMENTID: 品类,PARTICIPANTABBR1: 会员简称_总成交量, PARTICIPANTABBR2: 会员简称_总持买单量,PARTICIPANTABBR3: 会员简称_总持卖单量,CJ1: 成交量_总成交量, CJ2: 成交量_总持买单量, CJ3: 成交量_总持卖单量,CJ1_CHG: 增减_总成交量, CJ2_CHG: 增减_总持买单量, CJ3_CHG: 增减_总持卖单量, }, inplaceTrue)筛选共有会员 因为原始数据是一日一日的因此可以直接用groupby的方法分类这样就可以获取同一交易时间内的数据对其寻找交集字符也就是筛选共有会员公司 # 计算每日每个品种的交集字符 def find_intersection_chars(group):member_cols [会员简称_总成交量, 会员简称_总持买单量, 会员简称_总持卖单量]intersection set(group[member_cols[0]])for col in member_cols[1:]:intersection intersection.intersection(set(group[col]))return list(intersection) grouped temp_df.groupby([品类, 交易时间]) for group_name, group_df in grouped:intersection_chars find_intersection_chars(group_df) # 计算每日每个品种的交集字符清洗数据 原始数据都是str格式的也就是上了千的数字都有逗号这是第一点其次里面有些合约不活跃导致前二十名会员公司不全就会出现空值‘-’这个空值不能加减我们把他替换为0但是这里面有数据是负数相当于把其它的负值符号给消除了也是个问题我的解决方案是要求整个值完全相当于‘-’才做否则不弄 # 批量清理数据 def clean_and_convert(value):value 0 if pd.isna(value) or value - else str(value).replace(,, )return int(float(value)) columns_to_clean [成交量_总成交量, 成交量_总持买单量, 成交量_总持卖单量, 增减_总成交量, 增减_总持买单量, 增减_总持卖单量] group_df group_df.fillna(0) # 使用fillna()方法将NaN值替换为0 group_df[columns_to_clean] group_df[columns_to_clean].applymap(clean_and_convert) # 清理数据计算研报要求数据 这边代码多一些我的思路是基础数据都在这里计算好最后返回一个以具体合约、日期为索引的要求数据即单合约、单日期下只有一行数据比如MA305在2023年4月10日这一天的前二十名会员统计量等数据。 我这里是先把共有会员和非共有会员所需的数据计算出来然后按研报的来方法是创建一个字典然后循环验证是不是共有会员是的话添加进去然后分别计算统计量和IF统计量进行比较分类得到我们的需求数据。 # 基础数据 a group_df[group_df[会员简称_总成交量].isin(intersection_chars)][成交量_总成交量].sum() d group_df[~group_df[会员简称_总成交量].isin(intersection_chars)][成交量_总成交量].sum()# 衍生数据 IF (h j) / g member_data {member: {成交量_总成交量: 0, 成交量_总持买单量: 0, 成交量_总持卖单量: 0} for member in intersection_chars} # 创建一个字典来存储交集会员的买单量、卖单量和成交量 for member in intersection_chars:member_data[member][成交量_总成交量] group_df.loc[group_df[会员简称_总成交量] member, 成交量_总成交量].sum()member_data[member][成交量_总持买单量] group_df.loc[group_df[会员简称_总持买单量] member, 成交量_总持买单量].sum()member_data[member][成交量_总持卖单量] group_df.loc[group_df[会员简称_总持卖单量] member, 成交量_总持卖单量].sum() member_stats {member: (data[成交量_总持卖单量] data[成交量_总持买单量]) / data[成交量_总成交量] for member, data in member_data.items()} filtered_members {greater: [], less: []} for member, stats in member_stats.items():if stats IF:filtered_members[greater].append(member)else:filtered_members[less].append(member)全部代码 # variable exchange ZhenZhou # ZhenZhou, DaLian, ShangHaidef contains_chinese(file_path):return any(u\u4e00 char u\u9fff for char in file_path)# 计算每日每个品种的交集字符 def find_intersection_chars(group):member_cols [会员简称_总成交量, 会员简称_总持买单量, 会员简称_总持卖单量]intersection set(group[member_cols[0]])for col in member_cols[1:]:intersection intersection.intersection(set(group[col]))return list(intersection)# 批量清理数据 def clean_and_convert(value):value 0 if pd.isna(value) or value - else str(value).replace(,, )return int(float(value))# read data futures_hold_folder_path r\exchange_%s\* % exchange futures_hold_folder_path_list glob(os.path.join(futures_hold_folder_path, *)) if exchange ZhenZhou:futures_hold_folder_path_list [path for path in futures_hold_folder_path_list if not contains_chinese(path)]futures_hold_folder_path_list futures_hold_folder_path_list[2830:] elif exchange DaLian:futures_hold_folder_path_list futures_hold_folder_path_list[15830:] # 过滤前面不需要的时间 elif exchange ShangHai:futures_hold_folder_path_list futures_hold_folder_path_list[20830:] # 过滤前面不需要的时间result [] for path in tqdm.tqdm(futures_hold_folder_path_list):if exchange ZhenZhou:temp_df pd.read_csv(path, encodinggbk, parse_dates[交易时间], skiprows1)grouped temp_df.groupby([品类, 交易时间])else:_, date_string os.path.split(os.path.split(path)[0])temp_df pd.read_csv(path, encodinggbk, skiprows1)temp_df[交易时间] pd.to_datetime(date_string)if exchange ShangHai:temp_df.rename(columns{INSTRUMENTID: 品类,PARTICIPANTABBR1: 会员简称_总成交量, PARTICIPANTABBR2: 会员简称_总持买单量,PARTICIPANTABBR3: 会员简称_总持卖单量,CJ1: 成交量_总成交量, CJ2: 成交量_总持买单量, CJ3: 成交量_总持卖单量,CJ1_CHG: 增减_总成交量, CJ2_CHG: 增减_总持买单量, CJ3_CHG: 增减_总持卖单量, }, inplaceTrue)else:temp_df.rename(columns{合约代码: 品类,}, inplaceTrue)grouped temp_df.groupby([品类, 交易时间])for group_name, group_df in grouped:intersection_chars find_intersection_chars(group_df) # 计算每日每个品种的交集字符columns_to_clean [成交量_总成交量, 成交量_总持买单量, 成交量_总持卖单量, 增减_总成交量, 增减_总持买单量, 增减_总持卖单量]group_df group_df.fillna(0) # 使用fillna()方法将NaN值替换为0group_df[columns_to_clean] group_df[columns_to_clean].applymap(clean_and_convert) # 清理数据# 基础数据a group_df[group_df[会员简称_总成交量].isin(intersection_chars)][成交量_总成交量].sum()b group_df[group_df[会员简称_总持买单量].isin(intersection_chars)][成交量_总持买单量].sum()c group_df[group_df[会员简称_总持卖单量].isin(intersection_chars)][成交量_总持卖单量].sum()d group_df[~group_df[会员简称_总成交量].isin(intersection_chars)][成交量_总成交量].sum()e group_df[~group_df[会员简称_总持买单量].isin(intersection_chars)][成交量_总持买单量].sum()f group_df[~group_df[会员简称_总持卖单量].isin(intersection_chars)][成交量_总持卖单量].sum()g group_df[成交量_总成交量].sum()h group_df[成交量_总持买单量].sum()j group_df[成交量_总持卖单量].sum()# 衍生数据IF (h j) / gmember_data {member: {成交量_总成交量: 0, 成交量_总持买单量: 0, 成交量_总持卖单量: 0} for member in intersection_chars} # 创建一个字典来存储交集会员的买单量、卖单量和成交量for member in intersection_chars:member_data[member][成交量_总成交量] group_df.loc[group_df[会员简称_总成交量] member, 成交量_总成交量].sum()member_data[member][成交量_总持买单量] group_df.loc[group_df[会员简称_总持买单量] member, 成交量_总持买单量].sum()member_data[member][成交量_总持卖单量] group_df.loc[group_df[会员简称_总持卖单量] member, 成交量_总持卖单量].sum()member_stats {member: (data[成交量_总持卖单量] data[成交量_总持买单量]) / data[成交量_总成交量] for member, data in member_data.items()}filtered_members {greater: [], less: []}for member, stats in member_stats.items():if stats IF:filtered_members[greater].append(member)else:filtered_members[less].append(member)filtered_members_total_buy {greater: sum(member_data[member][成交量_总持买单量] for member in filtered_members[greater]),less: sum(member_data[member][成交量_总持买单量] for member in filtered_members[less])}filtered_members_total_sell {greater: sum(member_data[member][成交量_总持卖单量] for member in filtered_members[greater]),less: sum(member_data[member][成交量_总持卖单量] for member in filtered_members[less])}filtered_members_total_volume {greater: sum(member_data[member][成交量_总成交量] for member in filtered_members[greater]),less: sum(member_data[member][成交量_总成交量] for member in filtered_members[less])}# resultresult_dict {品类: group_name[0],交易时间: group_name[1],交集字符: intersection_chars,共有会员_总成交量: a,共有会员_总持买单量: b,共有会员_总持卖单量: c,非共有会员_总成交量: d,非共有会员_总持买单量: e,非共有会员_总持卖单量: f,前20会员总成交量: g,前20会员总持买单量: h,前20会员总持卖单量: j,IF: IF,ITS_buy: filtered_members_total_buy[greater], ITS_sell: filtered_members_total_sell[greater], ITS_volume: filtered_members_total_volume[greater], UTS_buy: filtered_members_total_buy[less], UTS_sell: filtered_members_total_sell[less], UTS_volume: filtered_members_total_volume[less]}result.append(result_dict) # 用字典的形式添加效率更高result_df pd.DataFrame(result) result result_df.sort_values([交易时间, 品类]) print(result) result.to_csv(rexchange/%s_hold.csv % (exchange), encodingGBK)策略 研报中只计算了共有会员中统计量大于前二十名会员的作为知情投资者共有会员中低于统计量的作为非知情投资者但这个非知情投资者或许本身更多倾向于知情投资者中的弱势知情投资者然后共有会员与非共有会员类似于大体量公司和小体量公司的对比小体量公司也会有大户存在或许反映了一些特殊情况。 因此我把共有会员和非共有会员按照研报的知情与非知情又构建了一次指标 def cal_spider_holding(df):df[知情投资者情绪_共有会员] (df[共有会员_总持买单量] - df[共有会员_总持卖单量]) / (df[共有会员_总持买单量] df[共有会员_总持卖单量]) # ITS类似df[非知情投资者情绪_非共有会员] (df[非共有会员_总持买单量] - df[非共有会员_总持卖单量]) / (df[非共有会员_总持买单量] df[非共有会员_总持卖单量]) # UTSdf[ITS_Stat] (df[ITS_buy] df[ITS_sell]) / df[ITS_volume]df[UTS_Stat] (df[UTS_buy] df[UTS_sell]) / df[UTS_volume]df[ITS] (df[ITS_buy] - df[ITS_sell]) / (df[ITS_buy] df[ITS_sell])df[UTS] (df[UTS_buy] - df[UTS_sell]) / (df[UTS_buy] df[UTS_sell])df[市场情绪差异_自创] df[知情投资者情绪_共有会员] - df[非知情投资者情绪_非共有会员] # MSDdf[MSD] df[ITS] - df[UTS] # MSDdf.fillna(methodffill, inplaceTrue)return df此外我把研报中的隔日持仓变为了趋势持仓即不出现相反信号的话就一直拿着之前的单子。 结果分析 持仓因子可以展示哪些品种资金影响程度大、哪些品种资金影响程度小以及哪些品种资金是正向指引、哪些品种资金是负向指引甚至可以进一步探究哪些品种的基本面与资金预期经常撇叉等。因此持仓因子也可以当作新因子加入量化体系目前各因子是等权重的后续可以根据IC等方式自动调整权重。 回测时间为2018年1月1日至2023年3月7日。 无参数策略 以下1为正做、-1为反做比如1时ITS0做多、0做空如果是-1则ITS0做空、0做多。 先更精确理解一下各定义首先ITS、UTS、知情投资者情绪、非知情投资者情绪的统计量构建是没有差别的都是对应的持买单量与持卖单量相减除以两者相加其次市场情绪差异和MSD的构建是一致的都是对应的知情减非知情。 然后更精确理解一下各分类 共有会员即前二十名会员中同时出现在三个榜单上的会员个人理解是偏向于大体量公司的比如中信、永安这种通常出现就会同时出现在三个榜单上因为体量太大了非共有会员即前二十名会员中没有同时出现在三个榜单上的会员个人理解是小体量公司但有自己倾向的可能是某个大户在里面但因为我们统计量是把他们加起来了所以展现出来没有什么偏好结果显示他们是最中性的可能也是侧面反映了此点ITS即共有会员中IF统计量大于合约IF统计量的会员之和也就是研报认为的知情投资者我理解是共有会员中单位持仓量创造成交量更小的、持仓相对合约本身坚定的会员但效果和共有会员差不多UTS即共有会员中IF统计量小于合约IF统计量的会员之和也就是研报认为的非知情投资者他确实是表现最差的分类是大体量客户中的开平仓较多的一批人。 首先整体来看效果不好只是个别品种存在一定效果而且每个品种表现好的策略不一样比如MA在ITS反做效果好、但FG在ITS正做效果好如此该策略就没有普适性更多需要去思考单体品种效果好的背后逻辑。 以下是年化收益在15%以上的策略与品种 para年化收益最大回撤年化收益回撤比symbol[‘ITS’, 1]0.39-0.251.54FG[‘知情投资者情绪_共有会员’, -1]0.38-0.420.91MA[‘市场情绪差异_自创’, -1]0.27-0.500.54TA[‘ITS’, -1]0.27-0.500.53MA[‘非知情投资者情绪_非共有会员’, -1]0.23-0.211.09RM[‘MSD’, 1]0.21-0.280.77ru[‘MSD’, 1]0.21-0.161.25PK[‘UTS’, 1]0.20-0.280.72lu[‘ITS’, -1]0.20-0.320.60p[‘非知情投资者情绪_非共有会员’, 1]0.20-0.620.32TA[‘UTS’, -1]0.19-0.250.76pg[‘知情投资者情绪_共有会员’, 1]0.19-0.310.62FG[‘ITS’, -1]0.19-0.340.55SA[‘市场情绪差异_自创’, 1]0.18-0.420.44FG[‘MSD’, -1]0.18-0.460.39MA[‘非知情投资者情绪_非共有会员’, -1]0.18-0.340.52SA[‘ITS’, -1]0.17-0.600.28TA[‘UTS’, 1]0.17-0.500.34ru[‘知情投资者情绪_共有会员’, -1]0.16-0.290.56OI[‘非知情投资者情绪_非共有会员’, 1]0.16-0.180.89lh[‘ITS’, -1]0.16-0.270.57OI[‘MSD’, 1]0.15-0.200.77l 有参数策略 正做 正做即参数时做多、参数时做空。 根据表格第一整体效果确实优于无参数策略第二可以明显发现收益的参数呈现左偏状态说明和研报里针对股指期货得到的结论相同同时该情况在历经10年以后依然在商品期货中表现第三不论是大体量公司还是偶尔上榜的小体量公司之和或是研报划定的知情投资者、非知情投资者全都按他们的净持仓反着做效果更好即跟市场大部分人反着做能赚钱(参数左偏的体现)。 参数左偏的原因研报里也已经解释前二十大会员通常净持仓为空头、由于机构套期保值的需求但左偏的程度是大于研报里的股指期货的回测了更细致的参数研报中的最佳参数-0.06在商品这里的平均回撤比就排到后面了商品的-0.6效果相对更好或许代表商品期货中产业套保力量的强大。 以下是年化收益在20%以上的策略与品种可以看到各品种集中度较高即某品种在不同策略的表现趋同 para年化收益最大回撤年化收益回撤比symbol[‘MSD’, -0.3]0.43-0.212.03pg[‘ITS’, 0]0.39-0.251.54FG[‘市场情绪差异_自创’, -0.3]0.27-0.400.67UR[‘ITS’, -0.3]0.25-0.161.60lu[‘ITS’, -0.6]0.25-0.400.64UR[‘知情投资者情绪_共有会员’, -0.6]0.25-0.400.63UR[‘UTS’, -0.6]0.25-0.400.63UR[‘市场情绪差异_自创’, -0.6]0.25-0.400.63UR[‘非知情投资者情绪_非共有会员’, -0.6]0.25-0.400.63UR[‘MSD’, -0.3]0.24-0.280.84PF[‘UTS’, -0.3]0.24-0.410.57UR[‘UTS’, -0.3]0.23-0.260.89pg[‘非知情投资者情绪_非共有会员’, -0.3]0.23-0.430.53UR[‘ITS’, -0.6]0.22-0.400.54i[‘知情投资者情绪_共有会员’, -0.6]0.22-0.400.54i[‘UTS’, -0.6]0.22-0.400.54i[‘知情投资者情绪_共有会员’, -0.3]0.22-0.400.54i[‘非知情投资者情绪_非共有会员’, -0.6]0.22-0.400.54i[‘市场情绪差异_自创’, -0.6]0.22-0.400.54i[‘MSD’, -0.6]0.22-0.400.54i[‘ITS’, -0.3]0.22-0.390.55i[‘UTS’, -0.3]0.21-0.400.53i[‘MSD’, 0]0.21-0.280.77ru[‘市场情绪差异_自创’, -0.3]0.21-0.220.95eb[‘非知情投资者情绪_非共有会员’, -0.3]0.21-0.400.52i[‘市场情绪差异_自创’, -0.6]0.21-0.290.73OI[‘MSD’, 0]0.21-0.161.25PK 反做 反做即参数时做空、参数时做多。 可以明显发现收益的参数呈现右偏状态和上个正做策略得到的结论一致。 MSD技术指标化 对MSD进行均线化具体策略为MSD上穿过去N日MSD均线时做多、反之做空。 参数平原不是特别有规律3日均线有着不错的收益。 但整体看效果并没有相对前述策略质的提升。
http://www.pierceye.com/news/51527/

相关文章:

  • 电子商务网站规划与建设摘要泉州wap网站制作
  • 滁州网站开发公司电话wordpress汉字后缀图片不显示
  • 凡科建站做网站需要几天近一周财经新闻热点
  • 郑州市城乡建设局证书查询seo网站建设规划
  • 苏州高端模板建站WordPress潮流媒体主题
  • 博物馆网站页面设计说明营销广告网站
  • 新开传奇网站单职业室内效果图网站
  • 简洁物流网站模板免费下载沈阳网站建设聚艺科技
  • 网站多语言 设计如何做转运网站
  • 网站未建设的情况说明书上海市安全建设监理协会网站
  • wordpress建站导航做ppt封面的网站
  • 企业网站群建设规范龙口网站建设
  • 那个软件可以做网站网站结构优化的内容和方法
  • 最便宜网站空间网站建设税收编码
  • php网站开发实例教程作业怎样提高百度推广排名
  • 北京首华建设经营有限公司网站河南百度推广电话
  • 网站seo入门机关事业单位网站备案
  • php开发网站建设灯具公司网站模板
  • 荣耀手机商城官方网站下载快看点号自媒体平台注册
  • 精美驾校企业网站模板极简app制作器
  • 什么网站可以找人做系统汽车集团网站建设
  • 了解网站建设的基本流程杭州网站定制开发哪家好
  • 北京建站公司哪个好去哪个网站做试用好
  • 现在c 做网站用什么软件如何自建外贸网站
  • 校园二手网站开发的意义网站建动态密码是否收费
  • 南通网站制作哪个好网站开发过程的分工
  • 怎么看网站用的什么程序做的wordpress分类目录层级
  • 如何在百度上搜索到自己的网站河北建设网
  • 企业成品网站模板广州有什么好玩的地方是免费的
  • 厦门网站建设一般多少钱中小型网站建设流程