资源简介

本文档中包含matlab代码自动从tushare上获取数据,然后绘制有效前沿和资本市场线

资源截图

代码片段和文件信息

close all
clear
clc
%% 数据准备
% get data from tushare:https://tushare.pro/
addpath(genpath(pwd));
token = ‘ca928fb11765cd7c41b937459c8b611e0a97d0abf2daa1f8393c8ebc‘;
api = pro_api(token);
stockall = api.query(‘stock_basic‘);
% 获取指数数据这里的市场基础取的是hs300
start_time = ‘20170101‘;
end_time = ‘‘;
ktype = ‘D‘;
indexdata = pro_bar(‘000300.SH‘ api start_time end_timektype‘I‘);
indexdata = flipud(indexdata);
% 取10支股票
nstock = 10;
% 记录用到的10支股票
stocklist = [];
stockdata = cell(nstock1);
nday = size(indexdata1);
% closeprice 第一列为指数价格,其他列为股票数据
closeprice = indexdata.close;
temp = indexdata.trade_date;
temp = char(temp);
temp = str2num(temp);
tradedate = datetime(temp‘ConvertFrom‘‘yyyymmdd‘‘format‘‘yyyy-MM-dd‘);

% 获取股票数据
m = 0;
for i = 1:size(stockall1)
    temp = pro_bar(stockall.ts_code{i} api start_time end_timektype‘E‘‘qfq‘);
    % 有的股票有停牌,我们得选取没有停牌的股票
    if size(temp1) == nday
        m = m+1;
        stockdata{m} = flipud(temp);
        closeprice(:m+1) = stockdata{m}.close;
        stocklist = [stocklist;stockall(i:)];
    end
    if size(stocklist1) == nstock
        break;
    end
end
save(‘tempdata.mat‘);
%% 画有效前沿和cal
% load tempdata;
% 计算收益率矩阵
retmat = tick2ret(closeprice(:2:end));
p = Portfolio;
% 设置投资组合权重约束在0~1之间
p = p.setBudget(01);
% 设置无风险利率
riskless = 0.03;
p = Portfolio(p‘RiskFreeRate‘riskless‘AssetList‘stocklist.name);
% 输入收益率矩阵
p = p.estimateAssetMoments(retmat);
% 将数据年化
nyear = 250;
assetMean = p.AssetMean * nyear;
assetCovar = p.AssetCovar;
assetRisk = sqrt(diag(assetCovar)*nyear);
p = p.setAssetMoments(assetMeanassetRisk);
% 绘制无卖空情况下的图片
case1 = ‘Efficient frontier without short sale(annualized)‘;
% 设置投资组合所有成分非负且和为
p = setDefaultConstraints(p);
% Plot efficient frontier
[prsk1pret1] = plotFrontier(p);

a = gca;
ef = a.Children;
% clf;
% ax = axes;
hold on
% plot cash
scatter(gca0riskless70‘r‘‘filled‘);
text(0.01riskless‘rf‘);

title(case1)

srwgt = p.estimateMaxSharpeRatio;
[srRsksrRet] = p.estimatePortMoments(srwgt);

scatter(gcasrRsksrRet70‘g‘‘filled‘);
text(srRsk+0.01srRet‘Sharp Ratio‘);


% plot CAL
cal = plot(gca[0srRsk][risklesssrRet]‘r‘‘LineWidth‘2);
legend([efcal]‘Efficient Frotier‘‘CAL‘‘Location‘‘best‘);

saveas(gcf[case1 ‘.jpg‘]);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        300  2018-08-21 15:25  tushare_matlab_sdk\http_createHeader.m

     文件       2139  2018-08-21 15:25  tushare_matlab_sdk\http_paramsToString.m

     文件       5325  2018-11-01 14:12  tushare_matlab_sdk\pro_api.m

     文件       7022  2018-11-01 12:46  tushare_matlab_sdk\pro_bar.m

     文件       8433  2018-11-01 14:07  tushare_matlab_sdk\readme.txt

     文件       1692  2018-11-01 14:12  tushare_matlab_sdk\tushare_pro_test.m

     文件      13656  2018-08-21 15:25  tushare_matlab_sdk\urlread2.m

     文件      49068  2019-01-04 21:49  Efficient frontier without short sale(annualized).jpg

     文件       2477  2019-01-04 21:53  myplot.m

     目录          0  2018-12-23 20:05  tushare_matlab_sdk

----------- ---------  ---------- -----  ----

                90112                    10


评论

共有 条评论