首页 / 专利库 / 银行与财务事项 / 证券 / 一种基于模糊查询的交易盈亏结果自动获取方法

一种基于模糊查询的交易盈亏结果自动获取方法

阅读:228发布:2020-05-08

专利汇可以提供一种基于模糊查询的交易盈亏结果自动获取方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于模糊查询的交易盈亏结果自动获取方法,包括步骤:1)通过 证券 公司 接口 自动获取结算数据,并将数据标准化;2)将标准化后的结算数据生成CSV文件,获取 指定 日期的委托明细,将委托明细与结算数据进行匹配;3)若匹配成功,根据委托明细计算做多笔数、做空笔数、盈利笔数、亏损笔数、最大持仓时间、最后交易时间、最大成交金额、平均持仓时间和平均成交金额,获取完成委托记录;4)对完整委托记录判断是否有零股,若是,则计算零股亏盈后统计交易亏盈,否则,直接统计交易亏盈;5)统计其他汇总数据,获取最终的交易盈亏结果。与 现有技术 相比,本发明具有减少人 力 成本、时间成本,提高效率,提高数据正确性等优点。,下面是一种基于模糊查询的交易盈亏结果自动获取方法专利的具体信息内容。

1.一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,该方法包括下列步骤:
1)通过证券公司接口自动获取包括每个账户指定日期的资金信息、持仓信息和交割单信息在内的结算数据;
2)对新的资金账号与标准表头之间建立映射关系,通过映射关系得到每个资金账号自定义的表头名称,进一步获取标准格式的结算数据;
3)将标准化后的结算数据生成CSV文件,并从数据库中获取指定日期的委托明细,将委托明细与CSV文件的结算数据进行匹配,若匹配成功,执行下一步;
4)根据委托明细计算做多笔数、做空笔数、盈利笔数、亏损笔数、最大持仓时间、最后交易时间、最大成交金额、平均持仓时间和平均成交金额,获取完成委托记录;
5)对完整委托记录判断是否有零股,若是,则计算零股亏盈后统计最终的交易亏盈,否则,直接统计交易亏盈;
6)统计其他汇总数据,结合步骤5)的最终的交易亏盈,获取最终的交易盈亏结果。
2.根据权利要求1所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,步骤3)中,采用根据委托编号,证券代码_买卖方向_成交数量_成交金额,证券代码_买卖方向_成交数量_成交价格三种不同的关键字组合对委托明细与CSV文件的结算数据进行匹配。
3.根据权利要求2所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,步骤3)中,匹配是否成功根据成交价格匹配时存在的浮点数精度进行判断,采用成交价格上浮一个最小变动区间和下调一个最小变动区间的方式自动获取最适合当前交易记录的结算数据。
4.根据权利要求3所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,步骤3)中,具体匹配规则包括:
1)若账户根据委托编号匹配本地委托记录和证券公司交割单,则首先将当前账户内所有本地委托记录以委托编号作为主键创建一个字典,遍历证券公司交割单里所有的结算记录,根据委托编号寻找对应的本地记录,并把交割单里面的结算数据复制到本地委托记录形成一笔完整的委托数据;
2)若账户根据成交金额匹配本地委托记录和证券公司交割单,且前提为本地委托明细和证券公司交割单没有对应的委托编号,成交金额为多笔成交金额累加的和,且是一个准确的数字,则首先将当前账户所有本地委托记录以证券代码_买卖方向_成交金额_成交数量作为主键创建一个字典,随后遍历证券公司交割单里所有的结算记录,同样按照证券代码_买卖方向_成交金额_成交数量作为主键寻找对应的本地委托记录,若主键相同,则匹配成功;
3)若账户根据委托编号和成交金额匹配本地委托记录和证券公司交割单,则通过成交均价和成交数量联合起来匹配数据。
5.根据权利要求3所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,最小变动区间取[0,0.001]。
6.根据权利要求1所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,步骤3)中,若找到匹配的结算信息,且结算单里存在清算金额,则将清算金额相加得到每个交易员的总盈亏,根据总盈亏计算公司收取的费用得到交易员盈亏,若结算单里无清算金额,则根据计算正确的清算金额;若找不到匹配的结算信息,则将结算单里的数据分配至管理用户。
7.根据权利要求6所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,若找到匹配的结算信息,结算单里无清算金额,则按照下式计算正确的清算金额:
若此交易为买入委托,则清算金额=0-成交金额-手续费-印花税-过户费-清算费-其他费;
若此交易为卖出委托,则清算金额=成交金额-手续费-印花税-过户费-清算费-其他费。
8.根据权利要求1所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,步骤5)中,若判断存在零股,则对T日产生的零股记录,在T+1日自动做账时检测相对应的资金账户,对相同证券代码采用相反买卖方向,并将该交易记录判定为T日零股的平仓记录;若零股于T+2日平仓,则将记录日期继续向后延,自动做账时根据实际情况区分,若T+1日没有针对T日的零股平仓,则自动将零股日期更新为T+2日。
9.根据权利要求1所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,步骤5)中,将已平仓零股和未平仓零股存放在不同的数据表中。
10.根据权利要求6所述的一种基于模糊查询的交易盈亏结果自动获取方法,其特征在于,管理用户存放找不到具体交易员的委托记录,包括非交易员的交易记录,出入金、分红分股交易记录。

说明书全文

一种基于模糊查询的交易盈亏结果自动获取方法

技术领域

[0001] 本发明涉及交易数据处理技术领域,尤其是涉及一种基于模糊查询的交易盈亏结果自动获取方法。

背景技术

[0002] 股票T+0交易是一种非常适合短线操作的投资交易方式,无论市场上涨还是下跌都可以找到合适的交易机会,如果多空方向操作适当基本可以保证日均万分之5的收益率,年化收益就是12%,这对于投资策略来说是一个非常好的Alpha工具,可以让策略收益率大大提高。
[0003] 然而多个交易员在同一个账户交易同一只股票对交易业绩计算的难度大大提高,由于盈亏的计算依赖于证券公司结算之后收取多少手续费、印花税、过户费等费用的数值,需要把本地的委托明细和证券公司结算之后的交割单对应起来确定每笔买入卖出的实际盈亏是多少。每一家证券公司各自设有相应的数据格式,基于此情况,现在的方式是手动登录每个账户的通达信软件导出Excel格式的文件,依次核对每笔委托是属于哪个交易员的,然后计算出盈亏数据,这样做效率非常低。导出Excel数据加上计算做账需要3-4个小时才能算完一天的账目,并且需要2个人分别做账来互相校验数据是否正确,时间成本和人成本过高,迫切需要一种能够把计算T+0交易员盈亏数据的过程全部自动化的方法。
[0004] 此外,在获取交易亏盈结果的过程中,需要考虑零股的参与,现有的方法是依靠人员猜测零股平仓委托的方式,数据处理质量较低;另外采用已平仓零股和未平仓零股存放在同一个表格的方式进行零股存储,由于T+1日的零股数据依赖于T日数据处理结果,若某一天数据处理错误需要重新计算,这种方式默认将已经平仓的零股回滚,其他不属于当天的数据则删掉,而一旦删除,数据将丢失,然后重新导入数据计算盈亏,将导致来回反复操作造成数据错误,进而无法计算零股的盈亏,使整个交易盈亏结果的获取出现问题。

发明内容

[0005] 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于模糊查询的交易盈亏结果自动获取方法。
[0006] 本发明的目的可以通过以下技术方案来实现:
[0007] 一种基于模糊查询的交易盈亏结果自动获取方法,包括如下步骤:
[0008] S1、通过证券公司接口自动获取包括每个账户指定日期的资金信息、持仓信息和交割单信息在内的结算数据。
[0009] S2、对新的资金账号与标准表头之间建立映射关系,通过映射关系得到每个资金账号自定义的表头名称,进一步获取标准格式的结算数据,这是一个数据从非标准化到标准化的过程。
[0010] S3、将标准化后的结算数据生成CSV文件,并从数据库中获取指定日期的委托明细,采用根据委托编号,证券代码_买卖方向_成交数量_成交金额,证券代码_买卖方向_成交数量_成交价格三种不同的关键字组合对委托明细与CSV文件的结算数据进行匹配。若匹配成功,执行下一步。
[0011] 具体匹配规则包括:
[0012] 1)若账户根据委托编号匹配本地委托记录和证券公司交割单,则首先将当前账户内所有本地委托记录以委托编号作为主键创建一个字典,遍历证券公司交割单里所有的结算记录,根据委托编号寻找对应的本地记录,并把交割单里面的结算数据复制到本地委托记录形成一笔完整的委托数据;
[0013] 2)若账户根据成交金额匹配本地委托记录和证券公司交割单,且前提为本地委托明细和证券公司交割单没有对应的委托编号,成交金额为多笔成交金额累加的和,且是一个准确的数字,则首先将当前账户所有本地委托记录以证券代码_买卖方向_成交金额_成交数量作为主键创建一个字典,随后遍历证券公司交割单里所有的结算记录,同样按照证券代码_买卖方向_成交金额_成交数量作为主键寻找对应的本地委托记录,若主键相同,则匹配成功;
[0014] 3)若账户根据委托编号和成交金额匹配本地委托记录和证券公司交割单,则通过成交均价和成交数量联合起来匹配数据。
[0015] 匹配是否成功根据成交价格匹配时存在的浮点数精度进行判断,采用成交价格上浮一个最小变动区间和下调一个最小变动区间的方式自动获取最适合当前交易记录的结算数据。优选地,最小变动区间取[0,0.001]。
[0016] 若找到匹配的结算信息,且结算单里存在清算金额,则将清算金额相加得到每个交易员的总盈亏,根据总盈亏计算公司收取的费用得到交易员盈亏,若结算单里无清算金额,则根据计算正确的清算金额;若找不到匹配的结算信息,则将结算单里的数据分配至管理用户。若找到匹配的结算信息,结算单里无清算金额,则按照下式计算正确的清算金额:
[0017] 若此交易为买入委托,则清算金额=0-成交金额-手续费-印花税-过户费-清算费-其他费;
[0018] 若此交易为卖出委托,则清算金额=成交金额-手续费-印花税-过户费-清算费-其他费。
[0019] 管理用户存放找不到具体交易员的委托记录,包括非交易员的交易记录,出入金、分红分股交易记录。
[0020] S4、根据委托明细计算做多笔数、做空笔数、盈利笔数、亏损笔数、最大持仓时间、最后交易时间、最大成交金额、平均持仓时间和平均成交金额,获取完成委托记录。
[0021] S5、对完整委托记录判断是否有零股,若是,则计算零股亏盈后统计最终的交易亏盈,否则,直接统计交易亏盈。
[0022] 若判断存在零股,则对T日产生的零股记录,在T+1日自动做账时检测相对应的资金账户,对相同证券代码采用相反买卖方向,并将该交易记录判定为T日零股的平仓记录;若零股于T+2日平仓,则将记录日期继续向后延,自动做账时根据实际情况区分,若T+1日没有针对T日的零股平仓,则自动将零股日期更新为T+2日。
[0023] 在本步骤中,将已平仓零股和未平仓零股存放在不同的数据表中。正常的委托和已平仓的零股委托保存在一个数据表中,未平仓的零股委托保存在另一个数据表中。
[0024] S6、统计其他汇总数据,结合步骤S5的最终的交易亏盈,获取最终的交易盈亏结果。
[0025] 与现有技术相比,本发明具有以下优点:
[0026] 1)本发明通过自动下载持仓、资金和交割单信息并生成标准格式的CSV文件,将数据从非标准化更新为标准化,解决了后续处理程序不同证券公司格式不一致的问题;
[0027] 2)本发明方法根据委托编号、成交金额、成交价格上下浮动多种不同的数据匹配方式,将数据匹配准确度提高到了99%以上,基本上无需手动调整数据,大大提高了效率,减少了人力成本和时间成本;
[0028] 3)本发明方法改进了零股平仓委托判断方式,根据T日零股的证券代码,零股数量之和在T+1日寻找相同证券代码,相同成交数量和相反交易方向的委托,判断准确度达到100%,完全抛弃了现有技术的猜测零股平仓委托的方式,大大提高了数据处理质量;
[0029] 4)本发明方法改进了零股存储方式,通过将已平仓零股和未平仓零股存放在不同的数据表,重新计算T日数据的时候未平仓零股无需要任何改动,且重新计算时只需将T日数据全部删除即可,不会破坏T+1日对T日数据的依赖关系,保证了数据的正确性。附图说明
[0030] 图1为本发明实施例中基于模糊查询的交易盈亏结果自动获取方法的流程示意图。

具体实施方式

[0031] 下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0032] 如图1所示,本发明涉及一种基于模糊查询的交易盈亏结果自动获取方法,包括以下步骤:
[0033] 步骤一、通过证券公司的查询接口自动下载每个账户指定日期的资金信息、持仓信息和交割单信息(包含账户每日结算后数据)。
[0034] 步骤二、由于每个证券公司接口提供的表头文字都不一样,因此本发明建立一套标准的表头信息,每个资金账号维护和标准表头的映射关系,经过这个映射关系处理之后变成了标准格式的资金数据、持仓数据和交割单数据,这是一个数据从非标准化到标准化的过程。
[0035] 例如,针对券商收取的手续费这个字段,中信证券交割单里面的列名是“手续费”,中信建投的列名“佣金”,河证券交割单对应的列名又是“净佣金”。需要针对每个证券公司在标准列名和券商个性化列名之间配置映射关系,这样增加一个新的券商只需要通过配置新资金账号的数据表头和标准表头的映射关系就可以正确处理数据,不需要对程序代码做任何改动,提高了程序的健壮性和通用性。
[0036] 步骤三、将标准化数据生成标准格式的CSV文件。
[0037] 通过每个资金账户表头的映射处理成统一的数据格式保存在csv文件当中。该方式摒弃了手动处理数据使用的excel格式,csv格式读取速度更快,更加容易处理中文字符集的乱码问题,并且不需要安装office oledb插件,让程序的兼容性大大提高。具体地:
[0038] 结算数据下载完成之后,从本地数据库获取到指定日期的委托明细和结算数据一一对应起来,匹配算法的难点在于证券公司的交易系统和数据查询系统分属于不同的系统模,查询系统提供的结算单里面可能不包含和本地委托记录对应的关键字信息,根据每个账户结算单数据的不同情况,本发明分别采取根据委托编号,证券代码_买卖方向_成交数量_成交金额,证券代码_买卖方向_成交数量_成交价格这三种不同的关键字组合对两边的数据进行匹配。根据成交价格匹配的时候存在浮点数精度不同来判断可能有匹配失败的情况,针对这种情况,采用了成交价格上浮一个最小变动区间(0.001)和下调一个最小变动区间(0.001)的方式尽可能自动找到最适合当前交易记录的结算数据。
[0039] 具体匹配规则如下:
[0040] 1)如果账户根据委托编号匹配本地委托记录和证券公司交割单。先把当前账户内所有本地委托记录以委托编号作为主键创建一个字典,遍历证券公司交割单里面所有的结算记录,根据委托编号找到对应的本地记录,把交割单里面的结算数据(清算金额、手续费、印花税、过户费、清算费和其他费用)复制到本地委托记录形成一笔完整的委托数据。例如本地委托记录有委托编号=436这一笔数据,去交割单里面查找委托编号=436的记录,如果找到就匹配成功,找不到就匹配失败。根据字典的主键匹配数据的时间复杂度是O(1),这是最高效的数据匹配方式。至此数据匹配的工作完成,进入下一步流程。
[0041] 2)如果账户根据成交金额匹配本地委托记录和证券公司交割单。这种情况的前提是本地委托明细和证券公司交割单没有对应的委托编号,成交金额是多笔成交金额累加的和相对来说是一个准确的数字。先把当前账户所有本地委托记录以证券代码_买卖方向_成交金额(精确到两位小数)_成交数量作为主键创建一个字典,然后遍历证券公司交割单里面所有的结算记录,同样按照证券代码_买卖方向_成交金额(精确到两位小数)_成交数量作为主键找到对应的本地委托记录,如果主键相同那么匹配成功。
[0042] 例如本地委托明细有一笔委托证券代码=600519,买卖方向=买入,成交数量=1000,成交金额=1206000,在交割单里面查找是否也存在同样的一笔记录,如果找到就是匹配成功,找不到就是匹配失败。这个操作的时间复杂度也是O(1)。
[0043] 3)如果账户根据委托编号和成交金额(例如交割单里面的成交金额是我们自己根据成交金额=成交均价*成交数量计算出来的,误差较大)就只能通过成交均价和成交数量联合起来匹配数据。
[0044] 例如本地委托明细有一笔委托证券代码=512480,买卖方向=买入,成交数量=1000,成交均价=1.388(精确到三位小数)。在交割单里面查找是否存在同样的一笔记录,如果存在匹配成功。如果不存在看是否有其他条件仙童,成交均价=1.387的记录,如果存在匹配成功;如果不存在查找是否有其他条件相同,成交均价=1.389的记录,如果存在匹配成功;如果还是没有那么就匹配失败。这个操作的时间复杂度也是O(3),由于成交均价存在误差,需要上下浮动一个价位。
[0045] 如果找到匹配的结算信息,并且结算单里面有清算金额,清算金额是带符号的,卖出委托的清算金额是正数,买入委托的清算金额是负数。把清算金额相加得到每个交易员的总盈亏。如果结算单里面没有现成的清算金额,就根据下面的公式计算出正确的清算金额。
[0046] 如果是买入委托,清算金额=0-成交金额-手续费-印花税-过户费-清算费-其他费;
[0047] 如果是卖出委托,清算金额=成交金额-手续费-印花税-过户费-清算费-其他费;
[0048] 如果找不到匹配的结算信息,就把结算单里面的数据划给特殊的“管理”用户,以备后续手工处理。“管理”用户存放任何找不到具体交易员的委托记录,可能是非交易员的交易记录,或者出入金、分红分股这种不需要结算给交易员的交易记录,全部处理给“管理”用户。
[0049] 步骤四、数据匹配结束之后,根据委托明细计算做多笔数、做空笔数、盈利笔数、亏损笔数、最大持仓时间、最后交易时间、最大成交金额、平均持仓时间和平均成交金额等信息。
[0050] 步骤五、对完整委托记录判断是否有零股。若判断有零股,则计算零股亏盈后统计最终的交易亏盈,若判断无零股,则直接统计交易亏盈。
[0051] 计算盈亏的过程中需要注意零股的处理。由于A股采取100股整数(科创股最低交易200股)倍买卖的方式,再加上分股送股方式的施行,交易过程中会产生零股数据,有4种产生零股的可能:
[0052] A、买入成交1000股,卖出成交960股,多买了40股,剩下40零股。
[0053] B、买入成交940股,只能卖出900股,多买了40股,剩下40零股。
[0054] C、卖出1000股,买入960股,必须再买入100股,保证下一个交易日有足够的数量可以卖出,所以零股都是多仓,产生了40股的零股。
[0055] D、卖出960股,买入1000股,产生了40股的零股。
[0056] 以上4种交易模式都会产生40股的零股,零股的持仓成本价是这次交易内最后一笔买入委托的成交价格,例如卖出2000股,成交价格10.00;先买入1240股平仓,成交价格9.52,再买入800股,成交价格9.60,40股零股的持仓成本价是9.60。这一笔交易就结束了,后面交易再产生零股和这一笔交易无关。
[0057] 由于A股是T+1结算的机制,为了保证下一个交易日有足够数量的持仓可以卖出,零股肯定是多买了股票,同一只股票多个交易员都可能产生零股,交易员A有40股零股,交易员B有80零股,一共就是120股零股,下一个交易日集合竞价阶段会有控人员统一卖出所有零股。
[0058] 如果T日生成了零股,一般来说T+1日会卖出零股平仓,买入的委托和卖出平仓的委托都移动到T+1日,盈亏也计算在T+1日,零股可能盈利也可能亏损,统计在指定的留仓账户,这都是公司的盈亏,不计算给产生零股的交易员。如果T日产生了40股和80股两条零股记录,T+1做账的时候检测对应资金账户,相同证券代码,相反买卖方向,成交数量=120的委托记录,这条记录就判定为针对T日零股的平仓记录。
[0059] 实际交易过程中零股不一定在T+1日平仓,可能在T+2日平仓,也可能继续往后延,自动做账的过程中会根据实际情况区分,如果T+1日没有针对T日的零股平仓,会自动把零股日期改到T+2日。
[0060] 对于现有技术来说,存放已平仓零股和未平仓零股使用一张表保存委托明细,假设发现某一天,如20190103的数据处理错误,需要重新计算,那么要把20190103这一天正常委托记录删掉,把属于以前交易日(可能是20190102也可能是20190101)的零股记录回滚,这些零股记录是不能删除的,一旦删除就丢失数据了。然后再重新导入数据计算盈亏,这个过程由于涉及到数据回滚和数据删除的流程,非常容易出错,导致以前总是不能计算零股的盈亏。
[0061] 本发明采用两张数据表Report_StockOrder和Report_StockOrder_LiuCang保存委托相关数据。正常的委托和已平仓的零股委托保存在Report_StockOrder表,所有未平仓的零股委托保存在Report_StockOrder_LiuCang表,如果发现某天的交易员盈亏处理有问题,可以把Report_StockOrder表里面的记录按照日期全部删除,然后重新处理即可。
[0062] 步骤六、统计其他汇总数据,结合步骤五统计后的最终的交易亏盈,获取最终的交易成果。
[0063] 本发明通过自动下载持仓、资金和交割单信息并生成标准格式的CSV文件,将数据从非标准化更新为标准化,解决了后续处理程序不同证券公司格式不一致的问题。此外,根据委托编号、成交金额、成交价格上下浮动多种不同的数据匹配方式,数据匹配准确度能够达到99%以上,基本上无需手动调整数据,大大提高了效率,减少了人力成本和时间成本。本发明还改进了零股存储方式,通过将已平仓零股和未平仓零股存放在不同的数据表,重新计算T日数据的时候未平仓零股无需要任何改动,且重新计算时只需将T日数据全部删除即可,不会破坏T+1日对T日数据的依赖关系,保证了数据的正确性。
[0064] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈