搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  统计套利:一个简单的尝试.rar
资料下载链接地址: https://bbs.pinggu.org/a-1478787.html
附件大小:
280.98 KB   举报本内容

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


[hide][/hide]


[hide]
  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. %% 回测结果
复制代码



[/hide]


    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

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

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

GMT+8, 2025-12-31 13:29