本文來自天善智能大數(shù)據(jù)社區(qū) www.,夏爾康博客專欄,,想查看爾康更多博客的朋友前往https://ask./blog/xiaerkang,,也可直接戳“閱讀原文”。 前言 因為開始工作的問題,,自己寫東西時間不是很多,,不過因為上此寫的關(guān)于預(yù)測股市的一些價格總感覺缺點什么,感覺有些簡單和模板化,,這次就寫一個稍微有些不一樣的,,希望大家能喜歡 1.1問題描述和目標對數(shù)據(jù)挖掘而言股票市場交易是個具有巨大潛力的應(yīng)用領(lǐng)域;我們目標是盡可能的獲取利潤,;應(yīng)用數(shù)據(jù)挖掘技術(shù)得到結(jié)果給出信號,,然后據(jù)此作為決策的基礎(chǔ)來制定交易策略; 1.2數(shù)據(jù)說明我還是使用上篇博客的數(shù)據(jù)集作為我們這此研究的重點,,我們一樣使用西班牙著名企業(yè)迪亞天天的股市價格數(shù)據(jù)作為我們的模型數(shù)據(jù),;我們還是使用包quantmod的函數(shù)getSymbols獲取我們需要的數(shù)據(jù);我們獲取的數(shù)據(jù)中包含了下面幾個屬性;這里就不貼字段了,; ~交易日期 ~當天開盤價 ~當日最高價 ~當日最低價 ~當日收盤價 ~當日成交量 ~當日調(diào)整后的收盤價,; 1.3將數(shù)據(jù)加載到R中我們還是使用quantmod包中的getSymbols函數(shù)獲取數(shù)據(jù)并加載到R中,出現(xiàn)了下面的結(jié)果說明數(shù)據(jù)已經(jīng)成功加載到R中,; 1.4定義預(yù)測任務(wù)一般我們都是要預(yù)測股票價格的,,但是這里我們能否預(yù)測未來幾天的市場變化趨勢,如果這個預(yù)測是正確的該預(yù)測下達的交易指令將是獲利的,;我們認為價格變動超過P%,時值得交易,,所以我們需要預(yù)測的是在未來幾天價格總的變化,并不是預(yù)測某個特定時間的一個特定價格,;例如,,在t+k的收盤價的變化可能比P%低得多,但是在它前面日期t,..,t+k的價格變化可能遠遠大于P%,。因此我們要預(yù)測的是K天的總體價格趨勢 這么多個價格到底選用那個作為每天的價格呢,,我們這時候取 avg_price=(high+close+low)/3 其中C,H,L分別為第i天的收盤價,最高價和最低價,; 設(shè)V代表未來K天的平均價格相對今天收盤價的百分比變化,其中P是代表未來K天的平均價格,,C是收盤價,;
然后我們把動態(tài)變化絕對值超過目標收益的P%的變化進行累加作為一個指標變量;
指標變量T用來找出日平均價格明顯高于目標變化的那些的那些日期的變化之和,,越大的T值怎么說明了未來的幾天平均報價會高于收盤價的P%,,這種情況下我們可以有很多的選擇入市的機會,因為預(yù)期是看漲,;相反,,越大的負值T說明平均價格可能下降,我們可以進行賣出止損,;如果T值一直是在0附近進行波動,,則可能是價格正負的波動持平出現(xiàn); 下面一段代碼實現(xiàn)這個指標的只算,, 這個函數(shù)首先是先計算平均價格,,然后使用quantmod包中的HLC()從價格中提取價格的最高價,最低價和收盤價,,然后根據(jù)未來TIME天相對當前收盤價的收益,而函數(shù)Next()按時間平移一個時間序列,,Delt()函數(shù)可用于計算價格序列的百分比收益,;最后t_radio函數(shù)將絕對值較大的收益相加,我們默認設(shè)置為2% 我們畫出了關(guān)于價格的波動和平均價格的走勢,,價格波動處于一個平穩(wěn)的波動中,,不過為了大家能夠更好的了解這個指標的性質(zhì) 這里獲取了最后四個月的故事K線圖,這里橘色代表這一天中價格是下降(也就是開盤價低于收盤價),,綠色代表價格上漲,,使用candleChart()得到K線圖;從上結(jié)果上看,當一段時間價格的上下波動,,價格波動指標T_RADIO會呈現(xiàn)較為平穩(wěn),,當價格上漲的時候,t_radio值達到了最大,,因為計算未來的時間,,所以這里我們選用9天的價格,這里只是將未來觀測到的價格變化概括,; 1.5預(yù)測變量選擇前面已經(jīng)確定選用指標t_radio來總結(jié)未來時間的價格變化,,這時候我們不選擇常規(guī)的純時間序列模型去預(yù)測價格行為,而是構(gòu)建多個屬性指標當作描述指標近期動態(tài),,這時候我們就要借助包TTR包來幫我們構(gòu)建有關(guān)于反映價格時間序列特征的指標,; 我們從R添加包中選取具有代表性的技術(shù)指標集合: 平均真實范圍(ATR) 這個指標是衡量價格波動的指標; 隨機動量指數(shù)(SMI) 該指標是一個動量指標,; 威爾斯-維爾德定向運動指數(shù)(ADX) 定向運動指數(shù) Aroon指標 該指標是找出開始的趨勢 布林帶指標 它比較一段時間內(nèi)價格的波動 蔡金波動(CV)指標 計算最高價和最低價之間的價差,。以在最大和最小之間的振幅為基礎(chǔ)蔡金波動指標來斷定波動價值,; 收盤價位置價值(CLV) 該指標把收盤價和其交易范圍相聯(lián)系 簡易波動指標(EMV)測度股價的變化和成交量的變化引發(fā)的數(shù)值變動 MACD指標 市場大趨勢的一個測度指標 順勢指標(CCI) 這個是判斷股價偏離股市的衡量指標 資金流向指數(shù)(MFI)這個指標是測度市場需求關(guān)系和買賣力道 拋物線止損反轉(zhuǎn)(SAR) 這個也是用來分析市場趨勢變化的一個指標 波動性指標(VOLAT)顧名思義這個就是衡量波動的一個指標 在這實現(xiàn)這寫指標前我們先給數(shù)據(jù)列的命名,因為要和變量書寫一直 names(DIA) <> head(DIA) 列的名稱修改完畢這時候我們實現(xiàn)指標,,指標實現(xiàn)代碼如下,; 由于自變量過多,我們需要精簡,,接下來我們確定了預(yù)測變量是什么,,接下倆的任務(wù)就是應(yīng)用統(tǒng)計方法將變量確定,下面我們利用隨機森林的輸出變量的重要性來選擇變量,;它是通過計算每個變量移除后的隨機森林誤差的增加來估計變量的重要性,,我們將使用包randomForest 現(xiàn)在我們已經(jīng)構(gòu)造好了模型需要的公式,我們接下來就可以構(gòu)造隨機森林了,,通過隨機森林輸出模型的重要性進行選擇自變量,;這里我們選取截止到2009年末的數(shù)據(jù)夠造隨機森林模型,子樹我們選擇初始值500進行建模,,然后在通過畫圖找出通過函數(shù)varImPlot()繪制各個變量的得分,;然后通過設(shè)定得分的界限值;超過界限值的我就給予選取 通過以上圖可以得知,,模型在子樹約在120后誤差趨于穩(wěn)定,,所以我們就選取ntree=120進行建模 從結(jié)果上看,能解釋數(shù)據(jù)55%的方差,;感覺還可以吧,,不過我們并不是用這模型進行預(yù)測,知識用來進行變量的選擇 能解釋55%,,接下來我們輸出各個變量的得分分布圖
所以我們這里得到了5個,,所以我們得到結(jié)果,; 得到結(jié)果如下 這時候數(shù)據(jù)集已經(jīng)構(gòu)造好了,我們這時候只需要將數(shù)據(jù)分為一個是訓(xùn)練集,,一個是測試集, 從上結(jié)果看,,我們的數(shù)據(jù)集已經(jīng)成功分為兩部分了,as.formula這個函數(shù)是讓我們定義個公式給我們后面調(diào)用,; 1.6預(yù)測任務(wù)數(shù)據(jù)集我們已經(jīng)構(gòu)造好了,,這里我們嘗試將預(yù)測值轉(zhuǎn)換成交易的信號,這里我們認為 當T_RADIO>0.1的時候我們可以認為是賣出 當-0.1<><> 當T_RADIO>0.1的時候我們可以認為是買入的 因為我們認為至少高出一周5*0.02=0.1,,當然我們也可以選擇別的限定值,,如果太小的界限可能導(dǎo)致太小的市場變化時交易,這里我們使用DMwR包中的函數(shù)trading.signals()進行轉(zhuǎn)換 1.7信號模型評價規(guī)則一般來說正確率確實是一個很好很直觀的評價指標,,但是有時候正確率高并不能代表一個模型就好,。這里我們就只介紹三個評價信號的指標,。 現(xiàn)實 YES NO 預(yù)測 YES TP TN NO FN FN 精度(準確精度) 精度是精確性的度量,表示被分為正例的示例中實際為正例的比例,precision=TP/(TP+FP),; 召回率(回溯精度) 召回率是覆蓋面的度量,,度量有多個正例被分為正例recall=TP/(TP+FN) 還有將這兩個指標合成一個指標的F指標,我們稱之為F度量Fb=[(1+b2)*P*R]/(b2*P+R),其中P代表精度,,R代表召回率 1.8預(yù)測模型的選擇1.8.1神經(jīng)網(wǎng)絡(luò)首先神經(jīng)網(wǎng)絡(luò)對預(yù)測問題中的變量的尺度敏感,,在這種情況下,我們要考慮對數(shù)據(jù)進行標準化是很有意義的,, 得到結(jié)果 這個結(jié)果上看對買入精確度和回溯精度有較好的預(yù)測,,但是對賣出有較差的預(yù)測,這說明神經(jīng)網(wǎng)絡(luò)對我們來說預(yù)測性能不是特別好,,所以我們多多嘗試其他的模型 1.8.2支持向量機支持向量機一般也是用來處理預(yù)測和分類問題,,也是我們較為常用的模型之一 從上看這個結(jié)果也不是特別好,雖然賣出的回溯和精確度提高了,,但買入的相應(yīng)下降了 1.8.3隨機森林從結(jié)果上看,,模型的精確度大幅的提高,回溯精確度還是和其他模型沒什么區(qū)別,;這里就說到這里了 1.9總結(jié)文章的代碼可以直接COPY在R上運行,,所以大家可以一起敲下看看自己的結(jié)果如何;這個文章各個模型就沒怎么說明了,,都在我的博客有介紹,本來想詳細的說一下關(guān)于評價指標的知識的,,不過感覺和本文主要用的不太搭,,所以就沒怎么寫,望見諒,;本人菜鳥,,有錯誤還請大牛指教,謝謝 天善智能 www. 是一個專注于商業(yè)智能BI,、數(shù)據(jù)分析,、數(shù)據(jù)挖掘和大數(shù)據(jù)技術(shù)的垂直社區(qū)平臺(國內(nèi)唯一的數(shù)據(jù)類技術(shù)問答社區(qū)、博客,、在線學(xué)院),。 |
|
來自: andyandygo > 《待分類》