楼主: yang-cy13
3488 3

[源码分享] 75%规则在跨期套利中的应用 [推广有奖]

  • 0关注
  • 6粉丝

初中生

71%

还不是VIP/贵宾

-

威望
0
论坛币
57 个
通用积分
1.0019
学术水平
3 点
热心指数
3 点
信用等级
3 点
经验
501 点
帖子
12
精华
0
在线时间
15 小时
注册时间
2016-10-9
最后登录
2019-1-6

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
75%规则的定义如下:
设{P(t), t=1,2,...}为一个独立同分布的连续随机变量序列,这个序列落在非负实轴上,其中位数为m. 那么:

P[P(t-1)>m且P(t)<m 或 P(t-1)<m且P(t)>m] = 0.75

其实不需要独立同分布这么强的条件,但必须要求时间序列是稳定的。然而股价序列不是稳定的,即使考虑价差序列,通常也不是稳定的。所以我对价差进行局部分析,使用动态调整的中位数近似值,可以得到局部近似的稳定序列。故可以应用这个公式构建套利策略。

策略逻辑如下:
设dif(t)为白糖主力合约和次主力合约的价差序列,时间频率为5分钟。
m(t)为近20个周期的中位数,即m(t) = mid(dif(t-19:t))
若dif(t)>m(t),平掉之前的仓位并做空价差
若dif(t)<m(t),平掉之前的仓位并做多价差

策略收益:
策略收益.png



绩效概要:
绩效概要.png

在matlab上实现,策略代码:

  1. function Kqtl3(ShareNum,Freq,len)

  2. targetList = traderGetTargetList();
  3. HandleList = traderGetHandleList();

  4. global s;
  5. n = length(targetList);
  6. for j = 1:2:n
  7.     [time1,open1,high1,low1,close1,volume1,turnover1,openinterest1] = traderGetKData(targetList(j).Market,targetList(j).Code,'min',Freq, 0-len, 0,true,'FWard');
  8.     [time2,open2,high2,low2,close2,volume2,turnover2,openinterest2] = traderGetKData(targetList(j+1).Market,targetList(j+1).Code,'min',Freq, 0-len, 0,true,'FWard');
  9.     if length(close1)<len+1
  10.         return
  11.     end

  12.     diff = close1-close2;
  13.     mid = median(diff);
  14.     s(j).condition = 0;
  15.     if s(j).position~=0
  16.         traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
  17.         traderPositionTo(HandleList(1),targetList(j+1).Market,targetList(j+1).Code,0,0,'market','close');
  18.         s(j).position = 0;
  19.     end
  20.     if diff(end)<mid
  21.         s(j).condition = 1;
  22.     end
  23.     if diff(end)>mid
  24.         s(j).condition = -1;
  25.     end
  26.    
  27.     if s(j).condition==1
  28.        OrderId = traderDirectBuy(HandleList(1),targetList(j).Market,targetList(j).Code,ShareNum,0,'market','buy');
  29.        traderDirectSell(HandleList(1),targetList(j+1).Market,targetList(j+1).Code,ShareNum,0,'market','buy');
  30.        if OrderId~=0
  31.             s(j).position = 1;
  32.        end
  33.     end
  34.     if s(j).condition==-1
  35.        OrderId = traderDirectSell(HandleList(1),targetList(j).Market,targetList(j).Code,ShareNum,0,'market','buy');
  36.        traderDirectBuy(HandleList(1),targetList(j+1).Market,targetList(j+1).Code,ShareNum,0,'market','buy');
  37.        if OrderId~=0
  38.             s(j).position = -1;
  39.        end
  40.     end
  41. end
复制代码

执行代码:
  1. clear;
  2. clc;

  3. targetList(1).Market = 'CZCE';
  4. targetList(1).Code = 'SR000';

  5. targetList(2).Market = 'CZCE';
  6. targetList(2).Code = 'SR001';


  7. Freq = 5;
  8. ShareNum = 100;
  9. len = 20;
  10. global s;
  11. for i = 1:length(targetList)
  12.     s(i).position = 0;
  13.     s(i).condition = 0;
  14. end

  15. %回测
  16. % 在回测时设置初始资本1000000元、手续费率0.000026、无风险利率0.02、滑价0、默认1下一个bar的开盘价、默认0成交价、默认0直接成交
  17. AccountList(1) = {'FutureBackReplay'};
  18. traderRunBacktest('Kqtl3BackTest',@Kqtl3,{ShareNum,Freq,len},AccountList,targetList,'min',Freq,20160110,20161030,'FWard');
复制代码






二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:跨期套利 随机变量 DIF 中位数

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 12 + 12 精彩帖子
accumulation + 100 + 1 + 1 + 1 精彩帖子

总评分: 经验 + 112  论坛币 + 12  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

本帖被以下文库推荐

沙发
3862161 在职认证  发表于 2016-11-18 19:17:08 |只看作者 |坛友微信交流群
{:3_42:}绩效那么好~~赞

使用道具

藤椅
confused_ddk 发表于 2018-1-12 09:52:08 |只看作者 |坛友微信交流群
没有止损

使用道具

板凳
笑然 在职认证  发表于 2018-2-23 18:03:11 |只看作者 |坛友微信交流群
多谢多谢~~~

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 08:24