最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

量化交易軟件有哪些策略——用隨機(jī)森林預(yù)測趨勢

2023-07-26 16:36 作者:bili_45793681098  | 我要投稿

簡介

創(chuàng)建任何交易系統(tǒng)的目的都是為了能夠預(yù)測金融產(chǎn)品的市場行為,如一個貨幣對。預(yù)測的目標(biāo)可以是不同的。赫茲量化在此限定為預(yù)測貨幣的走勢,或者更準(zhǔn)確的說是預(yù)測貨幣報價的漲(多頭)跌(空頭)。

要預(yù)測貨幣價格走勢,交易者通常在圖標(biāo)上附加一些指標(biāo),以期找到一種可用于預(yù)測的模式。

本文探討使用R統(tǒng)計(jì)分析系統(tǒng)中的Rattle包,來自動選取相關(guān)模式進(jìn)行價格行為預(yù)測。


1. 關(guān)于Rattle

赫茲量化使用R這一理想的金融市場預(yù)測工具,來對貨幣對價格行為進(jìn)行預(yù)測。話說,R主要是一種給有經(jīng)驗(yàn)的統(tǒng)計(jì)人員使用的編程語言,對許多交易者來說較難掌握。R語言的復(fù)雜性在于,用于預(yù)測的工具非常多并且分散在許多R的基本功能工具包中。

Rattle(簡單易學(xué)的R語言分析工具)集成了一系列R語言包,對于交易系統(tǒng)開發(fā)者來說非常重要,但初學(xué)者用起來并不容易。你不必了解掌握R語言就能開始使用Rattle包。對Rattle報的使用將用R語言來編寫,將可以被用于開發(fā)真實(shí)的交易系統(tǒng)。然而,在這個階段就需要對R語言有所了解。

任何情況下,在交易系統(tǒng)設(shè)計(jì)的階段,Rattle是不可替代的工具。它能夠讓新手快速的看到各種策略想法的結(jié)果并且使用之。

Rattle (Williams, 2009) 是一個開源的軟件包,它是R的一部分(R開發(fā)小組,2011)。因?yàn)樗敲赓M(fèi)軟件,Rattle的R語言源代碼沒有使用限制。Rattle源代碼用C語言編寫,鼓勵用戶學(xué)習(xí)、測試及擴(kuò)展代碼。


2. 源數(shù)據(jù)描述

本文的計(jì)算結(jié)果都是基于EURUSD, GBPUSD, USDCHF, USDJPY, EURGBP, USDCAD這六個貨幣對在H1時間框架下從 10.01.2011 到 24.12.2013 的收盤價。這組數(shù)據(jù)有超過18000個K線組成,因此計(jì)算結(jié)果是可靠的?;谏厦尕泿艑Φ臄?shù)據(jù)集用于搜尋預(yù)測多空的模式。

原始報價數(shù)據(jù)集在文件kot60_110101_131231_UA.txt中。


2.1. 創(chuàng)建目標(biāo)變量

首先赫茲量化要準(zhǔn)確的確定我們要預(yù)測的對象。雖然看上去很簡單,但是選擇正確的預(yù)測目標(biāo)以及用于預(yù)測的數(shù)據(jù)集合是非常關(guān)鍵的。

預(yù)測趨勢的目的是基于進(jìn)行趨勢交易的期望。

根據(jù)“趨勢”的定義,所謂上升趨勢就是后續(xù)的價格比前面K線的價格高,反之則為下降趨勢。因此,有必要根據(jù)趨勢的定義來進(jìn)行貨幣對的價格預(yù)測。如果EURUSD的初始價格是1.3500,預(yù)測價格是1.3550,那么這是上升趨勢則立即買入。

而然,訂單為“買”和“賣”,預(yù)測是針對價格水平的。例如,價格水平在交易系統(tǒng)中用于預(yù)測突破。為了實(shí)現(xiàn)趨勢交易的想法,需進(jìn)行一次額外的價格對比。顯然,赫茲量化預(yù)測的東西和想要做的交易不是一回事。

然而,如果交易系統(tǒng)被設(shè)計(jì)為趨勢跟隨,那么模型就用于預(yù)測趨勢。模型必須經(jīng)過訓(xùn)練來識別趨勢,目標(biāo)變量只有兩個值“買”和“賣”。在代碼中目標(biāo)變量為“1”和“-1”。

使用源數(shù)據(jù)集計(jì)算金融標(biāo)的價格的模型和將源數(shù)據(jù)集進(jìn)行分類的模型之間有根本的區(qū)別。第一種類型屬于回歸模型,第二種屬于聚類模型。

回歸類型的預(yù)測模型用于計(jì)算一些未來的值。當(dāng)未來來到時,赫茲量化將預(yù)測值和實(shí)際值進(jìn)行對比。

聚類類型的預(yù)測模型用于計(jì)算預(yù)測時一組接收到的源數(shù)據(jù)將被歸于哪個類別。就是“多”和“空”兩種類型。如其他聚類類型一樣,這兩個類型沒有任何特定的值。因此,“多”類型無法和“空”類型進(jìn)行對比。雖然為了簡化起見我們將“多”編碼成“1”,“空”編碼成“0”,但這并不是說“多”比“空”大。為了強(qiáng)調(diào)這點(diǎn),對于這種定性的變量,R和Rattle中定義了一種特定的分類變量。

多和空作為目標(biāo)變量并不存在,這就是和下面描述的獨(dú)立變量之間的主要區(qū)別。這和我們將要預(yù)測當(dāng)下并不存在的將來事件相吻合。我們很容易基于歷史數(shù)據(jù)繪制趨勢,因?yàn)槲覀円阎缹砗瓦^去的關(guān)系。

在歷史數(shù)據(jù)中標(biāo)識趨勢,赫茲量化用ZigZag指標(biāo)。對于歷史數(shù)據(jù)來說這是一個很好的指標(biāo),但對于實(shí)時數(shù)據(jù)就沒有用了,因?yàn)榻?jīng)常會對前一個極點(diǎn)進(jìn)行重繪。歷史數(shù)據(jù)是靜態(tài)的,因此我們能用這個指標(biāo)畫出非常漂亮的趨勢線。

參數(shù)“反轉(zhuǎn)點(diǎn)之間的間距”為0.0035的ZigZag指標(biāo)用于計(jì)算目標(biāo)變量。圖. 1 為結(jié)果。


編輯切換為居中

圖 1. ZigZag指標(biāo)

現(xiàn)在指標(biāo)值被轉(zhuǎn)化為“多” = 1 和 “空” = 0。

結(jié)果顯示在圖2上。


編輯切換為居中


圖 2. 分類形式的ZigZag指標(biāo)

讓我們對目標(biāo)值做最后的操作。如果我們將ZigZag指標(biāo)左移,則當(dāng)前K線將對應(yīng)ZigZag指標(biāo)的未來值。本文中平移1根K線,相當(dāng)于用一小時前的數(shù)據(jù)來預(yù)測。

可以平移更多的K線,相應(yīng)于預(yù)測更多的K線。本方法有別于其他預(yù)測方法,在累積預(yù)測誤差下,前一個值可用于預(yù)測多個未來值。

本文中提出的模型及一般分類模型不累積誤差。在分類模型中,提前預(yù)測2根K線有它自身的預(yù)測誤差,和任何提前預(yù)測1根k線的方法都沒有關(guān)系。


2.2. 創(chuàng)建獨(dú)立變量

因?yàn)樗鼈儊碜杂谕獠磕P?,因此稱作獨(dú)立變量或者預(yù)測器。他們是外部的可測變量或者基于外部變量計(jì)算的變量。任何經(jīng)濟(jì)和金融數(shù)據(jù)包括貨幣匯率都是獨(dú)立變量,因?yàn)樗鼈兊闹凳鞘袌鲂袨榈慕Y(jié)果。技術(shù)指標(biāo)的值也是這類變量,因?yàn)樗鼈兪腔趫髢r計(jì)算的。

獨(dú)立變量的選擇和目標(biāo)變量的選擇一樣重要。事實(shí)上,模型的成功與否取決于獨(dú)立變量的選擇。模型開發(fā)的絕大多數(shù)時間都是用在分析和選擇獨(dú)立參數(shù)組上。

源文件kot60_110101_131231_UA中的變量包含六種貨幣的報價、時間和日期,能用于預(yù)測。

從本方法的角度看,時間和日期信息更為有用。時間和日期一直被嘗試用于交易系統(tǒng)的設(shè)計(jì)中。在我們的模型中,一些基于時間和星期的隱藏的貨幣報價信息能夠被分類模型自動識別出來。這里唯一需要做的就是將這兩個變量轉(zhuǎn)換成類型形式。時間變換為24個分類,日期變換為5個分類變量對應(yīng)一周中的星期幾。

除了用于預(yù)測的原始因子,赫茲量化還將創(chuàng)造在我看來能夠揭示源報價中存在的趨勢的額外預(yù)測因子。我們將使用眾所周知的指標(biāo)來創(chuàng)建額外預(yù)測因子。

下面的指標(biāo)將被引用:5,10 和 15; MACD(12,26,9),周期為 14,21,28 的RSI指標(biāo)。在它們之上,我們將使用報價的增量和移動平均。所有這些轉(zhuǎn)換都將被應(yīng)用于六個貨幣對的報價。

ZigZag指標(biāo)將被包含在獨(dú)立變量中,用于輔助目的。它不會用于模型的開發(fā),因?yàn)閷?yīng)右側(cè)遠(yuǎn)方K線的指標(biāo)值是未知的。

因此,赫茲量化得到88個獨(dú)立變量,一個目標(biāo)變量和一個輔助變量(ZigZag)。每一個變量的數(shù)據(jù)量為18083跟K線。

此數(shù)據(jù)集為R工作空間格式,能夠在本文的附件TC.RData中找到。這個數(shù)據(jù)集能夠通過如下方式使用:

  • 加載R;

  • 加載Rattle庫;

  • 進(jìn)入標(biāo)簽頁File/Workspace;

  • 在磁盤中找到TC.RData文件并加載。


3. 智能分析源數(shù)據(jù)

Rattle包提供一系列預(yù)處理工具,或智能數(shù)據(jù)處理 - 數(shù)據(jù)挖掘。

3.1. 輸入?yún)?shù)預(yù)覽

執(zhí)行上述命令后,讓我們看看接下來能夠干什么。

結(jié)果見圖 3。


編輯切換為居中

圖 3. Rattle首頁

我們從Data頁切換到Log頁,在Rattle中開發(fā)模型。

Rattle的首頁是Data。由命名不難看出此頁加載數(shù)據(jù),用于后續(xù)操作。

赫茲量化對Spreadsheets和R Dataset兩個按鈕尤其感興趣。

Spreadsheets按鈕可用于上傳Excel文件。如果讀者想測試他們的想法,可以用他們自己的Excel文件在Rattle中做測試。

要重現(xiàn)本文所述或者使用本文附件原始數(shù)據(jù)執(zhí)行一些額外任務(wù),請使用R Dataset按鈕。此按鈕將文件以R格式加載。文件叫做"Working Directory" 或 "Work file"。它們的后綴名為.RData。文件能夠上傳到R,并點(diǎn)擊此按鈕后變?yōu)榭捎谩?/p>

上傳我們準(zhǔn)備好的文件,得圖4上半部分以及圖5的下半部分。


編輯切換為居中

圖 4. 源文件的上半部分



編輯切換為居中

圖. 5. 源文件下半部分



3.2. 帶獨(dú)立變量的目標(biāo)變量相關(guān)性

注意?!癛un”按鈕起關(guān)鍵作用。所有的操作都準(zhǔn)備好了但并未執(zhí)行。要執(zhí)行任請按“Run”按鈕。要重復(fù)執(zhí)行本文中的操作,每次都要按下此按鈕。

圖4顯示了變量列表,他們的特性及這些變量的用途。因?yàn)槲覀儾幌朐谀P椭惺褂肸igZag指標(biāo),我們就將其設(shè)置為Ignore。

其他變量都被用作存儲輸入?yún)?shù),除了最后一個,用作目標(biāo)變量。

“Partition”按鈕在證實(shí)模型結(jié)果的授信水平上發(fā)揮重要作用。數(shù)據(jù)集在需要的時候可以用這個按鈕分割為三個部分。用于訓(xùn)練、驗(yàn)證和測試模型的數(shù)據(jù)集的比例在此階段確認(rèn)。

在下一階段,確定生成偽隨機(jī)數(shù)的種子。例如,從源數(shù)據(jù)集中隨機(jī)選擇70%的源數(shù)據(jù)用作訓(xùn)練數(shù)據(jù)集。另外兩個15%(如我們的情況)也是隨機(jī)的K線序列。

因此,改變源數(shù)據(jù)集的生成種子,就能夠獲取無限多的訓(xùn)練和其他數(shù)據(jù)集。


編輯切換為居中

圖. 6. 變量的相關(guān)性

在接收到的表中找到名稱為ZZ.35的列。下表樣例取自此列。

變量

ZZ.35

RSI_cad.14

-0.0104122177

JPY.dif2

-0.0088412685

EUR.dif3

-0.0052379279

CHF.dif3

-0.0049692265

GBP.dif3

-0.0047409208

GBP.dif1

0.0044691430

MA_cad.15.dif1

-0.0039004722

JPY.dif1

-0.0023831247

GBP.dif2

-0.0015356091

EUR.dif2

-0.0013759749

CHF.dif2

-0.0012447101

EUR.dif1

0.0005863149

MA_cad.10.dif1

0.0023981433

CHF.dif1

0.0024543973

MA_gbp.5.dif1

0.0043757197

MA_cad.5.dif1

0.0075424397

MA_gbp.10.dif1

0.0094964069

EURGBP.dif1

0.0095990416

CAD.dif1

0.0110571043

表1 變量相關(guān)性



如我們所見,有很多變量同ZZ.35的相關(guān)性小于0.01. 小于0.1的相關(guān)性無法得出獨(dú)立變量對于目標(biāo)變量產(chǎn)生影響的結(jié)論。

在這一階段我們要注意這個事實(shí),用它來對模型進(jìn)行恰當(dāng)?shù)脑u估。

在分類模型中,預(yù)測因子對于目標(biāo)變量的影響程度起到關(guān)鍵作用。在相關(guān)性低的水平,預(yù)測因子被認(rèn)為是模型中的噪聲,需要重新訓(xùn)練。當(dāng)模型考慮細(xì)節(jié)和預(yù)測因子對于目標(biāo)變量的非顯著性時,就需要重新訓(xùn)練。

不存在建議的相關(guān)性水平。通常使用統(tǒng)計(jì)數(shù)字 – 5%。實(shí)際上是不正確的。移除模型中被認(rèn)為是噪聲的預(yù)測因子,可以減小預(yù)測誤差。移除模型中的非噪聲因子,會導(dǎo)致預(yù)測誤差的增加。因此,模型的預(yù)測因子列表需通過實(shí)驗(yàn)來確立。


3.3. 尺度

某些模型,如支持向量機(jī)(SVM),對預(yù)測因子的跨度非常敏感,如下說明。例如,貨幣對EURUSD的數(shù)據(jù)在0.5內(nèi)變動,而USDJPY的數(shù)據(jù)在數(shù)十單位內(nèi)變動。要去排除測因子不同尺度的影響,需要將他們在Transform頁中歸一化到同一尺度下。最好將預(yù)測因子的波動都限定在0-1之間。

要進(jìn)行尺度縮放,選擇Transform/Rescale/Scale [0-1]。之后我們勾選左右變量并按下“Run”按鈕。


3.4. 轉(zhuǎn)換成分類形式

轉(zhuǎn)換成分類形式就是說將數(shù)字化的變量值轉(zhuǎn)換成一些分類因子。RSI指標(biāo)是第一個被轉(zhuǎn)換為多級因子的指標(biāo)。當(dāng)其值接近0或者100時被認(rèn)為趨勢即將反轉(zhuǎn)。

要將RSI指標(biāo)值變換為分類形式,選擇:Transform/Recode/KMeans。之后,將因子等級設(shè)為8. 勾選所有RSI指標(biāo)并按 "Run"。

當(dāng)設(shè)置ZZ.35變量為Ignore后,我們進(jìn)入開發(fā)模型階段。


4. 分類模型的一般算法

下面的模型在Rattle中:

  • 樹狀分類模型(樹);

  • 隨機(jī)森林模型(森林);

  • 促進(jìn)樹模型(ADA);

  • 支持向量機(jī)模型(SVM);

  • 一般線性模型(glm);

  • 神經(jīng)網(wǎng)絡(luò)模型(NNET)。


除了分類模型的基本區(qū)別之外,(我們不僅僅討論Rattle中提供的)他們都有下述特點(diǎn)。

讓我們選擇一個含字符串的訓(xùn)練序列(共18030個),包含預(yù)測因子(88個)以及目標(biāo)變量值("long"和"short")。

任何的分類算法都是為了解決一個問題,即從對應(yīng)于“多”的預(yù)測因子組合值中將對應(yīng)于“空”的預(yù)測因子組合值分離出來。這就是模型的訓(xùn)練階段。

緊隨其后的就是模型的驗(yàn)證。

由于我們將源數(shù)據(jù)集分成三部分,我們使用另一個數(shù)據(jù)集并考慮將預(yù)測因子的組合同在訓(xùn)練階段的數(shù)據(jù)進(jìn)行比較。如果可歸類于“多”或“空”,則任何預(yù)測因子的組合都會被建立。于驗(yàn)證數(shù)據(jù)集包含那些已知的值,其結(jié)果與實(shí)際數(shù)據(jù)進(jìn)行比較。實(shí)際的多空頭寸和預(yù)測值之間的比就是預(yù)測誤差。

如果結(jié)果不滿足我們的要求,就返回到智能數(shù)據(jù)分析階段來改進(jìn)結(jié)果。不幸的是,這一階段的預(yù)測質(zhì)量完全取決于交易者的經(jīng)驗(yàn)。對源數(shù)據(jù)集進(jìn)行改變,然后再重新開發(fā)模型。

如果從訓(xùn)練和驗(yàn)證數(shù)據(jù)集上獲得的結(jié)果令人滿意,那么我們到測試數(shù)據(jù)集上驗(yàn)證模型,測試數(shù)據(jù)集是還沒有使用過的。

高質(zhì)量的模型不僅預(yù)測誤差要小,不同數(shù)據(jù)集在此誤差下的預(yù)測值的差異也要小。這說明該模型的魯棒性及無需重新訓(xùn)練或者如交易者所稱的超調(diào)。

本文將僅詳細(xì)探討一個隨機(jī)森林模型。


量化交易軟件有哪些策略——用隨機(jī)森林預(yù)測趨勢的評論 (共 條)

分享到微博請遵守國家法律
孝感市| 杂多县| 万载县| 富平县| 三原县| 常德市| 维西| 绩溪县| 简阳市| 云霄县| 敦化市| 长顺县| 大兴区| 余姚市| 湛江市| 正宁县| 讷河市| 内江市| 宣武区| 赣州市| 雷波县| 襄汾县| 龙胜| 嵊州市| 宣汉县| 尼玛县| 勃利县| 阳西县| 古浪县| 五台县| 浦东新区| 高要市| 宁陕县| 准格尔旗| 许昌市| 夹江县| 河池市| 年辖:市辖区| 雅安市| 五家渠市| 枣强县|