CN106780023A - 自动化金融交易方法及交易*** - Google Patents
自动化金融交易方法及交易*** Download PDFInfo
- Publication number
- CN106780023A CN106780023A CN201611068205.9A CN201611068205A CN106780023A CN 106780023 A CN106780023 A CN 106780023A CN 201611068205 A CN201611068205 A CN 201611068205A CN 106780023 A CN106780023 A CN 106780023A
- Authority
- CN
- China
- Prior art keywords
- data
- transaction
- price
- module
- buying
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种自动化金融交易方法,包括以下步骤:步骤1,调用交易服务商应用编程接口,获得当前的实时交易数据;步骤2,计算当前实时成交数据的均值和标准差,以及指数的最近多个采样点的均值和标准差;步骤3,根据上述各值计算出合适的买入价格和卖出价格;步骤4,按照上述计算出的买入价格和卖出价格,调用交易服务商应用编程接口,挂限价买入单;步骤5,调用应用服务商编程接口,检查上述买入单是否成交。本发明通过实时统计量优化模型参数,在短期市场行情波动近似符合正态分布的条件,能够将一种做市商交易策略的未来给定时间段内的交易收益期望值最大化。本发明还公开了一种自动化金融交易***。
Description
技术领域
本发明涉及一种金融产品自动交易方法,具体涉及一种自动化金融交易方法。本发明还涉及一种自动化金融交易***。
背景技术
随着金融市场的多样化、全球化和信息化,以高频交易为代表的自动化金融交易(也称算法交易)正在变得越来越重要。
与人工交易不同,自动化交易通常采用频繁买入卖出的做市商策略和/或跨市场套利策略,并利用买入卖出交易对的价差获利。尽管每一次交易的价差和收益都很小,但利用强大的计算能力和网络传输能力,可以在较短时间内完成大量的买卖单,从而实现稳定可观的获利。同时,由于只关心当前及未来很短时间的价格变化,所以也规避了长时间持有筹码所带来的不确定性。
但是,在自动交易中,如何确定合理的买卖价格是个仁者见仁智者见智的问题。如果买卖价差过小,则显然会影响总收益;如果挂单买卖价差过大,则可能很长时间内难以成交,不仅影响了资金利用效率,还增加了整体的不确定性。因此,需要对自动化交易方法进行优化,以期获得更佳的收益。
例如通过回归分析可以对价格走势做出一些判断和预测,但线性分析的精确性比较有限;使用人工神经网络等方法可以处理比较复杂的关系,但是训练过的模型背后的经验规则却很难从金融角度给以解释。同时,由于金融市场的动态性、随机性以及交易策略的多样性,用少数几种方法实现放之四海而皆准的规则几乎是不可能的。
目前,一类典型的做市商策略是:根据当前市场行情,以稍低于市价的价格挂单买入筹码,再以稍高于市价的价格挂单卖出筹码,以赚取差价。在此类策略中,买卖价差是影响策略获利的关键因素:如果该价差是固定值,则当市场波动较小时,价差偏大,不仅会导致交易不易在短期内成交,增加了持有筹码的风险,还影响了总体收益;而当市场波动较大时,设置的固定价差可能偏小,尽管交易可以在短期内成交,但因为每对交易获利较小,也影响了总体收益。
发明内容
本发明所要解决的技术问题是提供一种自动化金融交易方法,它可以将做市商交易策略的给定时间段内的交易收益期望值最大化。
为解决上述技术问题,本发明自动化金融交易方法的技术解决方案为,包括以下步骤:
步骤1,调用交易服务商应用编程接口,获得当前的实时交易数据;所述实时交易数据包括但不限于盘口数据、实时成交数据、当前指数、当前成交量;
数据抓取***连接到交易服务商服务器;
数据抓取***从交易服务商服务器读取数据报文;
数据抓取***从读取的数据报文中解析实时交易数据;
数据抓取***将解析出的实时交易数据发送至数据标准化***;
数据标准化***将实时交易数据进行归一化处理。
步骤2,计算当前实时成交数据的均值和标准差,以及指数的最近多个采样点的均值和标准差;
计算当前实时成交数据的均值和标准差的具体步骤为:
数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***;
行情数据处理***读取归一化的实时成交数据,并加入到历史成交数据队列中;
行情数据处理***计算成交价格的均值和标准差。
计算指数的最近多个采样点的均值和标准差的具体步骤为:
行情数据处理***读取配置文件;
行情数据处理***从配置文件中获得指定的采样点的个数;
数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***;
行情数据处理***读取当前指数,并加入到指数序列中;
行情数据处理***对指数序列进行正态性检验;
行情数据处理***根据所述采样点的个数计算指数序列的均值和标准差。
步骤3,根据上述各值计算出合适的买入价格和卖出价格;
具体步骤为:
买入价格偏移量初值设为-3;卖出价格偏移量初值设为-3;
当前候选买入价格的初值设置为当前成交价格均值加上当前买入价格偏移量乘以指数序列的标准差;
当前候选卖出价格的初值设置为当前成交价格均值加上当前卖出价格偏移量乘以指数序列的标准差;
计算出当前候选卖出价格与当前候选买入价格之差;
将候选买入价格与候选卖出价格转换为对应的标准正态分布值;
计算小于当前买入价格的概率值,即候选买入价格的标准正态分布值的累计分布函数;
计算大于当前卖出价格的概率值,即候选卖出价格的标准正态分布值的残余函数;
计算小于当前买入价格的概率值的倒数与大于当前卖出价格的概率值的倒数之和;
用卖出价格与买入价格之差除以小于当前买入价格的概率值的倒数与大于当前卖出价格的概率值的倒数之和,并将该值及与该值对应的买入价格偏移量和卖出偏价格移量添加入候选值队列中;
卖出价格偏移量增加0.1,循环上述步骤,直到卖出价格偏移量为3;
买入价格偏移量增加0.1,循环上述步骤,直到买入价格偏移量为3;
从候选值队列中,选取最大值,并找到该最大值对应的买入价格和卖出价格,即为合适的买入价格和卖出价格。
步骤4,按照上述计算出的买入价格和卖出价格,调用交易服务商应用编程接口,挂限价买入单;
交易决策***将步骤3计算出的合适的买入价格和卖出价格传递给交易执行***;
交易决策***读取当前账户的持仓信息;
交易决策***根据当前账户的持仓信息计算买入量;
交易决策***将买入价格和买入数量传递给交易执行***;
交易执行***将买入价格和买入数量信息打包到交易请求报文;
交易执行***将交易请求报文发送给交易服务商服务器;
交易执行***从交易服务商服务器获得请求应答;
如果请求应答指示交易接受成功,则交易执行***将该交易的唯一编号保存到未完成交易队列中;
如果请求应答指示交易接受失败,则重复发送该请求至少一次。
步骤5,调用应用服务商编程接口,检查上述买入单是否成交;
若上述买入单成交,则计算出一个能够盈利的卖出价格,调用交易服务商应用编程接口挂限价卖出单;
若上述买入单在指定时间内未能成交,则取消该买入单。
取消该买入单的具体步骤为:
交易执行***通过优先级队列维护未完成买入单;
交易执行***定时检查优先级队列中的到期未完成买入单;
如果检查到有超时的未完成买入单,交易执行***调用交易服务商编程接口取消未完成买入单;
取消指令使用至少两个线程发送以规避偶然网络连接错误;
如果两个线程都发送指令失败,则重复尝试至少一次;
如果重复取消三次仍然失败,则记录错误日志。
本发明还提供一种自动化金融交易***,其技术解决方案为:
包括数据抓取***、数据标准化***、行情数据处理***、交易决策***、交易执行***;数据抓取***连接交易服务商服务器;数据抓取***接收来自于交易服务商服务器的数据报文,根据数据报文解析实时交易数据,并将解析出的实时交易数据发送至数据标准化***进行归一化处理;数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***;行情数据处理***根据归一化处理后的实时交易数据计算成交价格的均值和标准差以及指数序列的均值和标准差;交易决策***根据成交价格的均值和标准差以及指数序列的均值和标准差,按照下式计算出合适的买入价格和卖出价格;
RevenueT=(Cask-Cbid)/[1/CDF(Zbid)+1/SF(Zask)] (式1.3)
其中RevenueT为给定时间段T内的收益值,
Cask为挂单卖出价,
Cbid为挂单买入价,
CDF()为累计分布函数;
SF()为剩余函数,
Zbid=(Cbid-Ct0)/Stdt0,
Zask=(Cask-Ct0)/Stdt0,
Ct0为当前时刻t0的市价均值,
Stdt0为当前时刻t0的标准差,
交易执行***根据所计算的合适的买入价格和卖出价格,通知交易服务商服务器执行交易。
所述数据抓取***包括第一网络连接管理模块、数据请求报文编码模块、数据应答报文解码模块、数据抓取插件管理模块;
数据请求报文编码模块通过第一网络连接管理模块向交易服务商服务器发送指令请求数据报文,交易服务商服务器接收指令后通过第一网络连接管理模块将数据报文发送给数据应答报文解码模块;数据抓取插件管理模块能够使数据请求报文编码模块和数据应答报文解码模块适应不同的交易服务商服务器。
所述数据标准化***包括数据格式解析模块、数据格式归一化模块、标准数据缓存模块;数据抓取***的数据应答报文解码模块接收数据报文后发送给数据格式解析模块进行解析,数据格式解析模块将解析后的数据报文发送给数据格式归一化模块,数据格式归一化模块对数据进行校验和解析;数据格式归一化模块将归一化处理的数据报文发送给标准数据缓存模块进行缓存,并将该盘口数据的唯一标识符发送给行情数据处理***的盘口数据统计分析模块进行进一步处理。
所述行情数据处理***包括盘口数据统计分析模块;盘口数据统计分析模块根据送达的盘口数据的唯一标识符,从标准数据缓存模块中取出盘口数据内容并解析;盘口数据统计分析模块取出最近成交交易列表,计算最近成交交易列表的成交平均价和成交价格的标准差;盘口数据统计分析模块将当前的最近成交交易列表的成交平均价加入到成交平均价队列的队列尾部,计算历史成交平均价队列最近多个采样点的标准差。
所述交易决策***包括策略插件管理模块、一个或多个策略插件模块、交易策略上下文模块,其中一个策略插件模块用于执行式1.3的计算;策略插件管理模块用于管理策略插件模块;交易策略上下文模块用于向策略插件模块提供决策所需信息。
所述交易执行***包括第二网络连接管理模块、交易请求包编码模块、交易应答包解码模块、交易执行控制模块;交易执行控制模块调用交易请求包编码模块,构造指令请求包;交易执行控制模块通过第二网络连接管理模块发送指令给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块调用交易应答包解码模块,解析接收到的应答数据。
所述交易执行控制模块调用交易请求包编码模块,构造买入请求包;交易执行控制模块将该买入请求包通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,解析接收到的应答数据,并从中读取买入交易的唯一编号;
在获得买入交易的唯一编号后,交易执行控制模块构造查询请求包,通过从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送查询请求,并接收应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,并从中读取买入交易的交易状态;
如果买入交易已经成交,交易执行控制模块从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送卖出交易请求;交易执行控制模块调用交易请求包编码模块,构造卖出请求包;交易执行控制模块将该卖出请求包通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,并从中读取卖出交易的唯一编号;
如果买入交易经过若干秒后仍未成交,交易执行控制模块从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送取消买入交易请求;交易执行控制模块调用交易请求包编码模块,构造取消买入请求包;交易执行控制模块将该取消买入请求包,通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,并从中读取取消买入交易的状态。
本发明可以达到的技术效果是:
本发明通过实时采集、统计和分析市场数据和盘口数据,预测未来较近时间内大概率出现的可盈利的最佳买入卖出价格差值,实现金融产品的自动化在线交易。
本发明通过实时统计量优化模型参数,在短期市场行情波动近似符合正态分布的条件,能够将一种做市商交易策略的未来给定时间段内的交易收益期望值最大化。
本发明实时统计分析市场数据和盘口数据,动态计算调整模型参数,实现对市场变化的自适应。
本发明使用解析法定义单位时间内的收益函数,并通过数值法计算该函数在合理区间内的最大值范围,更具体来讲,就是求解一个曲面在Cask和Cbid的合理区间下的RevenueT的局部最大值。本发明针对符合特定统计分布的金融市场的特定交易策略,建立一种可解释且符合数理金融逻辑的优化交易策略及其实现***。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明:
图1是本发明自动化金融交易方法的流程示意图;
图2是本发明的收益函数曲面示意图。
具体实施方式
如图1所示,本发明自动化金融交易方法,包括以下步骤:
步骤1,调用交易服务商应用编程接口,获得当前的实时交易数据,实时交易数据包括但不限于盘口数据、实时成交数据、当前指数、当前成交量;
具体步骤为:
数据抓取***连接到交易服务商服务器;
数据抓取***从交易服务商服务器读取数据报文;
数据抓取***从读取的数据报文中解析实时交易数据;
数据抓取***将解析出的实时交易数据发送至数据标准化***;
数据标准化***将实时交易数据进行归一化处理;
步骤2,计算当前实时成交数据的均值和标准差,以及指数的最近多个采样点的均值和标准差;
计算当前实时成交数据的均值和标准差的具体步骤为:
数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***,通知行情数据处理***进行处理;
行情数据处理***读取归一化的实时成交数据,并加入到历史成交数据队列中;
行情数据处理***计算成交价格的均值和标准差;
计算指数的最近多个采样点的均值和标准差的具体步骤为:
行情数据处理***读取本地配置文件;
行情数据处理***从配置文件中获得指定的采样点的个数;
数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***,通知行情数据处理***进行处理;
行情数据处理***读取当前指数,并加入到指数序列中;
行情数据处理***对指数序列进行正态性检验;
行情数据处理***根据所述采样点的个数计算指数序列的均值和标准差;
步骤3,根据上述各值计算出合适的买入价格和卖出价格;
具体步骤为:
买入价格偏移量初值设为-3;卖出价格偏移量初值设为-3;
当前候选买入价格的初值设置为当前成交价格均值加上当前买入价格偏移量乘以指数序列的标准差;
当前候选卖出价格的初值设置为当前成交价格均值加上当前卖出价格偏移量乘以指数序列的标准差;
计算出当前候选卖出价格与当前候选买入价格之差;
将候选买入价格与候选卖出价格转换为对应的标准正态分布值;
计算小于当前买入价格的概率值,即候选买入价格的标准正态分布值的累计分布函数;
计算大于当前卖出价格的概率值,即候选卖出价格的标准正态分布值的残余函数;
计算小于当前买入价格的概率值的倒数与大于当前卖出价格的概率值的倒数之和;
用卖出价格与买入价格之差除以小于当前买入价格的概率值的倒数与大于当前卖出价格的概率值的倒数之和,并将该值及与该值对应的买入价格偏移量和卖出偏价格移量添加入候选值队列中;
卖出价格偏移量增加0.1,循环上述步骤,直到卖出价格偏移量为3;
买入价格偏移量增加0.1,循环上述步骤,直到买入价格偏移量为3;
从候选值队列中,选取最大值,并找到该最大值对应的买入价格和卖出价格,即为合适的买入价格和卖出价格;
步骤4,按照上述计算出的买入价格和卖出价格,调用交易服务商应用编程接口,挂限价买入单;
具体步骤为:
交易决策***将步骤3计算出的合适的买入价格和卖出价格传递给交易执行***;
交易决策***读取当前账户的持仓信息;
交易决策***根据当前账户的持仓信息计算买入量;
交易决策***将买入价格和买入数量传递给交易执行***;
交易执行***将买入价格和买入数量信息打包到交易请求报文;
交易执行***将交易请求报文发送给交易服务商服务器;
交易执行***从交易服务商服务器获得请求应答;
如果请求应答指示交易接受成功,则交易执行***将该交易的唯一编号保存到未完成交易队列中;
如果请求应答指示交易接受失败,则重复发送该请求至少一次;
步骤5,调用应用服务商编程接口,检查上述买入单是否成交;
若上述买入单成交,则计算出一个能够盈利的卖出价格,调用交易服务商应用编程接口挂限价卖出单;
若上述买入单在指定时间内未能成交,则取消该买入单;
取消该买入单的具体步骤为:
交易执行***通过优先级队列维护未完成买入单;
交易执行***定时检查优先级队列中的到期未完成买入单;
如果检查到有超时的未完成买入单,交易执行***调用交易服务商编程接口取消未完成买入单;
取消指令使用至少两个线程发送以规避偶然网络连接错误;
如果两个线程都发送指令失败,则重复尝试至少一次;
如果重复取消三次仍然失败,则记录错误日志。
本发明计算买入价格的原理如下:
设给定时间段为T,该时间段内的收益值为RevenueT,设此时间段内,挂单买入价为Cbid,挂单卖出价为Cask,其中,以做多为例,有Cask>Cbid,则此交易对的获利为Cask-Cbid;
设一个买单成交所需的时间为Tbid,一个卖单成交的时间为Task,两个交易有以先后完成顺序,则一个交易对完成的总时间为Task+Tbid;
则T时间段内的总收益为
RevenueT=[Tx(Cask-Cbid)]/(Task+Tbid) (式1.1)
同时,由上述内容可知,Task为Cask的函数,Tbid为Cbid的函数。
为了简化分析,假设最近市场波动服从正态分布,设当前时刻为t0,当前市价均值为Ct0,标准差为Stdt0,则可将Cbid与Cask转换成标准正态分布Zbid和Zask,其中
Zbid=(Cbid-Ct0)/Stdt0
Zask=(Cask-Ct0)/Stdt0
按照限价单交易规则和市场价格变动周期为tsample,则有
Tbid=tsample/CDF(Zbid)
类似的
Task=tsample/SF(Zask)
其中,SF()为剩余函数,它表示了下一时刻价格大于Zask的概率,即下一时刻卖单成交概率;而CDF()为累计分布函数,它表示了下一时刻市价低于Zbid的概率,亦即下一时刻买单成交的概率;
将上述Task及Tbid代入式1.1,则有
RevenueT=[Tx(Cask-Cbid)]/[tsample/CDF(Zbid)+tsample/SF(Zask)] (式1.2)
由于T及tsample可以设为常量,因此式1.2可以简化为
RevenueT=(Cask-Cbid)/[1/CDF(Zbid)+1/SF(Zask)] (式1.3)
其中Cask和Cbid为变量,Zbid和Zask为Cask及Cbid的函数。
式1.3阐述了T时间段内的收益期望值与该时间段内的所挂买单价格、卖单价格以及时间段内市场波动的关系。该函数在某个输入组合下的图像如图2所示。
具体来讲,本发明在合理区间内求解该函数曲面的局部最大值,并以此最大值所对应的买入卖出价格进行自动交易。
本发明的求解算法可以Python语言实现,并使用NumPy和SciPy库来进行统计分析计算。
本发明自动化金融交易***,包括数据抓取***、数据标准化***、行情数据处理***、交易决策***、交易执行***;
数据抓取***连接交易服务商服务器;
数据抓取***接收来自于交易服务商服务器的数据报文,根据数据报文解析实时交易数据,并将解析出的实时交易数据发送至数据标准化***;
数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***;
行情数据处理***根据归一化处理后的实时交易数据计算成交价格的均值和标准差以及指数序列的均值和标准差;
交易决策***根据成交价格的均值和标准差以及指数序列的均值和标准差计算出合适的买入价格和卖出价格;
交易执行***根据所计算的合适的买入价格和卖出价格,通知交易服务商服务器执行交易。
数据抓取***包括第一网络连接管理模块、数据请求报文编码模块、数据应答报文解码模块、数据抓取插件管理模块;数据请求报文编码模块通过第一网络连接管理模块向交易服务商服务器发送指令请求数据报文,交易服务商服务器接收指令后通过第一网络连接管理模块将数据报文发送给数据应答报文解码模块;数据抓取插件管理模块能够使数据请求报文编码模块和数据应答报文解码模块适应不同的交易服务商服务器。
数据标准化***包括数据格式解析模块、数据格式归一化模块、标准数据缓存模块;数据抓取***的数据应答报文解码模块接收数据报文后发送给数据格式解析模块进行解析,数据格式解析模块将解析后的数据报文(其中包括盘口数据)发送给数据格式归一化模块,数据格式归一化模块对数据进行校验和解析;数据格式归一化模块将归一化处理的数据报文发送给标准数据缓存模块进行缓存,并将该盘口数据的唯一标识符发送给行情数据处理***的盘口数据统计分析模块进行进一步处理。
行情数据处理***包括盘口数据统计分析模块;盘口数据统计分析模块根据送达的盘口数据的唯一标识符,从标准数据缓存模块中取出盘口数据内容并解析;盘口数据统计分析模块取出最近成交交易列表,计算最近成交交易列表的成交平均价和成交价格的标准差;盘口数据统计分析模块将当前的最近成交交易列表的成交平均价加入到成交平均价队列的队列尾部,计算历史成交平均价队列最近多个采样点的标准差。
交易决策***包括策略插件管理模块、一个或多个策略插件模块、交易策略上下文模块,其中一个策略插件模块用于执行式1.3的计算;策略插件管理模块用于管理策略插件模块;交易策略上下文模块用于向策略插件模块提供决策所需信息。
交易执行***包括第二网络连接管理模块、交易请求包编码模块、交易应答包解码模块、交易执行控制模块,交易执行控制模块调用交易请求包编码模块,构造指令请求包;交易执行控制模块通过第二网络连接管理模块发送指令给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块调用交易应答包解码模块,解析接收到的应答数据。
优选地,数据抓取***的第一网络连接管理模块建立并维护一组与交易服务商服务器之间的连接,以减小每次请求建立并解除连接所带来的等待时间;同时,每隔60秒在每个链接上发送一个数据报文,以确保每个连接都保持激活;
数据采集守护进程每隔5毫秒从第一网络连接管理模块中选择一个可用连接,并通过该连接调用交易服务商的RESTAPI来获取实时盘口数据,JSON形式的实时盘口数据包括OrderBook,最近的实时成交单列表;其中,5毫秒为默认间隔时间,该值可由用户配置设定。
盘口数据统计分析模块根据送达的盘口数据的唯一标识符,从标准数据缓存模块中取出盘口数据内容,并调用JSON开发库进行解析,解析产生与之对应的Python对象;接着盘口数据统计分析模块从Python对象中取出最近成交交易列表,该列表以Python数组的形式存在;然后,盘口数据统计分析模块调用NumPy库中的方法,计算最近成交交易列表的成交平均价和成交价格的标准差;由历史数据统计分析可知,最近成交交易列表的成交平均价与指数存在正相关,而成交价格的标准差与买卖价差(BidAskSpread)存在正相关;
盘口数据统计分析模块将当前的最近成交交易列表的成交平均价加入到成交平均价队列的队列尾部,该队列表示了成交平均价的走势;然后调用NumPy库的方法,计算历史成交平均价队列最近1000个点,最近5000点和最近10000点的标准差;这些值表示了最近2秒,最近10秒和最近20秒的成交价格的波动性;采样点序列的长度可由用户配置指定;
在本实施例中,约定买卖价格的合理范围的默认值为当前成交均价加减三个标准差,并在此范围内计算使得收益期望有最大值的买入卖出价格组合,该范围的具体值可由用户配置指定。
在获得上述信息后,交易决策***按照下列步骤计算最佳买入卖出价格对;
设定候选买入价格和候选卖出价格初值;将候选卖出价格转换为标准正态分布对应的Z值;将候选买入价格转换为标准正态分布对应的Z值;调用SciPy库计算卖出价格所对应Z值的剩余函数;调用SciPy库计算买入价格所对应Z值的累计分布函数;计算卖出价格所对应Z值的剩余函数的倒数与买入价格所对应Z值的累计分布函数的倒数之和;计算卖出价格与买入价格之差,并以该差值除以上一步骤的卖出价格所对应Z值的剩余函数的倒数与买入价格所对应Z值的累计分布函数的倒数之和,计算出来的值即为该买入卖出价格对在本时间范围内的收益期望值,并将该期望值以及该买入卖出价格对加入候选队列中;
如上所述,设定卖出价格的范围为当前成交均价减去3个标准差;设定买入价格的为当前成交均价减去3个标准差;循环上述步骤,计算出该范围内的所有候选买入卖出价格对的收益期望值,并加入候选买入卖出价格队列;
上述计算完成后,从候选买入卖出价格队列中选择收益期望值最大的一个组合;如果最大值组合不止一个,则取队列中第一个出现的最大值组合;
当确定了最佳买入卖出价格对后,将该买入价格和卖出价格传递给交易执行***进行自动交易;
交易执行***的第二网络连接管理模块建立和维护与交易服务商服务器之间的连接,同时保持一定数量的已建立连接,该连接用于向交易服务商服务器发送交易请求;
交易执行控制模块调用交易请求包编码模块,构造买入请求包,该请求包中包括买入数量、买入限价价格;交易执行控制模块将该买入请求包通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,将应答数据封装为Python对象,并从中读取买入交易的唯一编号;
在获得买入交易的唯一编号后,交易执行控制模块构造查询请求包,通过从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送查询请求,并接收应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,将应答数据封装为Python对象,并从中读取买入交易的交易状态;
如果买入交易已经成交,交易执行控制模块从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送卖出交易请求;交易执行控制模块调用交易请求包编码模块,构造卖出请求包,该请求包中包括交易数量、卖出限价价格;交易执行控制模块将该卖出请求包通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,将应答数据封装为Python对象,并从中读取卖出交易的唯一编号;
如果买入交易经过若干秒后仍未成交,交易执行控制模块从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送取消买入交易请求;交易执行控制模块调用交易请求包编码模块,构造取消买入请求包;交易执行控制模块将该取消买入请求包,通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,将应答数据封装为Python对象,并从中读取取消买入交易的状态。
Claims (14)
1.一种自动化金融交易方法,其特征在于,包括以下步骤:
步骤1,调用交易服务商应用编程接口,获得当前的实时交易数据;所述实时交易数据包括但不限于盘口数据、实时成交数据、当前指数、当前成交量;
步骤2,计算当前实时成交数据的均值和标准差,以及指数的最近多个采样点的均值和标准差;
步骤3,根据上述各值计算出合适的买入价格和卖出价格;
步骤4,按照上述计算出的买入价格和卖出价格,调用交易服务商应用编程接口,挂限价买入单;
步骤5,调用应用服务商编程接口,检查上述买入单是否成交;
若上述买入单成交,则计算出一个能够盈利的卖出价格,调用交易服务商应用编程接口挂限价卖出单;
若上述买入单在指定时间内未能成交,则取消该买入单。
2.根据权利要求1所述的自动化金融交易方法,其特征在于:所述步骤1的具体步骤为:
数据抓取***连接到交易服务商服务器;
数据抓取***从交易服务商服务器读取数据报文;
数据抓取***从读取的数据报文中解析实时交易数据;
数据抓取***将解析出的实时交易数据发送至数据标准化***;
数据标准化***将实时交易数据进行归一化处理。
3.根据权利要求1所述的自动化金融交易方法,其特征在于:所述步骤2中计算当前实时成交数据的均值和标准差的具体步骤为:
数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***;
行情数据处理***读取归一化的实时成交数据,并加入到历史成交数据队列中;
行情数据处理***计算成交价格的均值和标准差。
4.根据权利要求1所述的自动化金融交易方法,其特征在于:所述步骤2中计算指数的最近多个采样点的均值和标准差的具体步骤为:
行情数据处理***读取配置文件;
行情数据处理***从配置文件中获得指定的采样点的个数;
数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***;
行情数据处理***读取当前指数,并加入到指数序列中;
行情数据处理***对指数序列进行正态性检验;
行情数据处理***根据所述采样点的个数计算指数序列的均值和标准差。
5.根据权利要求1所述的自动化金融交易方法,其特征在于:所述步骤3的具体步骤为:
买入价格偏移量初值设为-3;卖出价格偏移量初值设为-3;
当前候选买入价格的初值设置为当前成交价格均值加上当前买入价格偏移量乘以指数序列的标准差;
当前候选卖出价格的初值设置为当前成交价格均值加上当前卖出价格偏移量乘以指数序列的标准差;
计算出当前候选卖出价格与当前候选买入价格之差;
将候选买入价格与候选卖出价格转换为对应的标准正态分布值;
计算小于当前买入价格的概率值,即候选买入价格的标准正态分布值的累计分布函数;
计算大于当前卖出价格的概率值,即候选卖出价格的标准正态分布值的残余函数;
计算小于当前买入价格的概率值的倒数与大于当前卖出价格的概率值的倒数之和;
用卖出价格与买入价格之差除以小于当前买入价格的概率值的倒数与大于当前卖出价格的概率值的倒数之和,并将该值及与该值对应的买入价格偏移量和卖出偏价格移量添加入候选值队列中;
卖出价格偏移量增加0.1,循环上述步骤,直到卖出价格偏移量为3;
买入价格偏移量增加0.1,循环上述步骤,直到买入价格偏移量为3;
从候选值队列中,选取最大值,并找到该最大值对应的买入价格和卖出价格,即为合适的买入价格和卖出价格。
6.根据权利要求1所述的自动化金融交易方法,其特征在于:所述步骤4的具体步骤为:
交易决策***将步骤3计算出的合适的买入价格和卖出价格传递给交易执行***;
交易决策***读取当前账户的持仓信息;
交易决策***根据当前账户的持仓信息计算买入量;
交易决策***将买入价格和买入数量传递给交易执行***;
交易执行***将买入价格和买入数量信息打包到交易请求报文;
交易执行***将交易请求报文发送给交易服务商服务器;
交易执行***从交易服务商服务器获得请求应答;
如果请求应答指示交易接受成功,则交易执行***将该交易的唯一编号保存到未完成交易队列中;
如果请求应答指示交易接受失败,则重复发送该请求至少一次。
7.根据权利要求1所述的自动化金融交易方法,其特征在于:所述步骤5中取消该买入单的具体步骤为:
交易执行***通过优先级队列维护未完成买入单;
交易执行***定时检查优先级队列中的到期未完成买入单;
如果检查到有超时的未完成买入单,交易执行***调用交易服务商编程接口取消未完成买入单;
取消指令使用至少两个线程发送以规避偶然网络连接错误;
如果两个线程都发送指令失败,则重复尝试至少一次;
如果重复取消三次仍然失败,则记录错误日志。
8.一种自动化金融交易***,其特征在于,包括数据抓取***、数据标准化***、行情数据处理***、交易决策***、交易执行***;
数据抓取***连接交易服务商服务器;
数据抓取***接收来自于交易服务商服务器的数据报文,根据数据报文解析实时交易数据,并将解析出的实时交易数据发送至数据标准化***进行归一化处理;
数据标准化***将归一化处理后的实时交易数据发送给行情数据处理***;
行情数据处理***根据归一化处理后的实时交易数据计算成交价格的均值和标准差以及指数序列的均值和标准差;
交易决策***根据成交价格的均值和标准差以及指数序列的均值和标准差,按照下式计算出合适的买入价格和卖出价格;
RevenueT=(Cask-Cbid)/[1/CDF(Zbid)+1/SF(Zask)] (式1.3)
其中RevenueT为给定时间段T内的收益值,
Cask为挂单卖出价,
Cbid为挂单买入价,
CDF()为累计分布函数;
SF()为剩余函数,
Zbid=(Cbid-Ct0)/Stdt0,
Zask=(Cask-Ct0)/Stdt0,
Ct0为当前时刻t0的市价均值,
Stdt0为当前时刻t0的标准差,
交易执行***根据所计算的合适的买入价格和卖出价格,通知交易服务商服务器执行交易。
9.根据权利要求8所述的自动化金融交易***,其特征在于:所述数据抓取***包括第一网络连接管理模块、数据请求报文编码模块、数据应答报文解码模块、数据抓取插件管理模块;
数据请求报文编码模块通过第一网络连接管理模块向交易服务商服务器发送指令请求数据报文,交易服务商服务器接收指令后通过第一网络连接管理模块将数据报文发送给数据应答报文解码模块;数据抓取插件管理模块能够使数据请求报文编码模块和数据应答报文解码模块适应不同的交易服务商服务器。
10.根据权利要求8所述的自动化金融交易***,其特征在于:所述数据标准化***包括数据格式解析模块、数据格式归一化模块、标准数据缓存模块;
数据抓取***的数据应答报文解码模块接收数据报文后发送给数据格式解析模块进行解析,数据格式解析模块将解析后的数据报文发送给数据格式归一化模块,数据格式归一化模块对数据进行校验和解析;数据格式归一化模块将归一化处理的数据报文发送给标准数据缓存模块进行缓存,并将该盘口数据的唯一标识符发送给行情数据处理***的盘口数据统计分析模块进行进一步处理。
11.根据权利要求8所述的自动化金融交易***,其特征在于:所述行情数据处理***包括盘口数据统计分析模块;盘口数据统计分析模块根据送达的盘口数据的唯一标识符,从标准数据缓存模块中取出盘口数据内容并解析;盘口数据统计分析模块取出最近成交交易列表,计算最近成交交易列表的成交平均价和成交价格的标准差;盘口数据统计分析模块将当前的最近成交交易列表的成交平均价加入到成交平均价队列的队列尾部,计算历史成交平均价队列最近多个采样点的标准差。
12.根据权利要求8所述的自动化金融交易***,其特征在于:所述交易决策***包括策略插件管理模块、一个或多个策略插件模块、交易策略上下文模块,其中一个策略插件模块用于执行式1.3的计算;策略插件管理模块用于管理策略插件模块;交易策略上下文模块用于向策略插件模块提供决策所需信息。
13.根据权利要求8所述的自动化金融交易***,其特征在于:所述交易执行***包括第二网络连接管理模块、交易请求包编码模块、交易应答包解码模块、交易执行控制模块;交易执行控制模块调用交易请求包编码模块,构造指令请求包;交易执行控制模块通过第二网络连接管理模块发送指令给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块调用交易应答包解码模块,解析接收到的应答数据。
14.根据权利要求13所述的自动化金融交易***,其特征在于:所述交易执行控制模块调用交易请求包编码模块,构造买入请求包;交易执行控制模块将该买入请求包通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,解析接收到的应答数据,并从中读取买入交易的唯一编号;
在获得买入交易的唯一编号后,交易执行控制模块构造查询请求包,通过从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送查询请求,并接收应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,并从中读取买入交易的交易状态;
如果买入交易已经成交,交易执行控制模块从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送卖出交易请求;交易执行控制模块调用交易请求包编码模块,构造卖出请求包;交易执行控制模块将该卖出请求包通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,并从中读取卖出交易的唯一编号;
如果买入交易经过若干秒后仍未成交,交易执行控制模块从第二网络连接管理模块中选取一个可用连接向交易服务商服务器发送取消买入交易请求;交易执行控制模块调用交易请求包编码模块,构造取消买入请求包;交易执行控制模块将该取消买入请求包,通过从第二网络连接管理模块中选取的连接发送给交易服务商服务器,并接受应答;接受到应答后,交易执行控制模块再调用交易应答包解码模块,来解析接收到的应答数据,并从中读取取消买入交易的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611068205.9A CN106780023A (zh) | 2016-11-29 | 2016-11-29 | 自动化金融交易方法及交易*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611068205.9A CN106780023A (zh) | 2016-11-29 | 2016-11-29 | 自动化金融交易方法及交易*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106780023A true CN106780023A (zh) | 2017-05-31 |
Family
ID=58904936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611068205.9A Withdrawn CN106780023A (zh) | 2016-11-29 | 2016-11-29 | 自动化金融交易方法及交易*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106780023A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268329A (zh) * | 2017-12-28 | 2018-07-10 | 武汉长江仪器自动化研究所有限公司 | 一种灌浆记录仪网络终端的数据处理方法及装置 |
CN111429236A (zh) * | 2020-04-21 | 2020-07-17 | 重庆新致金服信息技术有限公司 | 做市商成交模式的交易***及方法 |
CN112019598A (zh) * | 2020-07-31 | 2020-12-01 | 深圳华云信息***有限公司 | 一种分布式云计算*** |
CN114037534A (zh) * | 2021-11-10 | 2022-02-11 | 南京通通付网络科技有限公司 | 全天候自动量化交易方法 |
-
2016
- 2016-11-29 CN CN201611068205.9A patent/CN106780023A/zh not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268329A (zh) * | 2017-12-28 | 2018-07-10 | 武汉长江仪器自动化研究所有限公司 | 一种灌浆记录仪网络终端的数据处理方法及装置 |
CN108268329B (zh) * | 2017-12-28 | 2022-01-28 | 武汉长江仪器自动化研究所有限公司 | 一种灌浆记录仪网络终端的数据处理方法及装置 |
CN111429236A (zh) * | 2020-04-21 | 2020-07-17 | 重庆新致金服信息技术有限公司 | 做市商成交模式的交易***及方法 |
CN111429236B (zh) * | 2020-04-21 | 2023-08-08 | 重庆新致金服信息技术有限公司 | 做市商成交模式的交易***及方法 |
CN112019598A (zh) * | 2020-07-31 | 2020-12-01 | 深圳华云信息***有限公司 | 一种分布式云计算*** |
CN114037534A (zh) * | 2021-11-10 | 2022-02-11 | 南京通通付网络科技有限公司 | 全天候自动量化交易方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106780023A (zh) | 自动化金融交易方法及交易*** | |
US8266156B2 (en) | Collaborative content evaluation | |
CN104579854B (zh) | 众包测试方法 | |
CN109858985A (zh) | 商品信息处理、展示的方法以及装置 | |
CN109492863A (zh) | 金融单证的自动生成方法及装置 | |
CN107409149A (zh) | 混合的客户端‑服务器数据提供 | |
CN105654311A (zh) | 提供用户信息的方法及装置 | |
CN107563460A (zh) | 基于条形码技术的成品出入库管理方法及*** | |
CN110033123A (zh) | 用于业务评估的方法和装置 | |
CN114782123A (zh) | 一种信用评估方法及*** | |
CN109409948A (zh) | 交易异常检测方法、装置、设备及计算机可读存储介质 | |
CN111352841A (zh) | 金融交易软件的质量检测方法及装置 | |
CN116701191A (zh) | 量化回测的优化方法、装置、设备、存储介质及程序产品 | |
CN112150179A (zh) | 一种信息推送方法和装置 | |
Križanováa et al. | Marketing research as a tool of customers contentment determination | |
CN108073632B (zh) | 用于终端的信息处理的方法、装置和*** | |
CN111062800A (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN109886805A (zh) | 一种借贷方法和*** | |
Rahayu | Correlation between technological readiness and business sophistication in global competitiveness | |
CN108573446A (zh) | 银行卡认证方法、装置、设备及可读存储介质 | |
CN110188116B (zh) | 核对脚本的处理方法及装置、存储介质、电子装置 | |
CN113313605B (zh) | 产品的获取方法和装置、存储介质和电子装置 | |
CN117094533B (zh) | 一种基于大数据的程序员岗位匹配方法及*** | |
CN117787966B (zh) | 聚合支付数据识别控制***及方法 | |
CN113312176B (zh) | 资源信息的管理方法、装置、电子装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170531 |