以下是 基因演算法 (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)、時間序列模型等機器學習或深度學習技術,這些技術常用於價格預測。