github有寶!這次帶給大家的是火力全開(kāi)的n種期貨/股票交易量化算法寶庫(kù)。
有沒(méi)貨?是不是都是干貨,老鐵們先看看以下的交易策略可視化效果圖。
精彩吧!咱廢話(huà)不多,快速切入正題吧。
介紹
此Github庫(kù)中的大多數(shù)腳本都是技術(shù)指標(biāo)自動(dòng)交易。這些腳本包括各種類(lèi)型的動(dòng)量交易,開(kāi)盤(pán)區(qū)間突破和統(tǒng)計(jì)套利策略。然而,量化交易不僅僅與技術(shù)分析有關(guān)。它可以指利用計(jì)算金融來(lái)利用衍生品價(jià)格不匹配,對(duì)替代數(shù)據(jù)集進(jìn)行模式識(shí)別以在市場(chǎng)微觀結(jié)構(gòu)中生成alpha或低延遲訂單執(zhí)行。因此,這些項(xiàng)目主要進(jìn)行量化分析,以能跑盈市場(chǎng)。所有腳本都是歷史數(shù)據(jù)回測(cè)(是通過(guò)Python,在不久的將來(lái)可能是Julia進(jìn)行重寫(xiě))。
策略:
1. MACD
MACD是交易策略101.MACD指移動(dòng)平均線收斂/發(fā)散。這是一種動(dòng)量交易策略,它認(rèn)為上行/下行動(dòng)量對(duì)短期均線的影響大于長(zhǎng)期均線。任何沒(méi)有金融背景的家伙只需要5分鐘與MACD信號(hào)進(jìn)行交易。關(guān)于MACD振蕩器的簡(jiǎn)單性,它是市場(chǎng)上非專(zhuān)業(yè)人士中最常見(jiàn)的策略。在行為經(jīng)濟(jì)學(xué)中,人們對(duì)策略的信任越多,策略就越有效(并非總是如此,例如2008)。因此,我們不應(yīng)低估MACD的效果。
對(duì)于策略本身,計(jì)算特定股票的收盤(pán)價(jià)的長(zhǎng)期移動(dòng)平均線和短期移動(dòng)平均線。為了生成交易信號(hào),實(shí)現(xiàn)了不同時(shí)間范圍的移動(dòng)平均線之間的比較。當(dāng)短期均線高于長(zhǎng)期均線時(shí),相應(yīng)地交易給定的股票。反之亦然。
2.配對(duì)交易
配對(duì)交易是統(tǒng)計(jì)套利的基本形式。它依賴(lài)于兩個(gè)協(xié)整股票不會(huì)相互偏離太遠(yuǎn)的假設(shè)。第一步,我們選擇兩只股票并運(yùn)行Engle-Granger兩步分析。一旦滿(mǎn)足協(xié)整的標(biāo)準(zhǔn),標(biāo)準(zhǔn)化殘差并將一個(gè)西格瑪(雙尾)設(shè)置為閾值。之后,相應(yīng)地計(jì)算所選股票的當(dāng)前標(biāo)準(zhǔn)化殘差。當(dāng)標(biāo)準(zhǔn)化殘差超過(guò)閾值時(shí),觸發(fā)并產(chǎn)生交易信號(hào)。簡(jiǎn)單的策略是,把價(jià)格低廉的股票和短期的股票做空。
配對(duì)交易的核心思想是協(xié)整。從比喻的角度來(lái)看,協(xié)整就像是一對(duì)情侶,兩個(gè)政黨瘋狂地聯(lián)系在一起。然而,大多數(shù)關(guān)系遲早會(huì)破裂,只有極少數(shù)人能夠結(jié)婚(從統(tǒng)計(jì)角度看)。因此,在任何配對(duì)交易訂單執(zhí)行之前經(jīng)常檢查協(xié)整的現(xiàn)狀非常重要(同樣適用于關(guān)系)。
3. Heikin-Ashi
Heikin-Ashi,實(shí)際上是指日語(yǔ)中的名稱(chēng),是另一種燭臺(tái)圖表。Heiki-Ashi的復(fù)雜規(guī)則旨在過(guò)濾動(dòng)量交易的噪音。因此,與標(biāo)準(zhǔn)燭臺(tái)相比,Heikin-Ashi顯示更多連續(xù)柱,這使得價(jià)格動(dòng)量和反轉(zhuǎn)點(diǎn)在數(shù)字中更加可區(qū)分??梢哉f(shuō)它應(yīng)該在橫向和波動(dòng)的市場(chǎng)上超過(guò)標(biāo)準(zhǔn)燭臺(tái)。
對(duì)于戰(zhàn)略本身,最初對(duì)四個(gè)重要基準(zhǔn)進(jìn)行了一些轉(zhuǎn)換 - open,close,最高,最低。下一步是在Heikin-Ashi Open,Close,High,Low上應(yīng)用獨(dú)特的Heikin-Ashi規(guī)則來(lái)生成交易信號(hào)。Heikin-Ashi(或任何動(dòng)量交易策略)的缺點(diǎn)是響應(yīng)緩慢。因此,應(yīng)該相應(yīng)地設(shè)置止損位置,這樣就不會(huì)陷入任何自動(dòng)觸發(fā)的閃電崩盤(pán)。
Heikin-Ashi的規(guī)則可以在Heikin-Ashi backtest.py中找到。
4.倫敦 London Breakout
倫敦 London Breakout是每日內(nèi)部開(kāi)放范圍的突破策略?;旧希遣煌瑫r(shí)區(qū)不同市場(chǎng)的信息套利。
外匯市場(chǎng)全球24/7全天候運(yùn)營(yíng)。例如,您不能僅僅因?yàn)楦L卦诩~約證券交易所上市而在ASX中持有福特的股票。由于外匯市場(chǎng)是分散的,只要市場(chǎng)開(kāi)放,您就可以在任何市場(chǎng)中利用時(shí)差導(dǎo)致的信息差進(jìn)行任何貨幣對(duì)交易。給個(gè)例子:
回到London Breakout,倫敦和東京是世界上最大的兩個(gè)外匯市場(chǎng)。東京FX的交易時(shí)間是格林尼治標(biāo)準(zhǔn)時(shí)間上午0:00 - 格林尼治標(biāo)準(zhǔn)時(shí)間上午8:59。倫敦FX外匯交易時(shí)間(夏令時(shí)沒(méi)有夏令時(shí))從格林威治標(biāo)準(zhǔn)時(shí)間上午8:00開(kāi)始即使有一個(gè)小時(shí)的重疊, London Breakout的關(guān)鍵時(shí)間表是格林尼治標(biāo)準(zhǔn)時(shí)間上午7:00 - 格林尼治標(biāo)準(zhǔn)時(shí)間7:59 amaka是最后一個(gè)交易時(shí)間之前倫敦市場(chǎng)開(kāi)放。關(guān)鍵時(shí)間框架的價(jià)格變動(dòng)包含了金融市場(chǎng)所有隔夜活動(dòng)的信息(從當(dāng)前時(shí)區(qū)的角度來(lái)看)。
對(duì)于策略本身,在關(guān)鍵時(shí)間范圍的高低之前建立上限閾值和下限閾值。一旦倫敦外匯市場(chǎng)開(kāi)放,將在前幾分鐘檢查價(jià)格是否會(huì)突破預(yù)設(shè)的邊界。如果它高于閾值,會(huì)相應(yīng)地持有貨幣對(duì)。反之亦然。盡管如此,應(yīng)該設(shè)置一個(gè)閾值,以防止在開(kāi)放波動(dòng)異常的情況下進(jìn)行交易。通常,分別根據(jù)目標(biāo)止損或止損清算頭寸。在交易時(shí)間結(jié)束時(shí)(仍然從當(dāng)前時(shí)區(qū)的角度來(lái)看),如果有任何未平倉(cāng)頭寸,會(huì)將其清除。
5.Awesome oscillator
Awesome oscillator是MACD的升級(jí)版本。這是關(guān)注移動(dòng)平均線游戲的動(dòng)力策略之一。而不是在收盤(pán)價(jià)上采取簡(jiǎn)單的移動(dòng)平均線,Awesome oscillator的移動(dòng)平均線來(lái)自高價(jià)和低價(jià)的平均值。與MACD 類(lèi)似,它需要短期和長(zhǎng)期移動(dòng)平均線來(lái)構(gòu)建。
可以在TradingView中找到Awesome oscillator的規(guī)則。
6.Oil Money項(xiàng)目
該項(xiàng)目的靈感來(lái)自一篇關(guān)于石油支持的外匯的文章。當(dāng)石油退出熊市時(shí),石油生產(chǎn)國(guó)的貨幣兌換也會(huì)反彈。這個(gè)陳述真的有效嗎?
根據(jù)彭博社(或許多其他類(lèi)似研究)的文章,研究人員研究了石油貨幣與石油價(jià)格之間的相關(guān)性,而不是因果關(guān)系。但相關(guān)性并不等于因果關(guān)系。相關(guān)可能是數(shù)學(xué)游戲的巧合。我們根本無(wú)法得出油價(jià)推動(dòng)貨幣走勢(shì)的結(jié)論。一些研究人員甚至使用自舉,這極大地破壞了時(shí)間序列的自相關(guān)性。因此,對(duì)一些石油化學(xué)應(yīng)用學(xué)術(shù)分析和計(jì)算機(jī)模擬以測(cè)試石油的因果關(guān)系至關(guān)重要。
7.Dual Thrust
如果你在谷歌搜索雙重推力,你將最終得到火箭引擎的結(jié)果。不要驚慌,你可以放心,雙推力策略遠(yuǎn)不及火箭科學(xué)。這只是Universal Technical Systems創(chuàng)始人開(kāi)發(fā)的開(kāi)放式突破策略。這個(gè)策略所涉及的數(shù)學(xué)有小學(xué)數(shù)據(jù)基礎(chǔ)即可。
最初,根據(jù)前幾天的開(kāi)盤(pán)價(jià),收盤(pán)價(jià),最高價(jià)和最低價(jià)設(shè)定上限和下限。當(dāng)市場(chǎng)開(kāi)盤(pán)且價(jià)格超過(guò)某些閾值時(shí),會(huì)在上限/下限閾值之前采取多頭/空頭頭寸。該策略在日內(nèi)交易中非常有用。但是,該策略中沒(méi)有止損/盈利頭寸。當(dāng)價(jià)格從一個(gè)門(mén)檻變?yōu)榱硪粋€(gè)門(mén)檻時(shí),會(huì)改變頭寸需要在當(dāng)天結(jié)束時(shí)清除所有頭寸。
可以在QuantConnect中找到雙推力規(guī)則。
8.拋物線SAR
拋物線SAR是識(shí)別趨勢(shì)停止和反轉(zhuǎn)的指標(biāo)。通常,拋物線SAR在圖表價(jià)格的上方或下方以虛線表示。當(dāng)價(jià)格處于上升趨勢(shì)時(shí),SAR曲線將低于價(jià)格。當(dāng)價(jià)格下跌時(shí),SAR曲線將超過(guò)價(jià)格。拋物線SAR一直被視為抵抗價(jià)格動(dòng)量的象征。當(dāng)SAR曲線和價(jià)格曲線交叉時(shí),應(yīng)該執(zhí)行交易訂單。
這種策略的構(gòu)建看起來(lái)非常簡(jiǎn)單,但由于涉及遞歸計(jì)算,指標(biāo)的構(gòu)建非常耗費(fèi)算力。關(guān)于如何計(jì)算拋物線SAR的插圖可以在維基百科中找到,但它沒(méi)有得到很好的解釋。為了清楚地了解計(jì)算,個(gè)人建議是查看joeu2004制作的電子表格。
值得一提的是,SAR和RSI(將在后面的章節(jié)中介紹)共享同一個(gè)創(chuàng)始人Welles Wilder。這個(gè)家伙是一個(gè)真正的傳奇人物,曾經(jīng)是機(jī)械工程師和房地產(chǎn)開(kāi)發(fā)人員,后來(lái)成為技術(shù)分析師。他的技術(shù)交易系統(tǒng)書(shū)是任何想提升量化交易系統(tǒng)水平的人必讀讀物。
9.Bollinger
布林帶是一個(gè)非常簡(jiǎn)單但有力的指標(biāo)。該指標(biāo)有三個(gè)波段。中頻帶是價(jià)格系列的移動(dòng)平均線(通常需要20滯后)。上部和下部帶是遠(yuǎn)離中間帶的兩個(gè)移動(dòng)標(biāo)準(zhǔn)偏差。布林帶可用于測(cè)試各種類(lèi)型的策略。
對(duì)于波動(dòng)率交易,帶寬的收縮和擴(kuò)展是至關(guān)重要的因素。任何明顯的動(dòng)量聚類(lèi)(它可以采取向上或向下的形式)將導(dǎo)致布林帶擴(kuò)張。并且水平通道中的振蕩將導(dǎo)致布林帶收縮。
對(duì)于動(dòng)量交易,現(xiàn)象表明了標(biāo)的資產(chǎn)的阻力和支撐位。在一個(gè)強(qiáng)勁的趨勢(shì)中,價(jià)格不斷嘗試觸及或突破上/下帶以及布林帶向同一方向移動(dòng)。
對(duì)于模式識(shí)別,布林帶可以測(cè)試底部W,前M,頭肩模式等。上下波段作為間隔,更容易識(shí)別歷史數(shù)據(jù)中的隱藏模式。
有關(guān)布林帶的更多詳情,請(qǐng)?jiān)L問(wèn)TradingView。
10.RSI模式
RSI(相對(duì)強(qiáng)弱指數(shù))也是一個(gè)受歡迎的指標(biāo)。它反映了當(dāng)前股價(jià)動(dòng)能的強(qiáng)弱。計(jì)算非常簡(jiǎn)單。我們使用14天平滑移動(dòng)平均線(或其他移動(dòng)平均線方法)分別計(jì)算每日內(nèi)部上升趨勢(shì)和下降趨勢(shì)。我們將上升趨勢(shì)移動(dòng)平均線除以下降趨勢(shì)移動(dòng)平均線作為相對(duì)強(qiáng)弱。將相對(duì)強(qiáng)度標(biāo)準(zhǔn)化100,這成為一個(gè)稱(chēng)為RSI的指標(biāo)。人們普遍認(rèn)為,70以上的RSI處于超買(mǎi)狀態(tài),而30以下的RSI處于超賣(mài)狀態(tài)。這是在RSI上交易的最簡(jiǎn)單方法(如下圖所示)。盡管如此,RSI勢(shì)頭與價(jià)格動(dòng)量之間可能存在分歧,而這些趨勢(shì)與價(jià)格趨勢(shì)并未在程序中體現(xiàn)。任何分歧戰(zhàn)略對(duì)RSI的有效性都是值得商榷的。
如果您正在尋找稍微復(fù)雜的東西,那么我們也可以將模式識(shí)別技術(shù)應(yīng)用于RSI。與9布林帶不同,我們可以直接看看RSI本身的模式而不是價(jià)格。由于我們測(cè)試了布林帶的雙底模式,我們這次將在RSI上測(cè)試頭肩模式。
有關(guān)head-shoulder 模式的詳細(xì)信息,請(qǐng)參閱Investopedia。
11.Monte Carlo項(xiàng)目
蒙特卡洛,實(shí)際上指的是大量隨機(jī)事件的計(jì)算機(jī)模擬。這種非常規(guī)的數(shù)學(xué)方法在隨機(jī)過(guò)程的研究中非常有用。
前面有關(guān)于Linkedin的論點(diǎn)引起了我的注意。"股票價(jià)格可能看起來(lái)像維納過(guò)程。因此,我們可以使用蒙特卡羅模擬來(lái)預(yù)測(cè)股票價(jià)格。" 數(shù)據(jù)科學(xué)博客說(shuō)。那么,為了成為一個(gè)維納過(guò)程,我們必須假設(shè)股票價(jià)格是連續(xù)的。實(shí)際上,市場(chǎng)收盤(pán)了。隔夜波動(dòng)存在。但這不是最重要的問(wèn)題。最大的問(wèn)題是,我們真的可以使用蒙特卡羅模擬來(lái)預(yù)測(cè)股票價(jià)格,甚至是一個(gè)范圍或方向嗎?