请选择 进入手机版 | 继续访问电脑版
楼主: weitingkoala
19707 44

[统计套利] 统计套利:一个简单的尝试(数据+Matlab代码+参考文章) [推广有奖]

学科带头人

13%

还不是VIP/贵宾

-

TA的文库  其他...

应用量化研究

威望
2
论坛币
7921 个
通用积分
51.4514
学术水平
321 点
热心指数
290 点
信用等级
298 点
经验
8986 点
帖子
424
精华
7
在线时间
1323 小时
注册时间
2010-5-7
最后登录
2024-3-4

weitingkoala 发表于 2014-1-21 12:44:26 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

声明:1)这是自己的一个练习案例,发在这里,供大家学习参考;
           2)参考文章极其简单,高手(或自认为是高手)的朋友请绕行,或者请轻拍;
           3)Matlab代码可能效率较低,且没有编写策略评价内容;如果您后面写出了更有效率更完整的代码,跪求发我一份。


本帖隐藏的内容

统计套利:一个简单的尝试.rar (280.98 KB)




本帖隐藏的内容

  1. %% --------两股票匹配交易(一个简单的尝试)-----------
  2. %% ------1.说明-----
  3. %1)coded by 连长(lxbmailbox@163.com)
  4. %2)程序设计时间:2013年12月中旬
  5. %3)数据说明:
  6. %原始数据为Origin.mat,第一列为交易日期(频率为日),第2列为股票stock1收盘价,
  7. %第3列为股票stock2收盘价,第4列为两股票的价差(spread),第5列为两股票价格比(price_ratio),
  8. %即stock1/stock2
  9. %研究起始点为2007-09-27,终点为2013-09-27
  10. %% ------2.提取数据-----
  11. date=Origin(:,1);
  12. stock1=Origin(:,2);
  13. stock2=Origin(:,3);
  14. spread=Origin(:,4);
  15. price_ratio=Origin(:,5);
  16. %% -----3.画图查看数据
  17. %股票走势图
  18. subplot(2,1,1);
  19. plot(date,stock1,'r',date,stock2,'g');
  20. datetick('x',10);
  21. xlabel('Date');
  22. ylabel('Close Price');
  23. title('The Close Price of Stocks');
  24. legend('Stock1','Srock2');
  25. grid on;
  26. subplot(2,1,2);
  27. plot(date,price_ratio,'r');
  28. datetick('x',10);
  29. xlabel('Date');
  30. ylabel('Price Ratio');
  31. title('The Price Ratio of Two Stocks');
  32. grid on;
  33. %% ------4.参数设置及数据准备---
  34. %参数设置
  35. MA_length=90; %移动平均长度
  36. Entry=2;       %入场点为多少倍标准差
  37. stop_loss_rate=0.3; %_loss和profit_taking都是规定出场点,分别为止损和止盈点
  38. profit_taking_rate=0.1; %即价格比向均值方向移动百分之多少时,止盈;止损亦然
  39. %计算价格比移动平均
  40. MA=zeros(length(price_ratio),1);%初始化移动平均向量
  41. for i=MA_length:length(price_ratio);
  42.     MA(i)=sum(price_ratio(i-MA_length+1:i))/MA_length;
  43.     MA(1:MA_length-1)=price_ratio(1:MA_length-1);
  44. end
  45. %计算价格比移动标准差
  46. STD=zeros(length(price_ratio),1);%初始化标准差向量
  47. for i=MA_length:length(price_ratio);
  48.     STD(i)=std(MA(i-MA_length+1:i));
  49. end
  50. %确定上下突破线(决定买入点)
  51. upper_break=MA+Entry*STD;
  52. lower_break=MA-Entry*STD;
  53. % 画出移动平均及突破区间
  54. figure;
  55. hold on;
  56. plot(date,price_ratio,'r');
  57. plot(date,upper_break,'g:',date,lower_break,'g:','LineWidth',2);
  58. datetick('x',10);
  59. grid on;
  60. xlabel('Date');
  61. ylabel('Price ratio');
  62. title('The Backtesting Result of Our Pair Trading strategy');
  63. %% ------5.策略回测------
  64. signalbuy=zeros(length(price_ratio),1);%初始化买入信号
  65. signalsell=zeros(length(price_ratio),1);%初始化卖出信号
  66. pos=zeros(length(price_ratio),1);%初始化仓位
  67. for i=2:length(price_ratio)
  68.     %定义买入信号
  69.     if price_ratio(i-1)<upper_break(i-1) && price_ratio(i)>upper_break(i)
  70.         signalbuy(i)=1;
  71.     end
  72.     if price_ratio(i-1)>lower_break(i-1) && price_ratio(i)<lower_break(i)
  73.         signalbuy(i)=-1;
  74.     end
  75.     %定义卖出信号
  76.     if (pos(i-1)==1 && price_ratio(i)<profit_taking) || (pos(i-1)==1 && price_ratio(i)>stop_loss)
  77.         signalsell(i)=1;
  78.     end
  79.     if (pos(i-1)==-1 && price_ratio(i)>profit_taking) || (pos(i-1)==-1 && price_ratio(i)<stop_loss)
  80.         signalsell(i)=-1;
  81.     end
  82.     if pos(i-1)==0
  83.             if signalbuy(i)~=0
  84.                 if signalbuy(i)==1
  85.                     pos(i)=1;
  86.                     plot(date(i),price_ratio(i),'ko','MarkerFaceColor','k');%进场点
  87.                     profit_taking=price_ratio(i)*(1-profit_taking_rate);
  88.                     stop_loss=price_ratio(i)*(1+stop_loss_rate);
  89.                 else
  90.                     pos(i)=-1;
  91.                     plot(date(i),price_ratio(i),'ko','MarkerFaceColor','k');%进场点
  92.                     profit_taking=price_ratio(i)*(1+profit_taking_rate);
  93.                     stop_loss=price_ratio(i)*(1-stop_loss_rate);
  94.                 end
  95.             else pos(i)=pos(i-1);
  96.             end
  97.     else
  98.             if pos(i-1)==1
  99.                 if signalsell(i)==1
  100.                     pos(i)=0;
  101.                     plot(date(i),price_ratio(i),'mo','MarkerFaceColor','m');%出场点
  102.                 else pos(i)=pos(i-1);
  103.                 end
  104.             else
  105.                 if signalsell(i)==-1
  106.                 pos(i)=0;
  107.                 plot(date(i),price_ratio(i),'mo','MarkerFaceColor','m');%出场点
  108.                 else pos(i)=pos(i-1);
  109.                 end
  110.             end
  111.     end
  112. end
  113. %% 回测结果
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:matlab代码 MATLAB matla atlab 统计套利 文章 统计

已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
accumulation + 100 + 1 + 1 + 1 精彩帖子
日新少年 + 1 + 1 + 1 精彩帖子
fantuanxiaot + 3 + 1 + 1 精彩帖子
faruto + 1 + 1 + 1 热心帮助其他会员

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

本帖被以下文库推荐

pkpker2 发表于 2014-1-21 13:10:44 |显示全部楼层 |坛友微信交流群
你这是基于统计的配对交易策略,国外这这策略用的很成熟

使用道具

weitingkoala 发表于 2014-1-21 13:16:18 |显示全部楼层 |坛友微信交流群
pkpker2 发表于 2014-1-21 13:10
你这是基于统计的配对交易策略,国外这这策略用的很成熟
是的
先模仿 再创新
已有 1 人评分论坛币 收起 理由
fantuanxiaot + 26 精彩帖子

总评分: 论坛币 + 26   查看全部评分

使用道具

pkpker2 发表于 2014-1-21 14:00:34 |显示全部楼层 |坛友微信交流群
不过你的思路有些拘泥化,不那么教条这个策略会用的更好

使用道具

weitingkoala 发表于 2014-1-21 14:13:56 |显示全部楼层 |坛友微信交流群
pkpker2 发表于 2014-1-21 14:00
不过你的思路有些拘泥化,不那么教条这个策略会用的更好
您说得对 我还在上学 我现在做的就是Practice 先模仿

使用道具

pkpker2 发表于 2014-1-21 14:19:05 |显示全部楼层 |坛友微信交流群
weitingkoala 发表于 2014-1-21 14:13
您说得对 我还在上学 我现在做的就是Practice 先模仿
我没那么大,去年才毕业...

使用道具

weitingkoala 发表于 2014-1-21 14:22:29 |显示全部楼层 |坛友微信交流群
pkpker2 发表于 2014-1-21 14:19
我没那么大,去年才毕业...
您目前做量化吗,多指导我们这些晚辈啊

使用道具

pkpker2 发表于 2014-1-21 14:27:46 |显示全部楼层 |坛友微信交流群
别用您这个称呼,显得好老...恩,我正在做量化,以后多交流~

使用道具

weitingkoala 发表于 2014-1-21 14:32:26 |显示全部楼层 |坛友微信交流群
pkpker2 发表于 2014-1-21 14:27
别用您这个称呼,显得好老...恩,我正在做量化,以后多交流~
前辈 如果你不嫌弃的话 能把你的邮箱给我吗

使用道具

pkpker2 发表于 2014-1-21 14:39:05 |显示全部楼层 |坛友微信交流群
weitingkoala 发表于 2014-1-21 14:32
前辈 如果你不嫌弃的话 能把你的邮箱给我吗
当然可以,lijiahao369@gmail.com

使用道具

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

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

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

GMT+8, 2024-3-29 03:22