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

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

期貨量化交易軟件:采用棧式 RBM 的深度神經(jīng)網(wǎng)絡(luò)。

2023-08-11 14:49 作者:bili_45793681098  | 我要投稿

本文是有關(guān)深度神經(jīng)網(wǎng)絡(luò)和預(yù)測(cè)器選擇的前文之續(xù)篇。在此我們將涵蓋由棧式 RBM 初始化的深度神經(jīng)網(wǎng)絡(luò)特性, 以及它在 "darch" 軟件包里的實(shí)現(xiàn)。還將揭示使用隱藏的馬爾科夫模型來(lái)改進(jìn)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)性能的可能性??傊? 赫茲期貨量化將以程序化方式實(shí)現(xiàn)一個(gè)可操作的智能交易程序。

目錄

編輯切換為居中

  • 1. DBN 的結(jié)構(gòu)

  • 2. 數(shù)據(jù)的準(zhǔn)備及選擇

  • 2.1. 輸入變量

  • 2.2. 輸出變量

  • 2.3. 初始化數(shù)據(jù)幀

  • 2.3.1. 刪除高相關(guān)性變量

  • 2.4. 最重要變量的選擇

  • 3. 實(shí)驗(yàn)部分。

  • 3.1. 構(gòu)建模型

  • 3.1.1. "darch" 軟件包的簡(jiǎn)述

  • 3.1.2. 構(gòu)建 DBN 模型。參數(shù)。

  • 3.2. 訓(xùn)練和測(cè)試樣品的形成。

  • 3.2.1. 分級(jí)平衡和預(yù)處理。

  • 3.2.2. 目標(biāo)變量編碼

  • 3.3. 訓(xùn)練模型

  • 3.3.1. 預(yù)訓(xùn)練

  • 3.3.2. 微調(diào)

  • 3.4. 測(cè)試模型。標(biāo)尺。

  • 3.4.1. 預(yù)測(cè)解碼。

  • 3.4.2. 改善預(yù)測(cè)結(jié)果

  • 校驗(yàn)

  • 使用馬爾科夫鏈模型進(jìn)行平滑

  • 在理論性平衡曲線上校正預(yù)測(cè)信號(hào)

  • 3.4.3. 標(biāo)尺

  • 4. 智能交易程序的結(jié)構(gòu)

  • 4.1. 智能交易程序操作的描述

  • 4.2. 自控制。自訓(xùn)練

  • 安裝和啟動(dòng)

  • 改進(jìn)定性指標(biāo)的方式方法。

  • 結(jié)論

概論 在準(zhǔn)備進(jìn)行實(shí)驗(yàn)的數(shù)據(jù)時(shí), 赫茲期貨量化將使用來(lái)自 前文 中有關(guān)評(píng)估和選擇預(yù)測(cè)的變量。赫茲期貨量化將形成初始樣本, 清理它并選擇重要的變量。 我們將研究為了訓(xùn)練、測(cè)試和驗(yàn)證而劃分樣本的方法。 我們將使用 "darch" 軟件包構(gòu)建一個(gè) DBN 網(wǎng)絡(luò)模型, 并用我們的數(shù)據(jù)對(duì)它進(jìn)行訓(xùn)練。在模型之后測(cè)試, 我們將能獲得評(píng)估模型質(zhì)量的標(biāo)尺。我們將研究軟件包所提供的神經(jīng)網(wǎng)絡(luò)設(shè)置的多種配置機(jī)會(huì)。 另外, 我們會(huì)看到隱藏的馬爾科夫模型將如何幫助我們改進(jìn)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)。 我們將開(kāi)發(fā)一款智能交易系統(tǒng), 根據(jù)持續(xù)監(jiān)測(cè)的結(jié)果, 在不打斷交易的情況下對(duì)模型進(jìn)行定期訓(xùn)練。在 EA 中將使用來(lái)自 "darch" 軟件包的 DBN 模型。我們還將結(jié)合使用來(lái)自 前文 的 SAE DBN 構(gòu)建智能交易系統(tǒng)。 再有, 我們將指點(diǎn)改進(jìn)模型的定性指標(biāo)的方式i和方法。1. 由棧式 RBM (DN_SRBM) 初始化的深層神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)我記得 DN_SRBM 是由 n 個(gè)等于神經(jīng)網(wǎng)絡(luò)隱藏層數(shù)的 RBM 組成, 基本上是神經(jīng)網(wǎng)絡(luò)本身。訓(xùn)練包括兩個(gè)階段。 第一階段涉及預(yù)訓(xùn)練。每個(gè) RBM 無(wú)需監(jiān)督者即可依據(jù)輸入集合系統(tǒng)地訓(xùn)練 (無(wú)目標(biāo))。在隱藏層的權(quán)重之后, RBM 被轉(zhuǎn)移到相關(guān)的神經(jīng)網(wǎng)絡(luò)隱藏層。 第二階段涉及微調(diào), 在此神經(jīng)網(wǎng)絡(luò)由監(jiān)督者訓(xùn)練。前文中已提供了有關(guān)它的詳細(xì)信息, 所以我們?cè)诖瞬辉購(gòu)?fù)述。我將簡(jiǎn)單敘述, 不像我們前文用過(guò)的 "deepnet" 軟件包, "darch" 軟件包幫助我們實(shí)現(xiàn)更廣泛的機(jī)會(huì)來(lái)構(gòu)建并微調(diào)模型。更多詳細(xì)信息將在創(chuàng)建模型時(shí)提供。圖例. 1 顯示 DN_SRBM 的結(jié)構(gòu)和處理過(guò)程

編輯切換為居中

圖例. 1. DN SRBM 的結(jié)構(gòu) 2. 數(shù)據(jù)的準(zhǔn)備及選擇 2.1. 輸入變量 (征兆, 預(yù)測(cè)器) 在前文中, 我們研究過(guò)預(yù)測(cè)器的評(píng)估和選擇, 所以在此無(wú)需提供額外信息。我僅論及我們使用的 11 款指標(biāo) (所有的振蕩器: ADX, aroon, ATR, CCI, chaikinVolatility, CMO, MACD, RSI, stoch, SMI, volatility)。選擇了來(lái)自一些指標(biāo)的若干變量。這樣就形成了 17 個(gè)變量的輸入集。赫茲期貨量化從 EURUSD 里取最后 6000 根柱線的報(bào)價(jià), 2016 年 02 月 14 日 M30 時(shí)間幀, 并使用 In() 函數(shù)計(jì)算指標(biāo)值。 #---2--------------------------------------------- In <- function(p = 16){ ? require(TTR) ? require(dplyr) ? require(magrittr) ? adx <- ADX(price, n = p) %>% as.data.frame %>% ? ? ?mutate(.,oscDX = DIp - DIn) %>% ? ? ?transmute(.,DX, ADX, oscDX) %>% ? ? ?as.matrix() ? ar <- aroon(price[ ,c('High', 'Low')], n = p) %>% ? ? ?extract(,3) ? atr <- ATR(price, n = p, maType = "EMA") %>% ? ? extract(,1:2) ? cci <- CCI(price[ ,2:4], n = p) ? chv <- chaikinVolatility(price[ ,2:4], n = p) ? cmo <- CMO(price[ ,'Med'], n = p) ? macd <- MACD(price[ ,'Med'], 12, 26, 9) %>% ? ? ?as.data.frame() %>% ? ? ?mutate(., vsig = signal %>% ? ? ? ? ? ? ? diff %>% c(NA,.) %>% multiply_by(10)) %>% ? ? ?transmute(., sign = signal, vsig) %>% ? ? ?as.matrix() ? rsi <- RSI(price[ ,'Med'], n = p) ? stoh <- stoch(price[ ,2:4], nFastK = p, ? ? ? ? ? ? ? ? ?nFastD =3, nSlowD = 3, ? ? ? ? ? ? ? ? ?maType = "EMA") %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? as.data.frame() %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mutate(., oscK = fastK - fastD) %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? transmute(.,slowD, oscK) %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?as.matrix() ? smi <- SMI(price[ ,2:4],n = p, nFast = 2, ? ? ? ? ? ? ? nSlow = 25, nSig = 9) ? kst <- KST(price[ ,4])%>% as.data.frame() %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mutate(., oscKST = kst - signal) %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select(.,oscKST) %>% as.matrix() ? In <- cbind(adx, ar, atr, cci, chv, cmo, macd, ? ? ? ? ? ? ? ?rsi, stoh, smi, kst) ? return(In) } 我們將在輸出上獲得輸入數(shù)據(jù)矩陣。 2.2輸出數(shù)據(jù) (目標(biāo)白能量) 我們采用取自 ZZ 的信號(hào)作為目標(biāo)變量。函數(shù)計(jì)算之字折線信號(hào): #----3------------------------------------------------ ZZ <- function(pr = price, ch = ch , mode="m") { ? require(TTR) ? require(magrittr) ? if (ch > 1) ch <- ch/(10 ^ (Dig - 1)) ? if (mode == "m") {pr <- pr[ ,'Med']} ? if (mode == "hl") {pr <- pr[ ,c("High", "Low")]} ? if (mode == "cl") {pr <- pr[ ,c("Close")]} ? zz <- ZigZag(pr, change = ch, percent = F, ? ? ? ? ? ? ? ? retrace = F, lastExtreme = T) ? n <- 1:length(zz) ? dz <- zz %>% diff %>% c(., NA) ? sig <- sign(dz) ? for (i in n) { if (is.na(zz[i])) zz[i] = zz[i - 1]} ? return(cbind(zz, sig)) } 函數(shù)參數(shù): pr = 價(jià)格 – OHLCMed 報(bào)價(jià)的矩陣; ch – 之字折線彎曲的最小長(zhǎng)度點(diǎn)數(shù) (4 位) 或是實(shí)際項(xiàng) (例如, ch = 0.0035); mode – 應(yīng)用的價(jià)格 ("m" - 中間價(jià), "hl" - 最高價(jià)和最低價(jià), "cl" - 收盤價(jià)), 省缺使用中間價(jià)。 函數(shù)返回兩個(gè)變量的矩陣 — 事實(shí)上, 之字折線和信號(hào), 是在之字折線角度范圍 [-1;1] 的基礎(chǔ)上取得的。我們將信號(hào)向左平移一根柱線 (朝向未來(lái))。這個(gè)特定的信號(hào)將用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)。 我們計(jì)算信號(hào)時(shí) ZZ 彎曲長(zhǎng)度至少 37 點(diǎn) (4 位)。 > out <- ZZ(ch = 37, mode = "m") Loading required package: TTR Loading required package: magrittr > table(out[ ,2]) ? ?-1 1 2828 3162 如我們所見(jiàn), 分級(jí)略有失衡。當(dāng)形成用于訓(xùn)練模型的樣本時(shí), 我們將采取必要的措施來(lái)令它們平衡。 2.3. 初始化數(shù)據(jù)幀 我們來(lái)編寫創(chuàng)建初始數(shù)據(jù)幀的函數(shù), 清理不確定的數(shù)據(jù) (空) 并轉(zhuǎn)換目標(biāo)變量至兩個(gè)分級(jí)的因子 "-1" 和 "+1"。函數(shù)組合之前編寫的函數(shù) In() 和 ZZ()。我們將立即裁剪最后 500 根柱線, 用于評(píng)估模型預(yù)測(cè)質(zhì)量。 #-----4--------------------------------- form.data <- function(n = 16, z = 37, len = 500){ ? require(magrittr) ? x <- In(p = n) ? out <- ZZ(ch = z, mode = "m") ? data <- cbind(x, y = out[ ,2]) %>% ? ? ?as.data.frame %>% head(., (nrow(x)-len))%>% ? ? ? ? na.omit ? data$y <- as.factor(data$y) ? return(data) } 2.3.1. 刪除高相關(guān)性變量 我們將從初始集合里面刪除相關(guān)性系數(shù)高于 0.9 的變量。我們將編寫形成初始數(shù)據(jù)幀的函數(shù), 刪除高相關(guān)性變量并返回清理后數(shù)據(jù)。 我們可以預(yù)先檢查哪一個(gè)變量的相關(guān)性系數(shù)高于 0.9。 > data <- form.data(n = 16, z = 37) # 準(zhǔn)備數(shù)據(jù)幀 > descCor <- cor(data[ ,-ncol(data)])# 刪除目標(biāo)變量 > summary(descCor[upper.tri(descCor)]) ? ?Min. 1st Qu. ?Median ? ?Mean 3rd Qu. ? ?Max. ?-0.1887 0.0532 0.2077 0.3040 0.5716 0.9588 ?> highCor <- caret::findCorrelation(descCor, cutoff = 0.9) > highCor [1] 12 9 15 > colnames(data[ ,highCor]) [1] "rsi" "cmo" "SMI" 因此, 以上列出的變量可以刪除。我們將從數(shù)據(jù)幀里刪除它們。 > data.f <- data[ ,-highCor] > colnames(data.f) ?[1] "DX" "ADX" "oscDX" "ar" "tr" ? ? ?[6] "atr" "cci" "chv" "sign" "vsig" ? [11] "slowD" "oscK" "signal" "vol" "Class" 我們可在一個(gè)函數(shù)里緊湊地編寫它: #---5----------------------------------------------- cleaning <- function(n = 16, z = 37, cut = 0.9){ ? data <- form.data(n, z) ? descCor <- cor(data[ ,-ncol(data)]) ? highCor <- caret::findCorrelation(descCor, cutoff = cut) ? data.f <- data[ ,-highCor] ? return(data.f) } > data.f <- cleaning() 并非所有軟件包的作者和研究人員都同意將高相關(guān)性的數(shù)據(jù)從集合中刪除。不過(guò), 兩種使用結(jié)果會(huì)在此進(jìn)行比較。在我們的情況中, 我們選擇的選項(xiàng)是刪除。 2.4. 最重要變量的選擇 重要變量的選擇基于三個(gè)指標(biāo): 按照分級(jí)的全局重要性, 局部重要性 (結(jié)合) 和部分重要性。我們要把握前文詳述的 "randomUniformForest" 軟件包的機(jī)會(huì)。為了緊湊性, 所有之前和之后的動(dòng)作均在一個(gè)函數(shù)收集。一旦執(zhí)行, 赫茲期貨量化將獲取三個(gè)集合作為結(jié)果:

  • 具有最佳貢獻(xiàn)和交互的變量;

  • 對(duì)于分級(jí) "-1" 的最佳變量;

  • 對(duì)于分級(jí) "+1" 的最佳變量。

#-----6------------------------------------------------ prepareBest <- function(n, z, cut, method){ ? require(randomUniformForest) ? ?require(magrittr) ? data.f <<- cleaning(n = n, z = z, cut = cut) ? idx <- rminer::holdout(y = data.f$Class) ? prep <- caret::preProcess(x = data.f[idx$tr, -ncol(data.f)], method = method) ? x.train <- predict(prep, data.f[idx$tr, -ncol(data.f)]) ? x.test <- predict(prep, data.f[idx$ts, -ncol(data.f)]) ? y.train <- data.f[idx$tr, ncol(data.f)] ? y.test <- data.f[idx$ts, ncol(data.f)] #--------- ? ruf <- randomUniformForest( X = x.train, Y = y.train, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xtest = x.test, ytest = y.test, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mtry = 1, ntree = 300, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? threads = 2, nodesize = 1 ? ? ? ? ? ? ? ? ? ? ? ?) ? imp.ruf <- importance(ruf, Xtest = x.test) ? best <- imp.ruf$localVariableImportance$classVariableImportance %>% ? ? ? ? ? ? ? ? ? ?head(., 10) %>% rownames() #-----部分重要 ? best.sell <- partialImportance(X = x.test, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?imp.ruf, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?whichClass = "-1", ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nLocalFeatures = 7) %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?row.names() %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?as.numeric() %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?colnames(x.test)[.] ? best.buy <- partialImportance(X = x.test, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?imp.ruf, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?whichClass = "1", ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nLocalFeatures = 7) %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?row.names() %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?as.numeric() %>% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?colnames(x.test)[.] ? dt <- list(best = best, buy = best.buy, sell = best.sell) ? return(dt) }


期貨量化交易軟件:采用棧式 RBM 的深度神經(jīng)網(wǎng)絡(luò)。的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
巴塘县| 沈阳市| 大邑县| 龙海市| 德庆县| 扬州市| 大邑县| 兴安盟| 莒南县| 河南省| 新建县| 南宁市| 霞浦县| 枝江市| 甘泉县| 洪湖市| 东乌珠穆沁旗| 馆陶县| 金山区| 昌乐县| 修武县| 辽源市| 阿拉善盟| 锡林郭勒盟| 蕉岭县| 友谊县| 扶余县| 柳林县| 屏东市| 耒阳市| 廊坊市| 墨竹工卡县| 锡林郭勒盟| 婺源县| 五原县| 聂拉木县| 子长县| 鄂尔多斯市| 五家渠市| 闵行区| 香河县|