回測

matlab 2010 上的機器學習

  • December 28, 2013

我正在嘗試開發一種交易模型。它使用某些技術和基本特徵,並且模型從過去學習。我有一個 3 級輸出 - 看漲、中性和看跌。

在嘗試神經網路時,我得到了大約 85% 的訓練準確率、75% 的交叉驗證準確率和 75% 的測試準確率,其中 CV 集和測試集都是從完整的集合中分割出來的。我正在使用 nprtool 在 matlab 2010 上執行此操作。該軟體對 CV 集和測試集進行了分割(各 20%,其餘 60% 用於訓練)。

訓練後,我使用相同的模型來測試不同的數據。在這裡,準確率下降到 34% 左右(我假設這只是 3 類的隨機分類)。我測試的新數據與用於訓練的數據非常相似。我也嘗試交換數據集,但結果是一樣的。我使用下面的命令來測試模型(同樣用於測試訓練數據的準確性,將 Xtest 替換為 Xtrain)。這裡 net 表示訓練好的模型。

output = sim(net, Xtest');

對於 NN,我在隱藏層中使用了 100,000 個樣本、250 個輸入特徵和 100 個節點。

我使用 libsvm(從 matlab 呼叫)嘗試了類似的事情。在這裡我也面臨同樣的問題。在訓練過程中,通過交叉驗證對參數進行優化,CV 準確率達到 73%。然而,當對新數據進行測試時,準確度下降到 35% 左右。

對於 SVM,我使用 20,000 個樣本和 250 個特徵進行了訓練。我使用下面的命令:

[outputTest, accuracyTest, prob] = svmpredict(Ytest,Xtest,model);

如果有人遇到類似問題並有補救措施,請提供幫助。

首先,查看 Jurik Research WAV 和 DDR 模組,了解在輸入 ANN 之前時間序列數據壓縮和去相關的一種特殊方法。從最近的研究來看,似乎在滯後 (2,5,10 bar) 數據上使用小波以及諸如偏度、峰度等指標和匯總統計數據也獲得了更好的結果。

你有太多的輸入,如果它們之間有任何關聯,你就會違背人工神經網路的目的。ANN 的一個基本規則是它們會浪費時間學習輸入特徵之間的相關性,因此如果將其移除並使用正交輸入(零相關性),結果可能會更好。

最後,跨市場分析也產生了比留在資產範圍內更好的結果。也就是說,開始將其他指數(滯後和非滯後)作為輸入。

不要為糟糕的結果而煩惱——我使用正規化數據獲得了類似的結果,4 個小波代表高點,4 個小波代表低點(以及各種滯後),用於 2 類問題(明天是增益(y>0)或 loss(y<0)) 結果很差。

引用自:https://quant.stackexchange.com/questions/9805