資源簡(jiǎn)介
本文檔中包含matlab代碼自動(dòng)從tushare上獲取數(shù)據(jù),然后繪制有效前沿和資本市場(chǎng)線

代碼片段和文件信息
close?all
clear
clc
%%?數(shù)據(jù)準(zhǔn)備
%?get?data?from?tushare:https://tushare.pro/
addpath(genpath(pwd));
token?=?‘ca928fb11765cd7c41b937459c8b611e0a97d0abf2daa1f8393c8ebc‘;
api?=?pro_api(token);
stockall?=?api.query(‘stock_basic‘);
%?獲取指數(shù)數(shù)據(jù)這里的市場(chǎng)基礎(chǔ)取的是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?第一列為指數(shù)價(jià)格,其他列為股票數(shù)據(jù)
closeprice?=?indexdata.close;
temp?=?indexdata.trade_date;
temp?=?char(temp);
temp?=?str2num(temp);
tradedate?=?datetime(temp‘ConvertFrom‘‘yyyymmdd‘‘format‘‘yyyy-MM-dd‘);
%?獲取股票數(shù)據(jù)
m?=?0;
for?i?=?1:size(stockall1)
????temp?=?pro_bar(stockall.ts_code{i}?api?start_time?end_timektype‘E‘‘qfq‘);
????%?有的股票有停牌,我們得選取沒(méi)有停牌的股票
????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‘);
%%?畫(huà)有效前沿和cal
%?load?tempdata;
%?計(jì)算收益率矩陣
retmat?=?tick2ret(closeprice(:2:end));
p?=?Portfolio;
%?設(shè)置投資組合權(quán)重約束在0~1之間
p?=?p.setBudget(01);
%?設(shè)置無(wú)風(fēng)險(xiǎn)利率
riskless?=?0.03;
p?=?Portfolio(p‘RiskFreeRate‘riskless‘AssetList‘stocklist.name);
%?輸入收益率矩陣
p?=?p.estimateAssetMoments(retmat);
%?將數(shù)據(jù)年化
nyear?=?250;
assetMean?=?p.AssetMean?*?nyear;
assetCovar?=?p.AssetCovar;
assetRisk?=?sqrt(diag(assetCovar)*nyear);
p?=?p.setAssetMoments(assetMeanassetRisk);
%?繪制無(wú)賣(mài)空情況下的圖片
case1?=?‘Efficient?frontier?without?short?sale(annualized)‘;
%?設(shè)置投資組合所有成分非負(fù)且和為
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‘]);
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????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
評(píng)論
共有 條評(píng)論