持仓明细的计算.docx_第1页
持仓明细的计算.docx_第2页
持仓明细的计算.docx_第3页
持仓明细的计算.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

持仓明细的计算总体算法:1. 抽取当前有效合约整个生命周期的数据(可以截取当前交易日一年前以来的所有交易数据);2. 从合约的上市交易日起,逐日计算持仓明细,并存入历史库。平仓基本准则:先开先平持仓盈亏计算:1 构造三个游标CURSOR_HPOS:历史持仓明细从历史库取上一持仓日的客户持仓明细,按持仓实体主键(合约代码、会员代码、客户号、投保标志、方向、交易日期、成交编号)排序CURSOR_COPEN:当日开仓记录从当日成交表中获取所有开仓记录,按持仓实体主键排序CURSOR_CCLOSE:当日平仓记录从当日成交表中获取所有平仓记录,按交易日期、合约代码、会员代码、客户号、投保标志、平仓类型(平今仓、平昨仓)、方向分组,统计分组下的平仓量汇总。注:分组很重要以下基于以上三个游标,构建当日新开仓(即去掉当日平仓后的净新开仓)以及当日持仓明细记录。2 以CURSOR_CCLOSE为基准,如果CURSOR_CCLOSE为空,即无当日平仓,那么CURSOR_COPEN即为当日新开仓记录,计入TODAY_NEW_OPEN表,如果CURSOR_CCLOSE不为空,那么需对平仓进行处理。3 取CURSOR_CCLOSE中记录,判断平仓类型,如果为平今仓,那么就跟CURSOR_COPEN比,如果平昨仓,那么就跟CURSOR_HPOS比。以下以平仓类型为平今仓为例说明,平昨仓流程与平今仓同,只不过比较的基准是CURSOR_HPOS。4 如果CURSOR_CCLOSE中的持仓实体与CURSOR_COPEN中的持仓实体不相同,表明CURSOR_COPEN中当前持仓实体当日有新开仓,但无平仓记录,此时,直接将CURSOR_COPEN的当前记录计入TODAY_NEW_OPEN表,作为当日新开仓记录,取下一条开仓记录;否则,即CURSOR_CCLOSE中的持仓实体与CURSOR_COPEN中的持仓实体相同,表明当前持仓实体当日即有开仓,又有平仓,那么继续进行如下处理。5 判断CURSOR_CCLOSE中的平仓量,如果大于CURSOR_COPEN的开仓量,那么计算剩余平仓量=平仓量-开仓量,取下一条开仓记录;注:此种情况下,当日应该有多次开仓,而此处的平仓量是当日平今的汇总量,即当日汇总后的平今仓量平掉了多条当日开仓记录,因而开仓记录游标CURSOR_COPEN需往下移一条。6 如果CURSOR_CCLOSE中的平仓量小于或等于CURSOR_COPEN的开仓量,那么剩余平仓量清0,计算剩余开仓量=开仓量-平仓量,并将剩余开仓量计入TODAY_NEW_OPEN表,取下一条平仓记录。注:此种情况下,当前持仓实体主键的平今已经处理完毕,平仓记录指针需往下移一条,继续处理下一个持仓实体主键的平仓。举例:假定:昨日对应的交易日为2009/03/22今日对应的交易日为2009/03/23会员代码均为0001投保标志均为投机多空方向均为多头 历史持仓明细:持仓日期客户号合约代码开仓日期开仓价成交编号数量20090321111111CU0907200903082800021520090321222222CU0907200903092700013420090321111111CU0908200903073000012220090322111111CU0907200903082800021520090322222222CU0907200903092700013420090322111111CU0908200903073000012220090322222222CU09082009032229000146 当日交易:交易日期客户号合约代码成交价成交编号数量开平标志20090323111111CU09072900012平昨20090323222222CU090828000210开仓20090323111111CU09073000032开仓20090323222222CU09082900046平今20090323222222CU09082900054平今那么CUSOR_HPOS为:持仓日期客户号合约代码开仓日期开仓价成交编号数量20090322111111CU0907200903082800021520090322222222CU0907200903092700013420090322111111CU0908200903073000012220090322222222CU09082009032229000146CURSOR_COPEN为:交易日期客户号合约代码成交价成交编号数量开平标志20090323111111CU09073000032开仓20090323222222CU090828000210开仓CURSOR_CCLOSE为:交易日期客户号合约代码数量开平标志20090323111111CU09072平昨20090323222222CU090810=6+4平今1CURSOR_CCLOSE不为空,取出一条平仓记录,判断对应的持仓实体(客户111111在合约CU0907的投机多头)的平仓类型(平昨),那么此时比较的基准应该为CURSOR_HPOS(而不是CURSOR_COPEN);2取CURSOR_HPOS的一条记录,此时记录为:持仓日期客户号合约代码开仓日期开仓价成交编号数量20090322111111CU090720090308280002153判断CURSOR_CCLOSE对应的持仓实体是否与CURSOR_HPOS中相同(此时均为客户111111+合约CU0907的投机多头持仓);4比较CURSOR_CCLOSE中的平仓量与CURSOR_HPOS中的持仓量CURSOR_CCLOSE.平仓量=2CURSOR_HPOS.数量=5CURSOR_CCLOSE.平仓量= CURSOR_HPOS.数量5.计算剩余持仓量= CURSOR_HPOS.数量- CURSOR_CCLOSE.平仓量,将剩余持仓量计入当日持仓明细表NEW_HIS_POSITION6CURSOR_CCLOSE往下移一条,此时记录为:交易日期客户号合约代码数量开平标志20090323222222CU090810=6+4平今7 判断对应的持仓实体(客户222222在合约CU0908的投机多头)的平仓类型(平今),那么此时的比较基准应该为CURSOR_COPEN(而不是CURSOR_HPOS)。注:本步骤实际上是循环跳转到第1步。8 取CURSOR_COPEN的一条记录,此时记录为:交易日期客户号合约代码成交价成交编号数量开平标志20090323111111CU09073000032开仓此时,CURSOR_COPEN的持仓实体(客户111111)与CURSOR_CCLOSE(客户222222)不同,直接CURSOR_COPEN中该记录计入当日新开仓表TODAY_NEW_OPEN;9 将CURSOR_COPEN往下移一条,此时记录为:交易日期客户号合约代码成交价成交编号数量开平标志20090323222222CU090828000210开仓此时,CURSOR_COPEN的持仓实体(客户222222)与CURSOR_CCLOSE(客户222222)相同; 10判断CURSOR_CCLOSE的平仓量与CURSOR_COPEN中的开仓量; CURSOR_CCLOSE.平仓量=10=6+4CURSOR_HPOS.数量=10CURSOR_CCLOSE.平仓量= CURSOR_HPOS.数量刚好平光,不必计入当日新开仓表。 11CURSOR_CCLOSE继续往下移,此时为EOF,即结束。 整个循环就此结束。此时,CURSOR_COPEN的指针指向第2条,CURSOR_HPOS第1条。12需将到目前为止未处理完毕(指针未指向EOF)的CURSOR_COPEN记录插入到当日新开仓表TODAY_NEW_OPEN,将未处理的CURSOR_HPOS记录插入到当日持仓明细表NEW_HIS_POSITION。CURSOR_COPEN往下移动即为EOF,因此没有未处理完毕记录,而CURSOR_HPOS还剩3条未处理记录。未处理记录处理完毕后,TODAY_NEW_OPEN的记录为持仓日期客户号合约代码开仓日期开仓价成交编号数量20090323111111CU0907200903233000032NEW_HIS_POSITION的记录为:持仓日期客户号合约代码开仓日期开仓价成交编号数量20090322111111CU09072009030828000213=5-220090322222222CU0907200903092700013420090322111111CU0908200903073000012220090322222222CU09082009032229000146绿色记录为第4步插入的,红色记录为第12步插入的在循环中未被处理的历史持仓明细。13当日的最终持仓明细为:TODAY_NEW_OPEN与NEW_HIS_POSITION的并集(union)。持仓日期客户号合约代码开仓日期开仓价成交编号数量20090323111111CU090720090323300003220090322111111CU090720090

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论