
用R檢驗配對股票的協整性
基于統計套利的配對交易策略是一種市場中性策略。具體地說,是指從市場上找出歷史股價走勢相近的股票進行配對,當配對股票價格差(Spread)偏離歷史均值時,則做空股價偏高的股票,同時做多股價偏低的股票,等待它們回歸到長期均衡關系,由此賺取兩股票價格收斂的報酬。
進行配對交易,第一步也是最關鍵的一步是尋找符合配對條件的股票,即兩支歷史價格走勢相近,具有長期穩定關系的股票。本文解釋如何用R來實現協整檢驗。
假設你有兩支股票,如TKR_Y和TKR_X,各自5分鐘行情的歷史數據,你想要知道它們是否存在協整關系;再假設這些數據是從PostgreSQL數據庫(pairs_trading_test)中提取,數據表(tbl_quote)的結構為:
id #id
market #市場,如SH,SZ
symbol #代碼,如600036
qdatetime #時間戳,YYYY-MM-DD HH:MM:SS
open #開盤價
high #最高價
low #最低價
close #收盤價
adj_close #調整后收盤價,指除權息后經調整的收盤價
數據表示
在R中,當然可以用向量(vector)或數據框(data frame)來表示你的時間序列數據,但其過程肯定乏味低效。強烈建議使用zoo包或xts包來進行時間序列分析,xts是zoo包的一個超集,包含極高的運算效率和其它一些方便實用的特點。此處,我們用zoo對象來表達時間序列數據。
一旦把數據加載到zoo對象,比如t,那么它的行為與數據框類似。一個zoo對象可以包含若干列,每一列是一個時間序列,每一行則是這些時間序列在同一時刻的觀測值。對象也提供了另外一些附加屬性,如:index(t)是一個日期向量,每次觀察一個日期;第一個和最后一個日期可以分別用start(t)和end(t)獲得。
加載數據
從數據庫中讀取并加載數據只需完成以下簡單步驟:
library(zoo)
library(RpgSQL)
r_conn<-dbConnect(pgSQL(), user="postgres", password="postgres",
dbname="pairs_trading_test", host="localhost")
q<-paste("select qdatetime, log(close) from tbl_quote where market like '", X_market, "' and symbol like '", X_symbol, "'", sep="")
quote_x <- dbGetQuery(r_conn, q)
q<-paste("select qdatetime, log(close) from tbl_quote where market like '", Y_market, "' and symbol like '", Y_symbol, "'", sep="")
quote_y <- dbGetQuery(r_conn, q)
#用zoo函數來構造zoo對象,該函數有兩個參數,一個數據向量,一個日期向量
quote_x <- zoo(quote_x$close, quote_x$qdatetime)
quote_y <- zoo(quote_y$close, quote_y$qdatetime)
# merge函數合并兩個zoo對象,同時計算它們的交集(all=FALSE)或并集(all=TRUE)
t.zoo <- merge(quote_x, quote_y, all=FALSE)
#此時,t.zoo是一個包含兩列:quote_x和quote_y的zoo對象。由于R中許多統計函數需要數據框作為輸入項。在此,我們創建一個數據框對象
t <- as.data.frame(t.zoo)
#打印輸出日期范圍
cat("日期范圍是:", format(start(t.zoo)), "至", format(end(t.zoo)), "\n")
#----------------------------------------------------------------------------------------------------------------
# X_market, X_symbol, Y_market, Y_symbol分別為股票TKR_X、TKR_Y的市場和代碼
# log(close)表示取收盤價自然對數。取價格的對數序列是協整檢驗的常用做法,目的是消除數據中可能存在的異方差。
#----------------------------------------------------------------------------------------------------------------
構造價差序列
在Matlab、Eviews等軟件中,一般是先檢驗協整關系,然后再構造價差序列。在R中,我們可以以另外一種方式完成同樣的任務:先構造價差序列,然后對該序列進行單位根檢驗。如果價差序列有一個根位于單位圓內,則相應的股票就是協整的。
價差序列定義如下:
S = y - (β × x)
此處,β是對沖系數,用最小二乘法計算而得。移項,我們要知道的不過就是最適合以下方程的β:
y =(-β)× x
這是一個簡單且沒有y截距的線性方程。在R中,lm函數可以用來擬合這樣的線性模型。
# lm函數用OLS構造線性回歸模型。我們先構造一個截距為零的線性模型,然后提取模型的第2個回歸系數。
m <- lm(quote_y ~ quote_x + 0, data = t)
beta <- coef(m)[1]
#現在,計算價差序列
sprd <- t$quote_y - beta * t$quote_x
傳遞給lm的第一個參數是一個指定線性模型的公式,公式quote_y ~ quote_x + 0表示模型如下:
quote_yi= β × quote_xi+ εi
(如果公式中省略掉"+ 0", 則R也會擬合一個y截距)
檢驗協整關系
ADF是單位根檢驗的一種基本方法,許多R包都提供該方法。這里,我們用tseries包中的adf.test函數。該函數返回一個包含測試結果,尤其是我們所需的P值,的對象。
library(tseries)
ht <- adf.test(sprd, alternative="stationary", k=0)
設置alternative="stationary"非常重要:
對統計學者而言,它指定了一個價差序列非平穩或發散的零假設
對其他人而言,它意味著如果P值很小,則價差是均值回復的。至于何為“小”,取決與你有多嚴格,一般是小于0.1或0.05(越小越好)
至此,協整檢驗就Ok了。我們可以將ADF檢驗結果解釋如下:
#ht對象中包含ADF檢驗中得到的P值。p值是價差序列非均值回復的概率,因此,越小的P值意味序列非均值回復的概率越小。
if (ht$p.value < 0.05) {
cat("價差可能均值回復.\n")
} else {
cat("價差不滿足均值回復.\n")
}
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
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