qka 2.4.5.dev2__tar.gz → 2.4.6.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/PKG-INFO +1 -1
  2. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/indicator.py +7 -2
  3. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/.github/workflows/release.yml +0 -0
  4. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/.gitignore +0 -0
  5. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/.vscode/settings.json +0 -0
  6. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/CHANGELOG.md +0 -0
  7. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/LICENSE +0 -0
  8. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/README.md +0 -0
  9. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/pyproject.toml +0 -0
  10. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/__init__.py +0 -0
  11. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/cli.py +0 -0
  12. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/__init__.py +0 -0
  13. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/accessor.py +0 -0
  14. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/analysis.py +0 -0
  15. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/backtest.py +0 -0
  16. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/broker.py +0 -0
  17. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/data.py +0 -0
  18. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/report.py +0 -0
  19. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/simulate.py +0 -0
  20. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/sizing.py +0 -0
  21. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/strategy.py +0 -0
  22. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/core/tdx.py +0 -0
  23. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/utils/__init__.py +0 -0
  24. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/qka/utils/logger.py +0 -0
  25. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/skills/qka/SKILL.md +0 -0
  26. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/skills/qka/references/analysis.md +0 -0
  27. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/skills/qka/references/backtest.md +0 -0
  28. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/skills/qka/references/broker.md +0 -0
  29. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/skills/qka/references/data.md +0 -0
  30. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/skills/qka/references/sizing.md +0 -0
  31. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/skills/qka/references/strategy.md +0 -0
  32. {qka-2.4.5.dev2 → qka-2.4.6.dev2}/tools/generate_api_ref.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: qka
3
- Version: 2.4.5.dev2
3
+ Version: 2.4.6.dev2
4
4
  Summary: QKA(快量化 / Quant Kit for A-shares)- 简洁易用的 A 股量化回测框架
5
5
  Project-URL: Home, https://github.com/zsrl/qka
6
6
  Project-URL: Repository, https://github.com/zsrl/qka
@@ -105,8 +105,13 @@ def max_drawdown(df: pd.DataFrame, symbol: str, window: int) -> pd.Series:
105
105
  cum_values = cum.values
106
106
  result = np.full(len(cum_values), np.nan)
107
107
  for i in range(window - 1, len(cum_values)):
108
- peak = np.max(cum_values[i - window + 1 : i + 1])
109
- result[i] = (cum_values[i] - peak) / peak
108
+ seg = cum_values[i - window + 1 : i + 1]
109
+ # 窗口内逐日刷新峰值,再取「任意时刻从峰到谷」最深的那一次。
110
+ # 旧实现只算 (末值 - 窗口峰值) / 窗口峰值 —— 那是「当前回撤」(现在离最高点多远),
111
+ # 会漏掉中间已经发生过的深坑:净值 1 → 1.2 → 0.6 → 1.3,旧算法给 0,
112
+ # 实际最深跌过 -50%。与 analysis.max_drawdown 的口径也不一致。
113
+ peak = np.maximum.accumulate(seg)
114
+ result[i] = np.min(seg / peak - 1.0)
110
115
  return pd.Series(result, index=cum.index)
111
116
 
112
117
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes