股市 : 利用基因演算法(Genetic Algorithm, GA)優化網格交易(Grid Trading)策略的參數設定

 以下是 基因演算法 (GA) 中涉及的主要參數及其可調整的範圍與影響解釋。為了更直觀地理解,我將其整理成表格形式:




如何調整參數

1.網格數量與大小 (attr_int, attr_float)

建議測試

小範圍波動(如穩定市場):減小 delta(如 0.12),增加 nu, nl(如 1050)。

大範圍波動(如高波動市場):增加 delta(如 520),減少 nu, nl(如 310)。

可能影響

高頻交易:網格細小、數量多,但可能導致更高交易成本。

低頻交易:網格大,數量少,可能捕捉不到價格的小幅波動。

2.突變範圍與概率 (mutate, indpb)

建議測試

增大突變範圍(如 [3, 3, 1][20, 20, 10]),增加隨機性。

減少突變概率(如 0.05),避免過多的隨機性破壞潛在的優解。

3.選擇方法 (select)

selRoulette(輪盤選擇):適合擴展多樣性,但可能過早收斂。

selBest(精英選擇):保留最優個體,適合精細優化。

4. 族群大小與代數 (n, ngen)

小規模測試:族群 50100,代數 1020,快速驗證策略。

大規模測試:族群 5001000,代數 50100,適合大數據與高精度需求。


示例代碼


假設希望測試更廣的參數範圍:


```

toolbox.register("attr_int", np.random.randint, 5, 50)  # 測試更多網格數量

toolbox.register("attr_float", np.random.uniform, 0.1, 10)  # 測試更小的網格大小

toolbox.register("mutate", tools.mutUniformInt, low=[5, 5, 1], up=[50, 50, 10], indpb=0.2)  # 增大突變範圍

population = toolbox.population(n=500)  # 增加族群大小

algorithms.eaSimple(population, toolbox, cxpb=0.6, mutpb=0.3, ngen=50, stats=None, halloffame=None, verbose=True)

```


總結

調整參數時,需根據市場條件和計算資源平衡探索範圍和收斂速度。

優先調整網格大小 (delta)、網格數量 (nu, nl),其次調整突變概率 (indpb) 和演化代數 (ngen)。

可以從小規模測試開始,逐步增加族群大小與代數,以觀察不同參數對策略的影響。



---

目前程式的核心功能

1. 回測歷史數據

利用基因演算法(GA)優化網格交易策略的參數(如網格大小和數量)。

對歷史數據進行回測,計算策略在不同參數下的績效指標(例如利潤因子,PF)。

目的是找到最適合歷史數據的策略參數組合。

2. 基因演算法的應用

GA 用於探索參數空間,找出對訓練數據最優的網格配置。

在驗證集上進一步測試優化後的策略,檢驗其泛化能力。

3. 績效指標

利用回測數據計算 利潤因子 (PF),作為衡量策略有效性的關鍵指標。


目前程式的限制

1. 沒有價格預測功能

該程式只根據過去的價格波動進行回測,無法預測未來的價格走勢。

網格交易策略的本質是基於價格波動設計交易計劃,而非預測未來價格。

2. 對市場條件的依賴

如果未來的市場條件與回測數據有很大差異,策略可能無法盈利。

3. 缺乏機器學習的預測能力

這段程式沒有用到長短期記憶網絡(LSTM)、時間序列模型等機器學習或深度學習技術,這些技術常用於價格預測。


張貼留言 (0)
較新的 較舊