请选择 进入手机版 | 继续访问电脑版
楼主: laikesi232007
1608 1

[作业] 在MATLAB中使用双均线策略进行投资的一道MATLAB题目,请教一下 [推广有奖]

  • 0关注
  • 0粉丝

小学生

57%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
1.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
123 点
帖子
3
精华
0
在线时间
9 小时
注册时间
2019-4-24
最后登录
2020-7-2

laikesi232007 发表于 2019-12-12 20:08:15 |显示全部楼层 |坛友微信交流群
14论坛币
学生,遇到不太会的一道题目,题目如下。

在给定的股票池中选择合适的股票构建投资组合,并使用双均线策略进行投资,报告投资收益并进行分析。

要求:

步骤一、选股。在股票池(为了计算方便可以任选其中100只股票)中根据其在训练期(如过去N年)的表现 (如夏普比率),选择5只相对最好的。

步骤二、构成投资组合。根据投资组合理论,构建一个效用函数,根据该效用函数构建一个投资组合。

步骤三、择时。5个成分股各自按照双均线策略在一个给定的测试期(注意测试期必须在训练期后,测试期长度应该小于训练期)内进行择时,并记录收益,计算相应的Alpha,Beta,夏普比率,累积收益,最大回撤等指标。

步骤四、改变双均线的参数,重新完成步骤三。

训练数据和测试数据的长度由自己设定,需要通过作图来表达累积收益,使用上证综指作为对比。

关于双均线策略:通过建立m天移动平均线,n天移动平均线,则两条均线必有交点。若m>n,n天平均线“上穿越”m天均线则为买入点(金叉),反之为卖出点(死叉)。该策略基于不同天数均线的交叉点,抓住股票的强势和弱势时刻,进行交易。

5日均线与20日均线组合比较流行,本题步骤四还可以使用5日均线与10日均线,也可以改为其他参数进行多次测试比较策略效果。


步骤一二目前会,代码写成了这个样子

addpath('C:\Users\tx\Desktop\matlab');

load('stkClose.mat');

load('StockListNew.mat');

load('indexClose.mat');

total_date_range =cellstr(datestr(busdays('28-Jan-2003','1-Dec-2018','Daily')));

dateBegin=datestr(busdate(input('输入回测开始日期(e.g."01-Jan-2006"):'),1));

dateEnd = datestr(busdate(input('输入回测结束日期(e.g."31-Dec-2008"):'),-1));

range=find(ismember(total_date_range,dateBegin)==1):find(ismember(total_date_range,dateEnd)==1);

[ind aim_stock] =get_top_sharpe_stock(stkClose,range);

weights =cal_optimal_weights(aim_stock);

步骤一

function [ind aim_stock] =get_top_sharpe_stock(stkClose,range)

x=stkClose(:,randperm(size(stkClose,2)));

nan_ind = find(sum(isnan(x))>0.3*size(stkClose,1));

x(:,[nan_ind]) = [];

x=x(range,:);

y=x(:,1:200);

ret = price2ret(y);

find_max_sharpe =nanmean(ret)./nanstd(ret);

[B I] = sort(find_max_sharpe,'descend');

aim_stock = y(:,I(1:5));

ind = I;

end

步骤二

function optimal_weights =cal_optimal_weights(aim_stock)

mean_ret = nanmean(aim_stock);

std_ret = nanstd(aim_stock);

covariance = nancov(aim_stock);

weights = rand(1000,5);

total = sum(weights,2);

for i=1:size(weights,2)

weights(:,i) = weights(:,i)./total;

end

[prisk, pret]=portstats(mean_ret,covariance, weights);

rf = 0.0006;

sharpe_ratio = (pret-rf)./prisk;

[max_ratio ind] = max(sharpe_ratio);

optimal_weights = weights(ind,:);

end



目前是有数据:
TradingDate.mat:2000.01.04~2016.07.01的交易日
indexClose.mat:不同大盘指数收盘价
stkClose.mat:不同个股收盘价
stkVolume.mat:不同个股交易量
StockListNew.mat:不同个股的交易代码

请教一下步骤三四对于双均线应该怎么处理呢

关键词:MATLAB atlab matla Mat Lab
laikesi232007 发表于 2019-12-15 13:43:36 |显示全部楼层 |坛友微信交流群
不会这个论坛都是死人吧

使用道具

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

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

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

GMT+8, 2024-3-29 21:00