
因子模型舉例:主成分分析
我之前提到的因子風(fēng)險主要包括經(jīng)濟的(知利率)、基本面的(如賬面市值比率)和技術(shù)的(如前期收益率)。獲得一個包含大童股票的投資組合因子風(fēng)險的歷史數(shù)據(jù),并用于對因子模型進行回測,對于獨立交易員來說是非常昂貴且不切實際的。不過,有一種因子模型,其構(gòu)建只依核于歷史收益率。這個方法叫做主成分分析(PCA)。
用主成分分析構(gòu)建因子風(fēng)險和因子收益率,必須假設(shè)因子風(fēng)險在估計的時間段內(nèi)是不變的(時間獨立)。(這排除了表示均值回歸或慣性的因子,因為這些因子風(fēng)險都與前期收益率有關(guān))。更重要的是,如果假設(shè)因子收益率之間“不相關(guān)”,協(xié)方差矩陣bbT就是對角矩陣。如果用協(xié)方差矩陣RRT的特征向量作為APT方程R=Xb+u中矩陣X的列向量,可知bbT的確是對角矩陣,并且矩陣RRT的特征值正好擾是因子收益率b的方差。但是,如果因子數(shù)量與股票數(shù)量相等,我們就不需要使用因子分析了,因為只要選取幾個具有較大特征位的特征向黃就能構(gòu)成矩陣X。特征向量的個數(shù)是一個需要優(yōu)化的交易模型參數(shù)。
下面的MATLAB程序展示了一個對S&P60。小盤股使用主成分分析的可能交易策略。這一策略僅設(shè)因于收益率具有慣性,即從本期到下期。因于收益率的值保持不變。因此,可以買入基于這些因子的期望收益率最高的股票,賣出期望收益率最低的股票。如果發(fā)現(xiàn)這一策略的平均收益率為負(fù),表明對收益率具有慣性的假設(shè)是不合適的,或者策略的特有收益率太大了以至于策略失效。
clear;
%使用回望交易日作為佑計區(qū)間(訓(xùn)練集),以此來決定因子風(fēng)險
%回望期交易日為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)]);
%計算不同股票收益率的協(xié)方差拒陣
covR= smartcov(R');
% X是因子風(fēng)險矩陣,B是因子收益率的方差
%用covR的特征值作為X的列向量
[X,B]=eig(covR);
%保留的因子數(shù)為numFactors
X(:,1:size(X,2)-numFactors) =[];
% b是從時間t-1到t的因子收益率
results=ols(R(:,end),X);b= results.beta;
% Rexp是假設(shè)因子收益率保持常數(shù)時。下一個時間段的期望收益率
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函數(shù)來計算多只股票日收益平向量的協(xié)方差矩陣。與MATLAB內(nèi)置的cov函數(shù)不同,smartcov函數(shù)忽略了收益率缺失的交易日(包括NaN值)。
function y=smartcov(x)
% n個有限元素的協(xié)方差
% 行為觀測值,列為變量
% 用N標(biāo)準(zhǔ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
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10