
用R檢驗(yàn)配對股票的協(xié)整性
基于統(tǒng)計(jì)套利的配對交易策略是一種市場中性策略。具體地說,是指從市場上找出歷史股價(jià)走勢相近的股票進(jìn)行配對,當(dāng)配對股票價(jià)格差(Spread)偏離歷史均值時(shí),則做空股價(jià)偏高的股票,同時(shí)做多股價(jià)偏低的股票,等待它們回歸到長期均衡關(guān)系,由此賺取兩股票價(jià)格收斂的報(bào)酬。
進(jìn)行配對交易,第一步也是最關(guān)鍵的一步是尋找符合配對條件的股票,即兩支歷史價(jià)格走勢相近,具有長期穩(wěn)定關(guān)系的股票。本文解釋如何用R來實(shí)現(xiàn)協(xié)整檢驗(yàn)。
假設(shè)你有兩支股票,如TKR_Y和TKR_X,各自5分鐘行情的歷史數(shù)據(jù),你想要知道它們是否存在協(xié)整關(guān)系;再假設(shè)這些數(shù)據(jù)是從PostgreSQL數(shù)據(jù)庫(pairs_trading_test)中提取,數(shù)據(jù)表(tbl_quote)的結(jié)構(gòu)為:
id #id
market #市場,如SH,SZ
symbol #代碼,如600036
qdatetime #時(shí)間戳,YYYY-MM-DD HH:MM:SS
open #開盤價(jià)
high #最高價(jià)
low #最低價(jià)
close #收盤價(jià)
adj_close #調(diào)整后收盤價(jià),指除權(quán)息后經(jīng)調(diào)整的收盤價(jià)
數(shù)據(jù)表示
在R中,當(dāng)然可以用向量(vector)或數(shù)據(jù)框(data frame)來表示你的時(shí)間序列數(shù)據(jù),但其過程肯定乏味低效。強(qiáng)烈建議使用zoo包或xts包來進(jìn)行時(shí)間序列分析,xts是zoo包的一個(gè)超集,包含極高的運(yùn)算效率和其它一些方便實(shí)用的特點(diǎn)。此處,我們用zoo對象來表達(dá)時(shí)間序列數(shù)據(jù)。
一旦把數(shù)據(jù)加載到zoo對象,比如t,那么它的行為與數(shù)據(jù)框類似。一個(gè)zoo對象可以包含若干列,每一列是一個(gè)時(shí)間序列,每一行則是這些時(shí)間序列在同一時(shí)刻的觀測值。對象也提供了另外一些附加屬性,如:index(t)是一個(gè)日期向量,每次觀察一個(gè)日期;第一個(gè)和最后一個(gè)日期可以分別用start(t)和end(t)獲得。
加載數(shù)據(jù)
從數(shù)據(jù)庫中讀取并加載數(shù)據(jù)只需完成以下簡單步驟:
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函數(shù)來構(gòu)造zoo對象,該函數(shù)有兩個(gè)參數(shù),一個(gè)數(shù)據(jù)向量,一個(gè)日期向量
quote_x <- zoo(quote_x$close, quote_x$qdatetime)
quote_y <- zoo(quote_y$close, quote_y$qdatetime)
# merge函數(shù)合并兩個(gè)zoo對象,同時(shí)計(jì)算它們的交集(all=FALSE)或并集(all=TRUE)
t.zoo <- merge(quote_x, quote_y, all=FALSE)
#此時(shí),t.zoo是一個(gè)包含兩列:quote_x和quote_y的zoo對象。由于R中許多統(tǒng)計(jì)函數(shù)需要數(shù)據(jù)框作為輸入項(xiàng)。在此,我們創(chuàng)建一個(gè)數(shù)據(jù)框?qū)ο?
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)表示取收盤價(jià)自然對數(shù)。取價(jià)格的對數(shù)序列是協(xié)整檢驗(yàn)的常用做法,目的是消除數(shù)據(jù)中可能存在的異方差。
#----------------------------------------------------------------------------------------------------------------
構(gòu)造價(jià)差序列
在Matlab、Eviews等軟件中,一般是先檢驗(yàn)協(xié)整關(guān)系,然后再構(gòu)造價(jià)差序列。在R中,我們可以以另外一種方式完成同樣的任務(wù):先構(gòu)造價(jià)差序列,然后對該序列進(jìn)行單位根檢驗(yàn)。如果價(jià)差序列有一個(gè)根位于單位圓內(nèi),則相應(yīng)的股票就是協(xié)整的。
價(jià)差序列定義如下:
S = y - (β × x)
此處,β是對沖系數(shù),用最小二乘法計(jì)算而得。移項(xiàng),我們要知道的不過就是最適合以下方程的β:
y =(-β)× x
這是一個(gè)簡單且沒有y截距的線性方程。在R中,lm函數(shù)可以用來擬合這樣的線性模型。
# lm函數(shù)用OLS構(gòu)造線性回歸模型。我們先構(gòu)造一個(gè)截距為零的線性模型,然后提取模型的第2個(gè)回歸系數(shù)。
m <- lm(quote_y ~ quote_x + 0, data = t)
beta <- coef(m)[1]
#現(xiàn)在,計(jì)算價(jià)差序列
sprd <- t$quote_y - beta * t$quote_x
傳遞給lm的第一個(gè)參數(shù)是一個(gè)指定線性模型的公式,公式quote_y ~ quote_x + 0表示模型如下:
quote_yi= β × quote_xi+ εi
(如果公式中省略掉"+ 0", 則R也會擬合一個(gè)y截距)
檢驗(yàn)協(xié)整關(guān)系
ADF是單位根檢驗(yàn)的一種基本方法,許多R包都提供該方法。這里,我們用tseries包中的adf.test函數(shù)。該函數(shù)返回一個(gè)包含測試結(jié)果,尤其是我們所需的P值,的對象。
library(tseries)
ht <- adf.test(sprd, alternative="stationary", k=0)
設(shè)置alternative="stationary"非常重要:
對統(tǒng)計(jì)學(xué)者而言,它指定了一個(gè)價(jià)差序列非平穩(wěn)或發(fā)散的零假設(shè)
對其他人而言,它意味著如果P值很小,則價(jià)差是均值回復(fù)的。至于何為“小”,取決與你有多嚴(yán)格,一般是小于0.1或0.05(越小越好)
至此,協(xié)整檢驗(yàn)就Ok了。我們可以將ADF檢驗(yàn)結(jié)果解釋如下:
#ht對象中包含ADF檢驗(yàn)中得到的P值。p值是價(jià)差序列非均值回復(fù)的概率,因此,越小的P值意味序列非均值回復(fù)的概率越小。
if (ht$p.value < 0.05) {
cat("價(jià)差可能均值回復(fù).\n")
} else {
cat("價(jià)差不滿足均值回復(fù).\n")
}
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03