高频套利平台开发文档

Discussion in 'General Topics on Software and Data' started by jemnbo, Jan 17, 2010.

  1. 跨期套利分析系统
    跨期套利分析系统,其主要功能包括:‘历史行情广播’,‘跨期品种筛选’,‘模拟交易’,以及‘交易数据分析’。其流程为:

    现将各个过程中的模块需要实现的功能以及将来模块内可能继续深入开发的方向予以说明。
    模块一 :历史数据广播:
    ‘历史数据广播’模块主要为‘跨期品种筛选’,‘模拟交易’这两块模块服务,数据来源为公司数据库,其目前需要实现的功能有:
    1, 时间选择——第一步

    (界面1)
    ◆‘起始时间’及‘截至时间’;
    当点击时间日期,弹出日历,予以选择
    或直接输入2008-10-6。
    (界面2)
    ◆ ‘时间频率’有:分笔数据,任意秒,任意分钟功能;
    时间格式转换方法为:在交易时间内,以5分钟频率为例
    时间 如,10:00的5分钟数据包含9:55:00.000时刻开始至9:59:59.999之间的高频数据
    开 9:55:00.000时刻第一笔成交价格
    高 区间内最高成交价
    低 区间内最低成交价
    收 9:59:59.999时刻最后一笔成交价格
    成交均价 对期货等单一交易品种,=成交金额/成交量
    成交量 区间内成交量的总和,=每笔成交量之和,或者=9:59:59.999时刻的累计成交量 - 9:54:59.999时刻的累计成交量(建议使用后一种算法,以减少高频数据丢失产生的影响)
    成交金额 算法与成交量算法类似
    持仓量收 9:59:59.999时刻最后一笔持仓量
    买卖盘挂单价格及数量 取区间内最后一笔高频数据的挂单价格及数量
    2,品种选择——第二步
    ‘分析品种’分为两种:单品种——如选择大豆,则将历史库中所有大豆按照交割日期由时间降序排列,具体可参见‘品种选择’;混合品种——可以任意选择两种品种进入‘品种选择’列表,如大豆与豆油。
    表格第一列中品种A,品种B为下拉菜单式,可任意选取各一个,选中后,给组合命名,如第一个组合名称为000001,点击添加,最后一栏为是否选择为随后的模块分析的对象,如果打勾,表示选择,否则该组合不做分析。

    (界面3)

    3, 选定品种行情同列预览——第三步(可选)

    (界面4)

    其需要实现的功能是选定日期内品种K线走势以及持仓量,交易量走势图分别为上图的1、2、3。
    行情同列的数量可选:2 ,4 ,6 。上图行情同列数为4。
    对K线而言,左侧纵坐标为价格。任意点击其中一个,可以单独另图放大,效果为:

    (界面5)

    第3步的主要目的是同等行情时间内,哪些品种的交易量及持仓量以及走势能符合目测可交易判断
    4, 图形叠加功能——第四步(可选)
    频率为可选参数:分笔,任意秒,任意分钟。
    ◆ 最新价走势叠加图:
    计算方法:以大豆0903为例,截取数据从2008-10-1~2008-10-7,频率为60分钟,则图形第一个点为2008-10-1 9:00时刻的最新价,符号表示为P0,将其作为标准值,坐标值为1,那么下一个为2008-10-1 10:00最新价P1,其坐标值为P1/P0,后面的值点类似。注意,这里的时间是交易时间(交易行情维持耗时),而不是日历时间,即休市或休息时间均不作为时间计算。
    各个品种用不同的颜色表示出来。

    (界面6)

    ◆ 成交量走势叠加图:

    (界面7)

    模块二:跨期品种筛选
    跨期品种筛选分为几个小的模块,第一个模块为市场流动性测试,通过此测试,给出适当的参数设定,流程为下图:
    1, 市场流动性测试

    ◆ 计算公式有:
    ———市场流动性公式综合公式
    将价格波动和交易量“摊平”到交易持续期中,也就是用单位时间内价格波动一单位所能吸收的交易量
    (1)
    式中,vol表示t时刻发生的交易与上一笔交易之间即在交易持续期内吸收的交易量(手), 表示交易持续期内的价格波动率 ,dur表示两笔交易时间间隔, 越大表示流动性越好。
    ———市场宽度公式
    指交易价格偏离市场有效价格的程度
    其中 (2)
    ———市场深度
    即在不影响当前价格的情况下吸收的成交量
    (3)
    ———市场弹性
    价格偏离回到均衡价格的速度
    (4)
    通过排序,我们可以选择那些满足指标条件排名较高的品种,进行下一步的测试。
    这个时候,回到界面

    (界面8)

    2, pairs稳定性分析
    稳定性分析的流程如下,通过上一步分析,得到一些较好的pairs,在界面3下,将其设定为活动,进行下面的流程分析:

    分析完之后,给出分析报告,汇报同一个组合,在不同的频率,不同的时间序列数据,不同的分析指标的表现特征。
    (界面9)

    当然,我们也可以在有了分析经验之后,为了节约中间操作时间,一次性用
    3, 指标筛选功能:共计五步
    1.新建组合
    将视觉筛选的组合加入进来
    2.样本频率选择
    系统能够生成的频率范围
    3.筛选指标及其参数设定
    4.删除指标
    5.执行筛选
    界面如下图:

    (界面10)

    模块三:模拟交易(与模块四数据互动)
    主要功能是对所选择的组合按照事先设定的参数及策略进行模拟交易。
    预留以下功能:
    1, 外围市场判断。
    基本面分析功能,对于当日选择做多,做空参数产生影响。
    2, 自编交易策略公式

    (界面11)
    3, 当日盘中交易结果对后续交易参数动态调整
    当日在现时刻前所有交易统计结果,例如,已经连续亏损7次,而历史最大连续亏损次数为8次,则下一次交易时,可适当考虑加大资金投入量。
    4, 历史交易结果对交易参数的调整
    最近交易历史表明,某个品种在做多时,亏损次数较多,则可以考虑严格开仓条件,放宽止赢,严格止损等策略改进。
    5, 保留所需要的信息数据

    模块四:交易数据分析
    此模块分为两块:统计报表和风险分析
    1, 统计报表
    1. 策略一统计报表
    A) 当日盈亏统计
    按“汇总统计”与“组合统计”分别列出。例:
    汇总统计 触发次数 比例 平仓盈利
    (元) 比例 平仓亏损(元) 比例 手续费(元) 净利润(元)
    止盈 42 32.06% 700 70% 0 0% 20 680
    止盈
    (1001) 12 9.16% 100 10% 0 0% 10 90
    回归 51 38.93% 100 10% -100 20% 20 -20
    回归
    (1001) 11 8.40% 50 5% -100 20% 10 -60
    止损 2 1.53% 0 0% -250 50% 20 -270
    止损
    (1001) 0 0% 0 0% 0 0% 0 0
    1002 12 9.16% 0 0% -50 10% 10 -60
    2001 1 0.76% 50 5% 0 0% 10 40
    总计 131 100%  1000 100%  -500 100%  100 400

    橡胶统计 触发次数 比例 平仓盈利
    (元) 比例 平仓亏损(元) 比例 手续费(元) 净利润(元)
    止盈 42 32.06% 700 70% 0 0% 20 680
    止盈
    (1001) 12 9.16% 100 10% 0 0% 10 90
    回归 51 38.93% 100 10% -100 20% 20 -20
    回归
    (1001) 11 8.40% 50 5% -100 20% 10 -60
    止损 2 1.53% 0 0% -250 50% 20 -270
    止损
    (1001) 0 0% 0 0% 0 0% 0 0
    1002 12 9.16% 0 0% -50 10% 10 -60
    2001 1 0.76% 50 5% 0 0% 10 40
    总计 131 100%  1000 100%  -500 100%  100 400
    (界面12)

    B) 当日策略表现明细统计
    针对账户,分“做多”、“做空”、“总计”三种情况分别列出以下指标:
     总净利润
    = 总平仓盈亏 - 总手续费
     利润系数
    = abs(总平仓盈利 / 总平仓亏损)
     平均盈亏比率
    = abs((总平仓盈利 / 平仓盈利次数) / (总平仓亏损 / 平仓亏损次数))
     总交易次数
     平仓盈利次数
     平仓亏损次数
     单次平均净利润
    = 总净利润 / 总交易次数
     胜率
    = 平仓盈利次数 / 总交易次数
     最大连续盈利次数
     最大连续亏损次数
     最大单次平仓盈利
     最大单次平仓亏损
     最大连续亏损金额
     最大资金占用额
    = (时刻i持仓保证金 + 时刻i开仓资金预扣)
     投资利润率
    = 总净利润 / 最大资金占用额
     当日每笔操作收益sharpe值
    = mean(单次平仓盈亏/持仓量)/ std(单次平仓盈亏/持仓量)
     总权益
    = 昨日总权益 + 当日总净利润

    将以上的统计结果在下面界面中显示出来
    (界面13)

    C) 多日盈亏统计
    统计内容同A),统计对象为指定起始日、终止日内所有交易。


    D) 多日策略表现明细统计
    统计内容同B),针对品种、账户,统计对象为指定起始日、终止日内所有交易。列出单日指标与多日指标。
    例:
    日期 胜率
    2008-09-16 70.00%
    2008-09-17 68.00%
    2008-09-18 71.00%
    2008-09-19 66.00%
    2008-09-22 75.00%
    2008-09-23 81.00%
    2008-09-24 73.00%
    2008-09-25 83.00%
    2008-09-26 86.00%
    总胜率 75.00%


    (界面14)



    2. 策略二统计报表
    在策略一统计报表B)的基础上,加上以下几项指标:
     总权益
    =前一日总权益+平仓盈亏+持仓盈亏。(都已当天的结算价为准)
     持仓保证金
    = 结算价×该品种持仓量×保证金比例×每手吨数
     可用资金
    = 总权益—持仓保证金
     持仓手数
     平仓盈亏(按先开先平计算)
     持仓盈亏(按所持头寸的价格和结算价之差计算)
     误差
    列出每次交易的预期开仓价差(触发价差),实际开仓价差,开仓误差(前两项相减)。
    预期平仓价差(触发价差),实际平仓价差,平仓误差(前两项相减)。
     持仓保证金走势图
    2, 风险分析
    根据交易数据,系统外另算。
     
  2. 如何贴图?
     
  3. 设计要点不错。这份文档是你准备做开发的设计文档,还是准备请人实现的功能文档?能否发到我邮箱分享啊 QQ:304840770
     
  4. 共同开发,如何?
     
  5. 风险分析这一块,我觉得至关重要。若是初步,建议楼主研读并集齐所有教科书提到的近代风险理论。其实我是想如果楼主条件可以的话,还是建立自己的理论来研究风险评估。基于正态分布基石的经典理论,唉~麻烦...
     
  6. 既然你提到风险,再开一个帖子给你参阅。阅读上,你有什么经典读本,也可推介。我一般也就基于 quantitative risk analysis这本书一些工具,大致做做系统。
     
  7. 惭愧,基本上没读过几本经典...都是在类似于“一本让您了解300本名著”之类的地摊盗版里还借阅性质的...

    嗯,希望有朋友能推荐一下“从实际出发的经典风险管理理论的来龙去脉”之类,那些教材为纯理论进行理论研讨的,像我这种野路子看不出个所以然啊~
     
  8. 在非借不能读情况下还能博览“300”家,实在看不出是“野路子”,管他是马路牙上蹲着,还是高堂上坐着,哪个路子不是读啊?从实际来到实际去更是秉承了毛泽东思想嘛。如此思想境界和胸怀,何必自愧呢?
     
  9. 先找一个可以上传图片的站点,比如http://tinypic.com/ ,将图片上传上去,然后记录下上传图片的地址,也可以直接复制tinypic.com站点上IMG Code for Forums & Message Boards里的代码内容,然后粘贴到帖里就可以了。
    [​IMG]
     
  10. 谁愿意代为上传,报个名,留下邮箱
     
  11. 受朋友所托,留邮箱
    eoxnelv

    1
    2
    6
     
  12. 楼主,原谅偶自做主张的编辑一番;转告朋友的感谢之情;至此,偶功成身退。:D

    --------------------神一般的分割线-----------------------

    跨期套利分析系统
    (by jemnbo @ 海洋论坛)

    跨期套利分析系统,其主要功能包括:‘历史行情广播’,‘跨期品种筛选’,‘模拟交易’,以及‘交易数据分析’。其流程为:

    现将各个过程中的模块需要实现的功能以及将来模块内可能继续深入开发的方向予以说明。
    模块一 :历史数据广播:
    ‘历史数据广播’模块主要为‘跨期品种筛选’,‘模拟交易’这两块模块服务,数据来源为公司数据库,其目前需要实现的功能有:
    1, 时间选择——第一步

    [​IMG]
    (界面1)
    ◆‘起始时间’及‘截至时间’;
    当点击时间日期,弹出日历,予以选择
    或直接输入2008-10-6。

    [​IMG]
    (界面2)
    ◆ ‘时间频率’有:分笔数据,任意秒,任意分钟功能;
    时间格式转换方法为:在交易时间内,以5分钟频率为例
    时间 如,10:00的5分钟数据包含9:55:00.000时刻开始至9:59:59.999之间的高频数据
    开 9:55:00.000时刻第一笔成交价格
    高 区间内最高成交价
    低 区间内最低成交价
    收 9:59:59.999时刻最后一笔成交价格
    成交均价 对期货等单一交易品种,=成交金额/成交量
    成交量 区间内成交量的总和,=每笔成交量之和,或者=9:59:59.999时刻的累计成交量 - 9:54:59.999时刻的累计成交量(建议使用后一种算法,以减少高频数据丢失产生的影响)
    成交金额 算法与成交量算法类似
    持仓量收 9:59:59.999时刻最后一笔持仓量
    买卖盘挂单价格及数量 取区间内最后一笔高频数据的挂单价格及数量
    2,品种选择——第二步
    ‘分析品种’分为两种:单品种——如选择大豆,则将历史库中所有大豆按照交割日期由时间降序排列,具体可参见‘品种选择’;混合品种——可以任意选择两种品种进入‘品种选择’列表,如大豆与豆油。
    表格第一列中品种A,品种B为下拉菜单式,可任意选取各一个,选中后,给组合命名,如第一个组合名称为000001,点击添加,最后一栏为是否选择为随后的模块分析的对象,如果打勾,表示选择,否则该组合不做分析。

    [​IMG]
    (界面3)

    3, 选定品种行情同列预览——第三步(可选)

    [​IMG]
    (界面4)

    其需要实现的功能是选定日期内品种K线走势以及持仓量,交易量走势图分别为上图的1、2、3。
    行情同列的数量可选:2 ,4 ,6 。上图行情同列数为4。
    对K线而言,左侧纵坐标为价格。任意点击其中一个,可以单独另图放大,效果为:

    [​IMG]
    (界面5)

    第3步的主要目的是同等行情时间内,哪些品种的交易量及持仓量以及走势能符合目测可交易判断
    4, 图形叠加功能——第四步(可选)
    频率为可选参数:分笔,任意秒,任意分钟。
    ◆ 最新价走势叠加图:
    计算方法:以大豆0903为例,截取数据从2008-10-1~2008-10-7,频率为60分钟,则图形第一个点为2008-10-1 9:00时刻的最新价,符号表示为P0,将其作为标准值,坐标值为1,那么下一个为2008-10-1 10:00最新价P1,其坐标值为P1/P0,后面的值点类似。注意,这里的时间是交易时间(交易行情维持耗时),而不是日历时间,即休市或休息时间均不作为时间计算。
    各个品种用不同的颜色表示出来。

    [​IMG]
    (界面6)

    ◆ 成交量走势叠加图:

    [​IMG]
    (界面7)

    模块二:跨期品种筛选
    跨期品种筛选分为几个小的模块,第一个模块为市场流动性测试,通过此测试,给出适当的参数设定,流程为下图:
    1, 市场流动性测试

    ◆ 计算公式有:
    ———市场流动性公式综合公式
    将价格波动和交易量“摊平”到交易持续期中,也就是用单位时间内价格波动一单位所能吸收的交易量
    (1)
    式中,vol表示t时刻发生的交易与上一笔交易之间即在交易持续期内吸收的交易量(手), 表示交易持续期内的价格波动率 ,dur表示两笔交易时间间隔, 越大表示流动性越好。
    ———市场宽度公式
    指交易价格偏离市场有效价格的程度
    其中 (2)
    ———市场深度
    即在不影响当前价格的情况下吸收的成交量
    (3)
    ———市场弹性
    价格偏离回到均衡价格的速度
    (4)
    通过排序,我们可以选择那些满足指标条件排名较高的品种,进行下一步的测试。
    这个时候,回到界面

    [​IMG]
    (界面8)

    (下帖接)
     
  13. (接上贴)
    2, pairs稳定性分析
    稳定性分析的流程如下,通过上一步分析,得到一些较好的pairs,在界面3下,将其设定为活动,进行下面的流程分析:

    分析完之后,给出分析报告,汇报同一个组合,在不同的频率,不同的时间序列数据,不同的分析指标的表现特征。

    [​IMG]
    (界面9)

    当然,我们也可以在有了分析经验之后,为了节约中间操作时间,一次性用
    3, 指标筛选功能:共计五步
    1.新建组合
    将视觉筛选的组合加入进来
    2.样本频率选择
    系统能够生成的频率范围
    3.筛选指标及其参数设定
    4.删除指标
    5.执行筛选
    界面如下图:

    [​IMG]
    (界面10)


    模块三:模拟交易(与模块四数据互动)
    主要功能是对所选择的组合按照事先设定的参数及策略进行模拟交易。
    预留以下功能:
    1, 外围市场判断。
    基本面分析功能,对于当日选择做多,做空参数产生影响。
    2, 自编交易策略公式

    [​IMG]
    (界面11)
    3, 当日盘中交易结果对后续交易参数动态调整
    当日在现时刻前所有交易统计结果,例如,已经连续亏损7次,而历史最大连续亏损次数为8次,则下一次交易时,可适当考虑加大资金投入量。
    4, 历史交易结果对交易参数的调整
    最近交易历史表明,某个品种在做多时,亏损次数较多,则可以考虑严格开仓条件,放宽止赢,严格止损等策略改进。
    5, 保留所需要的信息数据

    模块四:交易数据分析
    此模块分为两块:统计报表和风险分析
    1, 统计报表
    1. 策略一统计报表
    A) 当日盈亏统计
    按“汇总统计”与“组合统计”分别列出。例:
    汇总统计 触发次数 比例 平仓盈利
    (元) 比例 平仓亏损(元) 比例 手续费(元) 净利润(元)
    止盈 42 32.06% 700 70% 0 0% 20 680
    止盈
    (1001) 12 9.16% 100 10% 0 0% 10 90
    回归 51 38.93% 100 10% -100 20% 20 -20
    回归
    (1001) 11 8.40% 50 5% -100 20% 10 -60
    止损 2 1.53% 0 0% -250 50% 20 -270
    止损
    (1001) 0 0% 0 0% 0 0% 0 0
    1002 12 9.16% 0 0% -50 10% 10 -60
    2001 1 0.76% 50 5% 0 0% 10 40
    总计 131 100%  1000 100%  -500 100%  100 400

    橡胶统计 触发次数 比例 平仓盈利
    (元) 比例 平仓亏损(元) 比例 手续费(元) 净利润(元)
    止盈 42 32.06% 700 70% 0 0% 20 680
    止盈
    (1001) 12 9.16% 100 10% 0 0% 10 90
    回归 51 38.93% 100 10% -100 20% 20 -20
    回归
    (1001) 11 8.40% 50 5% -100 20% 10 -60
    止损 2 1.53% 0 0% -250 50% 20 -270
    止损
    (1001) 0 0% 0 0% 0 0% 0 0
    1002 12 9.16% 0 0% -50 10% 10 -60
    2001 1 0.76% 50 5% 0 0% 10 40
    总计 131 100%  1000 100%  -500 100%  100 400


    [​IMG]
    (界面12)

    B) 当日策略表现明细统计
    针对账户,分“做多”、“做空”、“总计”三种情况分别列出以下指标:
     总净利润
    = 总平仓盈亏 - 总手续费
     利润系数
    = abs(总平仓盈利 / 总平仓亏损)
     平均盈亏比率
    = abs((总平仓盈利 / 平仓盈利次数) / (总平仓亏损 / 平仓亏损次数))
     总交易次数
     平仓盈利次数
     平仓亏损次数
     单次平均净利润
    = 总净利润 / 总交易次数
     胜率
    = 平仓盈利次数 / 总交易次数
     最大连续盈利次数
     最大连续亏损次数
     最大单次平仓盈利
     最大单次平仓亏损
     最大连续亏损金额
     最大资金占用额
    = (时刻i持仓保证金 + 时刻i开仓资金预扣)
     投资利润率
    = 总净利润 / 最大资金占用额
     当日每笔操作收益sharpe值
    = mean(单次平仓盈亏/持仓量)/ std(单次平仓盈亏/持仓量)
     总权益
    = 昨日总权益 + 当日总净利润

    将以上的统计结果在下面界面中显示出来

    [​IMG]
    (界面13)

    C) 多日盈亏统计
    统计内容同A),统计对象为指定起始日、终止日内所有交易。


    D) 多日策略表现明细统计
    统计内容同B),针对品种、账户,统计对象为指定起始日、终止日内所有交易。列出单日指标与多日指标。
    例:
    日期 胜率
    2008-09-16 70.00%
    2008-09-17 68.00%
    2008-09-18 71.00%
    2008-09-19 66.00%
    2008-09-22 75.00%
    2008-09-23 81.00%
    2008-09-24 73.00%
    2008-09-25 83.00%
    2008-09-26 86.00%
    总胜率 75.00%

    [​IMG]
    (界面14)



    2. 策略二统计报表
    在策略一统计报表B)的基础上,加上以下几项指标:
     总权益
    =前一日总权益+平仓盈亏+持仓盈亏。(都已当天的结算价为准)
     持仓保证金
    = 结算价×该品种持仓量×保证金比例×每手吨数
     可用资金
    = 总权益—持仓保证金
     持仓手数
     平仓盈亏(按先开先平计算)
     持仓盈亏(按所持头寸的价格和结算价之差计算)
     误差
    列出每次交易的预期开仓价差(触发价差),实际开仓价差,开仓误差(前两项相减)。
    预期平仓价差(触发价差),实际平仓价差,平仓误差(前两项相减)。
     持仓保证金走势图
    2, 风险分析
    根据交易数据,系统外另算。

    (全文完)
     
  14. PS: (界面12的如果刷新浏览器不可以浏览全图,可另存于电脑中打开查看完整图片)
     
  15. 记得06年,那个叫“CP手”的软件的总设计师在鼓吹自己的私募的授课的课间,我跟朋友耳语了几句让他带个纸条问那位猛抽烟的大叔:为何程序中不加入资金管理模块啊?要知道这可以让您的软件在短时间里占有很大的市场份额啊?大叔头也不抬一下:一两百万的资金不需要资金管理。
    当我的朋友继续追问其对“博弈”的理解并且让他推荐一些博弈论的原著,看着他狼狈的比手画脚最后甚至拿出一支笔来形容蜡烛图,我的朋友就微笑着不语了那么久...最后是我看着那大叔也不好下台阶了拨了个电话让朋友借话遁了...
    jemnbo兄,风险分析里面的资金管理,是您的软件以之为目标的核心部分哦,即使现在是2010年...
     
  16. 资金管理,又是资金管理
     
  17. 软件甚么时候出?
     
  18. 哈哈,界面10就是我们设计的,看到被楼主采用很欣慰
    有什么想法或是需要改进的,可以直接与我联系:)
     
  19. (小聲的嘀咕)我覺得私下要個郵箱會比較不麻煩哦~ :D