
因子模型舉例:主成分分析
我之前提到的因子風險主要包括經濟的(知利率)、基本面的(如賬面市值比率)和技術的(如前期收益率)。獲得一個包含大童股票的投資組合因子風險的歷史數據,并用于對因子模型進行回測,對于獨立交易員來說是非常昂貴且不切實際的。不過,有一種因子模型,其構建只依核于歷史收益率。這個方法叫做主成分分析(PCA)。
用主成分分析構建因子風險和因子收益率,必須假設因子風險在估計的時間段內是不變的(時間獨立)。(這排除了表示均值回歸或慣性的因子,因為這些因子風險都與前期收益率有關)。更重要的是,如果假設因子收益率之間“不相關”,協方差矩陣bbT就是對角矩陣。如果用協方差矩陣RRT的特征向量作為APT方程R=Xb+u中矩陣X的列向量,可知bbT的確是對角矩陣,并且矩陣RRT的特征值正好擾是因子收益率b的方差。但是,如果因子數量與股票數量相等,我們就不需要使用因子分析了,因為只要選取幾個具有較大特征位的特征向黃就能構成矩陣X。特征向量的個數是一個需要優化的交易模型參數。
下面的MATLAB程序展示了一個對S&P60。小盤股使用主成分分析的可能交易策略。這一策略僅設因于收益率具有慣性,即從本期到下期。因于收益率的值保持不變。因此,可以買入基于這些因子的期望收益率最高的股票,賣出期望收益率最低的股票。如果發現這一策略的平均收益率為負,表明對收益率具有慣性的假設是不合適的,或者策略的特有收益率太大了以至于策略失效。
clear;
%使用回望交易日作為佑計區間(訓練集),以此來決定因子風險
%回望期交易日為252天,因子5個
%交易策略為:購買下一個交易日期望收益率最高的50只股票topN = 50;
%選用SP600小盤股做測試(此MATLAB二進制輯入丈件包含交易日,股票,開盤價,最高價,最低價,收盤價)
load('IJR 20080114');
mycls=fillMissingData(cl);
positionsTable=zeros (size(cl));
寫dailyret的行是在不同時間段上的觀察值
dailyret=(mycls一lagl(mycls))/lagl(mycls);
for t=lookback+1:length(tday)
% R的列是不同的觀刻對象
R=dailyret(t-lookback+一:t.:)’;
%不考慮所有收益率缺失的股票
hasData=find(all(isfinite(R),2));
R=R(hasData,:);
avgR=smartmean(R,2);
%移去均值
R=R-repmat(avgR,[1 size(R,2)]);
%計算不同股票收益率的協方差拒陣
covR= smartcov(R');
% X是因子風險矩陣,B是因子收益率的方差
%用covR的特征值作為X的列向量
[X,B]=eig(covR);
%保留的因子數為numFactors
X(:,1:size(X,2)-numFactors) =[];
% b是從時間t-1到t的因子收益率
results=ols(R(:,end),X);b= results.beta;
% Rexp是假設因子收益率保持常數時。下一個時間段的期望收益率
Rexp=avgR+X*b;
[foo idxSort]=sort(Rexp,'ascend');
%做空期望收益率最低的50只股票
positionsTable(t,hasData(idxSort(1:topN)))=-1;
%做多期望收益率最高的50只股票
positionsTable(t,. ..
hasData(idxSort(end-opN+1:end)))=1;
end
%計算交易策略的每日收益率
ret=...
smartsum(backshift(1,positionsTable).*dailyret,2);
%計算交易策略的年化收益率
avgret=smartmean(ret)*252%收益率很低
%avgret=
%
%-1.8099
程序中使用了smartcov函數來計算多只股票日收益平向量的協方差矩陣。與MATLAB內置的cov函數不同,smartcov函數忽略了收益率缺失的交易日(包括NaN值)。
function y=smartcov(x)
% n個有限元素的協方差
% 行為觀測值,列為變量
% 用N標準化,而非N-1
y= NaN (size(x,2) , size(x, 2 ));
xc= NaN(size(x));
goodstk=find(~all(isnan(x),1));
xc(:,goodstk)=...
x(:,goodstk)-repmat(smartmean(x(:,goodstk),1),...
[size(x,1)1];%移去均值
for m=1:length(goodstk)
for n=m:length(goodstk)
y(goodstk(m),goodstk(n))=...
smartmean(xc(:,goodstk(m)).
*..xc(:,goodstk(n)));
y(goodstk(n),goodstk(m))=y(goodstk(m) ,goodstk(n));
end
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24