"Use when working with the strategy evolution loop, model performance feedback, or dynamic agent adjustment. Triggers: evolution cycle, agent performance evaluation, mutation brief, weakest agent selection."
Install
npx skillscat add kaecer68/atlas-go/atlas-strategy-evolution Install via the SkillsCat registry.
版本: 1.0
日期: 2026-04-23
職責: 投資模型的動態調整、績效回饋與持續進化
核心哲學
「沒有永遠有效的投資模型,只有持續進化的策略系統」
投資模型生態系
現有模型
| 模型ID | 名稱 | 適用情境 | 權重範圍 |
|---|---|---|---|
ai_supercycle_model |
AI超級週期模型 | 結構性科技趨勢強勁 | 0.1 - 0.6 |
hawkish_fed_model |
鷹派Fed模型 | 高利率+緊縮環境 | 0.1 - 0.5 |
geopolitical_hedge_model |
地緣政治避險模型 | 戰爭/地緣風險升溫 | 0.1 - 0.6 |
semiconductor_cycle_model |
半導體週期模型 | 半導體庫存週期 | 0.1 - 0.4 |
seasonal_model |
季節性輪動模型 | 春節/除權息等季節效應 | 0.0 - 0.3 |
模型權重動態調整
func EvolveModelWeights(macro MacroRiskAssessment, trends []StructuralTrend) {
switch macro.Level {
case Green:
weights["ai_supercycle_model"] = 0.6
weights["hawkish_fed_model"] = 0.2
weights["geopolitical_hedge_model"] = 0.2
case Yellow:
if trends["AI"].Strength > 70 {
weights["ai_supercycle_model"] = 0.5
weights["hawkish_fed_model"] = 0.3
} else {
weights["ai_supercycle_model"] = 0.3
weights["hawkish_fed_model"] = 0.4
}
case Orange/Red:
weights["ai_supercycle_model"] = 0.1
weights["geopolitical_hedge_model"] = 0.6
weights["hawkish_fed_model"] = 0.3
}
}MetaLearner 與 MiroFish Swarm 的連結
策略進化系統透過 SubmitTrainingScenarios 接收 Swarm 模擬產生的訓練情境,將魚群表現轉化為學習策略的演化素材:
MiroFish Swarm 模擬
└── ExportTrainingData() → []TrainingScenario
└── MetaLearner.SubmitTrainingScenarios(scenarios)
└── scenarioToLearningData() → SwarmLearningData
└── SubmitSwarmData() → swarmData channel
└── processSwarmData() 更新策略績效
└── evolvePopulation() 執行遺傳演算法- 每條魚的
TrainingScenario包含其歷史狀態、預測、表現(Accuracy、SharpeRatio、MaxDrawdown)與預測規則 scenarioToLearningData將魚的準確率映射為學習率參數(accuracy>0.8 → 0.001;>0.6 → 0.01;否則 0.1)- 批次提交後自動觸發一次
evolvePopulation(),執行 elite 選擇、crossover、mutation - 頂級策略可透過
GET /api/dashboard/swarm-strategies查詢
績效回饋機制
評估維度
type ModelPerformance struct {
ModelID string
Period string
PredictedFlow string // 模型預測的資金流向
ActualFlow string // 實際資金流向
Accuracy float64 // 預測準確率
PnLImpact float64 // 對組合損益的影響
}注意:
ModelPerformance是投資模型層級的績效追蹤(用於 Darwinian 權重調整)。MetaLearner 內部使用StrategyPerformance(SuccessCount、FailureCount、AvgImprovement、ConvergenceRate、StabilityScore)追蹤學習策略的表現。兩者位於不同抽象層級。
自動調整規則
func EvaluateModels(performances []ModelPerformance) {
for _, p := range performances {
if p.Accuracy < 0.5 {
ReduceModelWeight(p.ModelID, 0.1)
} else if p.Accuracy > 0.8 {
IncreaseModelWeight(p.ModelID, 0.1)
}
}
}實驗生命週期
Propose → Execute → Judge → Promote/Revert改良重點(v2.0)
- 觀測值門檻提高:level_1: 3→8, level_2: 8→12, level_3: 12→15
⚠️ Pending: Thresholds remain at level_1: 3, level_2: 8, level_3: 12 (see
internal/experiment/judge.go→requiredObservationCountForMaturity()). Requires data collection infrastructure upgrade. - 統計穩定性檢查:Sharpe ratio 標準誤差 < 0.5
✅ Implemented:
maintain_sharpe_likegate usesSharpeStabilityCheck(). - Out-of-sample 驗證:Candidate 必須在第二個獨立窗口優於 Baseline
✅ Implemented:
no_drawdown_spikeandpreserve_downside_protectiongates. - 透明度強化:Darwinian 權重截斷事件記錄 + 連續截斷警告
✅ Implemented: Logging in
constrainWeight()atdarwinian_weights.go:315-319.
關鍵檔案
internal/experiment/judge.go- 實驗評判核心internal/experiment/sharpe_stability.go- Sharpe穩定性檢查internal/experiment/oos_validator.go- Out-of-sample驗證internal/portfolio/darwinian_weights.go- Darwinian權重管理internal/narrative/knowledge_base.go- 投資模型定義
Wave 9 觀測整合
策略進化循環可透過 EventPositionUpdate 與 EventRegimeChange 事件串接 Wave 9 可觀測性。
Agent Spawning 模組(internal/spawning)
自動偵測系統知識缺口並生成新 Agent,管理完整生命週期。
| 陷阱 | 說明 |
|---|---|
| PromptsDir 必須為絕對路徑 | SpawningConfig.PromptsDir 預設 "prompts" 相對於 CWD;ManualSpawn 前需確認工作目錄 |
| Agent 初始為 disabled | AgentFactory.CreateAgentForGap 產生 Enabled: false,必須經 AcceptAgent() 才啟用 |
| Extinction 閾值 20 天 | CheckExtinction() 預設權重維持在 DarwinianWeightMin(0.3) 以下 20 天即淘汰 |
| ManualSpawn 不進內部 map | ManualSpawn() 只建立並回傳 SpawnedAgent,不會自動加入 spawnedAgents map(測試有註解) |
| Gap 優先排序用 bubble sort | prioritizeGaps() 使用簡單排序(列表小,非效能瓶頸),嚴重程度加權後以年齡微調 |
MetaLearner(internal/metalearning)
透過遺傳演算法根據 MiroFish swarm 回饋持續優化學習策略參數。
| 陷阱 | 說明 |
|---|---|
| 冷啟動分數為 0 | calculateStrategyScore() 在 TotalApplications == 0 時回傳 0,新策略初期排名墊底 |
| 通道滿載丟棄 | SubmitSwarmData 與 SubmitTrainingResult 使用緩衝 channel(容量 100),滿載時直接丟棄 |
| pseudo-random 為 deterministic | 使用自訂 LCG(deterministicRand),測試可重現但非加密安全 |
| 參數突變可能為負 | mutateStrategy() 對 learning_rate/batch_size 取絕對值,其他參數可能變為負數 |
| Save/Load 只存 ID 引用 | Save() 將 population 與 elite 存為 ID 列表;Load() 需從 strategies map 還原引用 |
技能版本: 1.2
最後更新: 2026-06-27