量化交易陷阱和R語言改進股票配對交易策略分析中國股市投資組合
全文鏈接:http://tecdat.cn/?p=22034?
原文出處:拓端數(shù)據(jù)部落公眾號
計算能力的指數(shù)級增長,以及量化社區(qū)(日益增長的興趣使量化基金成為投資者蜂擁而至的最熱門領(lǐng)域。
量化交易陷阱和R語言改進股票配對交易策略分析中國股市投資組合
量化交易涵蓋了相當(dāng)廣泛的交易策略(從大數(shù)據(jù)分析到高頻交易)。出于本文的目的,我們將重點關(guān)注量化分析和數(shù)據(jù)科學(xué),因為它們被不同類型的交易者廣泛使用。

根據(jù)我們在量化交易方面的經(jīng)驗,在構(gòu)建量化交易策略時有幾個主要陷阱:
了解統(tǒng)計/概率。
模型實現(xiàn)。
策略回測/模擬。
風(fēng)險管理。
理解統(tǒng)計和概率
統(tǒng)計分析是數(shù)據(jù)科學(xué)和量化交易的基礎(chǔ)。當(dāng)我們分析數(shù)據(jù)(尤其是時間序列)時,如果我們對統(tǒng)計/概率(和統(tǒng)計概念)沒有很好的理解,我們很容易陷入各種陷阱。
正態(tài)分布
到目前為止,正態(tài)分布的假設(shè)是我們在金融資產(chǎn)動態(tài)建模方面所能做出的最弱假設(shè)。關(guān)于金融資產(chǎn)時間序列的正態(tài)性假設(shè)已經(jīng)發(fā)表了許多論文,但是,由于缺乏更好的選擇,我們使用高斯(正態(tài))分布,因為它使我們能夠很容易地分析數(shù)據(jù)。知道“正態(tài)性”的假設(shè)是弱的,我們應(yīng)該以同樣的方式對待正態(tài)分布的性質(zhì)(即偏斜收益、肥尾)。假設(shè)收益的分布將落在鐘形曲線之下,當(dāng)收益出現(xiàn) 3+ 個標(biāo)準(zhǔn)差時,通常會導(dǎo)致巨大的意外。
正如我們所理解的,“正態(tài)性”有時可能是一個弱假設(shè),我們可以使用已實現(xiàn)的分布(采用不同的時間框架)并查看它如何符合正態(tài)分布,因此我們可以評估資產(chǎn)的回報分布有多正常.
相關(guān)性
如果說大多數(shù)量化分析師和交易員喜歡一件事,那就是“相關(guān)性”。相關(guān)性可能是統(tǒng)計學(xué)中使用最多但最容易被誤解的概念。我們大多數(shù)人使用的相關(guān)系數(shù)是“Pearson Correlation”(以 Karl Pearson 命名)。相關(guān)性,簡而言之,描述了兩個變量(X,Y)之間的線性關(guān)系。相關(guān)性在(-1,負線性關(guān)系)和(+1,正線性關(guān)系)之間振蕩。
首先,我們需要了解什么不是相關(guān)性。它不是預(yù)測變量(即,它不表示因果關(guān)系,而是線性關(guān)系)。當(dāng)我們使用相關(guān)函數(shù)時,我們需要確保我們不會犯以下錯誤:
分析價格而不是收益(對數(shù)收益或?qū)嶋H收益)——?當(dāng)我們處理時間序列時,我們通常處理資產(chǎn)價格。資產(chǎn)價格本質(zhì)上是“非平穩(wěn)的”。“非平穩(wěn)”過程基本上意味著資產(chǎn)呈現(xiàn)趨勢(或非均值回歸過程)。如果我們以黃金現(xiàn)貨價格與 10 年國債實際收益率為例,我們可以清楚地看到使用非平穩(wěn)數(shù)據(jù)的效果。這是黃金/收益率價格的回歸模型擬合結(jié)果:?

黃金/ 10 年期實際收益率價格回歸。R2=0.81 , R=-0.9
然而,這就是價格變化收益率的回歸擬合結(jié)果(即平穩(wěn)時間序列)的樣子

黃金 (Log Rtn)/10 年實際收益率(價格變化)。R2=0.18, R=-0.43
2.沒有過多考慮樣本量/頻率——當(dāng)我們分析相關(guān)性時,就像我們分析波動率時一樣,我們需要對我們的樣本量/頻率給予很多考慮。大小和頻率都對我們的相關(guān)性估計有很大影響。如果我們使用的頻率太短,我們可能會將短期行為與持續(xù)相關(guān)性混淆。這個問題的另一面是使用的樣本量太長(假設(shè)我們想要交易短期策略時的 1 年相關(guān)性)。如果我們查看下面的相關(guān)矩陣熱圖,我們可以清楚地看到使用 20 天窗口和 180 天窗口之間的區(qū)別


解決樣本大小問題的一個好方法是對不同大小和不同時期(非重疊時期)進行采樣,以測試相關(guān)性持久性。
3.假設(shè)長期相關(guān)性持續(xù)存在——相關(guān)性分析的主要缺陷之一是認為長期相關(guān)性不會失效。這種假設(shè)通常在金融壓力和市場低迷時期被拋棄,因為相關(guān)性往往會破裂并走向極端。如果我們看看 2020 年 3 月,我們可以清楚地看到相關(guān)性的巨大變化

Z 分數(shù) (%ile) 和均值回歸
作為交易者,我們希望以良好的風(fēng)險回報進入交易。我們用來確定風(fēng)險回報的一種方法是使用 Z 分數(shù)。簡而言之,Z-score 是一種衡量我們觀察與分布均值的距離(以標(biāo)準(zhǔn)差計)的方法(該分數(shù)也可以很容易地轉(zhuǎn)換為 %ile 項)。顯然,作為交易者,我們的目標(biāo)是尋找極端事件,因為它們提供了最好的風(fēng)險回報(因為我們假設(shè)某種回歸/趨同于均值)。Z-score 的棘手之處在于,與統(tǒng)計中的其他所有內(nèi)容一樣,它高度依賴于我們的樣本量和頻率。使用 z 分數(shù)作為信號的陷阱的一個很好的例子是 2020 年 3 月/4 月黃金期貨場外交易基礎(chǔ)上的走勢。
所以我們看到使用 z 分數(shù)是時間序列極端性的一個很好的指標(biāo),但它不能是唯一的指標(biāo)。
解決這個陷阱的一個很好的方法是將我們當(dāng)前的觀察結(jié)果與歷史上不同的回顧窗口(時期)進行比較,以解釋不同的市場制度。
模型實現(xiàn)
在我們了解了統(tǒng)計分析中可能存在的陷阱之后,我們轉(zhuǎn)向交易的核心——我們的模型。雖然在實施我們的模型/策略時有很多方法可能會失敗,但我們將專注于我們可能犯的最常見(也是最關(guān)鍵)的錯誤。避免這些陷阱將大大有助于確保我們模型的適應(yīng)性和穩(wěn)健性。
過擬合/欠擬合
模型擬合既是一門藝術(shù),也是一門科學(xué)。在擬合我們的模型時,我們需要在模型過擬合和模型欠擬合之間找到一條細線。這兩種偏差最有可能導(dǎo)致我們模型的性能不佳。
過擬合——當(dāng)我們的模型在捕捉動態(tài)時非常精確時會導(dǎo)致過擬合。通常過擬合模型會涉及到相對大量的解釋變量。

欠擬合-欠擬合是過擬合的鏡像問題。當(dāng)模型太簡單(變量太少)時會導(dǎo)致欠擬合,這使得它在捕捉動態(tài)時不靈活。

USDJPY 1 周 RVol 與 UDSJPY 1 個月 RVol 回歸。
在擬合模型時,我們的目標(biāo)是使用最少的變量,但具有最大的預(yù)測能力。其背后的想法是,我們希望將模型校準(zhǔn)到最低限度,同時擁有一個能夠產(chǎn)生穩(wěn)健結(jié)果的模型。我們添加的變量越多,我們需要進行的校準(zhǔn)就越多,它能夠快速應(yīng)對不斷變化的市場的能力就越差。
異常值處理
無論我們喜歡與否,異常值觀察都是我們數(shù)據(jù)系列的一部分。我們不能忽略這些異常值,但是,我們需要知道如何處理它們,這樣我們的模型才不會因極端觀察而出現(xiàn)偏差。顯然,我們需要區(qū)分異常值的類型——如果我們發(fā)現(xiàn)觀察明顯是錯誤的(數(shù)據(jù)錯誤),我們可以刪除它,但是,如果它是有效的觀察,我們應(yīng)該接受它并讓我們的模型處理它。
模型模擬
現(xiàn)在我們已經(jīng)有了一個基于穩(wěn)健統(tǒng)計/數(shù)據(jù)分析的健全模型,我們希望對歷史(或生成的)數(shù)據(jù)進行回測(或模擬)。這是我們模型開發(fā)的關(guān)鍵部分,因為這是我們可以看到(和分析)我們的模型在受控環(huán)境中如何表現(xiàn)的關(guān)鍵。盡管在這個階段犯錯誤的方法更少(與之前的階段相比),但這些錯誤可能會付出高昂的代價,因為我們將無法發(fā)現(xiàn)模型的弱點(或問題)。
測試不同的市場區(qū)制狀態(tài)
當(dāng)我們構(gòu)建模型時,我們希望它在 100% 的時間內(nèi)表現(xiàn)良好。不幸的是,這幾乎是不可能的,因為不同的策略將在不同的市場區(qū)制中表現(xiàn)良好(想想波動市場中的趨勢跟蹤策略)。我們可以確定模型表現(xiàn)不佳的點。為了讓我們識別這些弱點,我們應(yīng)該在不同的市場區(qū)制下測試我們的策略(區(qū)制轉(zhuǎn)換模型是識別這些區(qū)制的好方法)
R語言改進的股票配對交易策略分析SPY-TLT組合和中國股市投資組合
相信大家都聽說過股票和債券的多元化投資組合。改進的股票配對交易策略基本上使用了一種前進的方法(參考文章中的概念),即最大化夏普比率,偏向于波動率而不是收益率。也就是說,它使用72天的移動窗口來最大化投資組合的不同權(quán)重配置之間的總收益,標(biāo)準(zhǔn)差提高到52的冪。說得通俗一點,在1的冪數(shù)下,這是基本的夏普比率,在0的冪數(shù)下,只是一個動量最大化的算法。
這個策略的過程很簡單:每個月重新平衡SPY和TLT之間5%的倍數(shù),之前最大化了以下數(shù)量(在72天窗口中返回波動率^2.5)。
SPY和TLT組合
以下是獲取數(shù)據(jù)和計算必要數(shù)據(jù)的代碼:
require(quantmod)
getSymbols(c("SPY", "TLT"), from="1990-01-01")
for(i in 1:21)
??weightSPY <- (i-1)*.05
??config <- Return.portfolio(R = returns, weights=c(weightSPY, weightTLT)
period <- 72
接下來,建立權(quán)重的代碼:
weights <- t(apply(monthlyModSharpe, 1, findMax))
weights[is.na(weights)] <- 0
也就是說,在每個重新平衡的日期(每月的月末),簡單地采用使每月修改的夏普比率計算最大化的設(shè)置。接下來是收益表現(xiàn):
Performance(stratRets)
結(jié)果如下:

具有以下股票曲線:

并不完美,但相比之下,它的成分如何呢,我們來看看。
apply.yearly(Components, Return.cumulative)
以下是一些常見的統(tǒng)計數(shù)據(jù):

簡而言之,這一策略的表現(xiàn)似乎遠遠好于上述兩種成分。我們來看看股票曲線的比較是否反映了這一點。

事實上,雖然它確實在危機中出現(xiàn)了下跌,但當(dāng)時這兩個工具都在下跌,所以看起來這個策略在糟糕的情況下取得了最好的效果.以下是年度收益。
yearly(Return.cumulative)

然而,從2002年整體上看,雖然該策略很少會像兩個中更好的表現(xiàn)一樣,但它總是比兩個中更差的表現(xiàn)出色--不僅如此,即使在一個表現(xiàn)差的時候,該策略在回測的每一年中都取得了積極的表現(xiàn),例如2008年的SPY,以及2009年和2013年的TLT。以下是SPY在策略中的權(quán)重。
weightSPY <- do.call(rbind, weightSPY)
TimeSeries(alig, date.format="%Y", ylab="SPY權(quán)重", main="SPY-TLT配對中SPY的權(quán)重")

貴州茅臺和民生銀行組合
股票數(shù)據(jù)獲取及整理
## [1] "GZMT" "MSYH"
組合收益表現(xiàn)結(jié)果如下:

加入比較項-非組合下的單只表現(xiàn)

年化收益率比較
?
?

通過累積收益率、日收益率和最大回撤率,以及年化收益率比較,可以發(fā)現(xiàn)采用優(yōu)化方法的投資組合明顯優(yōu)于傳統(tǒng)的投資策略。
現(xiàn)在,雖然這對某些人來說可能是一個獨立的策略,但在我看來,動態(tài)地重新加權(quán)兩個具有負相關(guān)性的收益流,與它們形成的成分相比,可能會產(chǎn)生一些較好的結(jié)果。此外,模擬實際組合收益率所采用的方法很有趣,不是簡單地依靠一個數(shù)字來總結(jié)兩種工具之間的關(guān)系,毫無疑問,這種方法作為一種一般的前進方法,有著廣泛的應(yīng)用。

最受歡迎的見解
1.用機器學(xué)習(xí)識別不斷變化的股市狀況—隱馬爾科夫模型(HMM)的應(yīng)用
2.R語言GARCH-DCC模型和DCC(MVT)建模估計
3.R語言實現(xiàn) Copula 算法建模依賴性案例分析報告
4.R語言COPULAS和金融時間序列數(shù)據(jù)VaR分析
5.R語言多元COPULA GARCH 模型時間序列預(yù)測
6.用R語言實現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實例
7.r語言預(yù)測波動率的實現(xiàn):ARCH模型與HAR-RV模型
8.R語言如何做馬爾科夫轉(zhuǎn)換模型markov switching model
9.matlab使用Copula仿真優(yōu)化市場風(fēng)險