alpha-visualizer 1.2.2__tar.gz → 1.3.0__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 (731) hide show
  1. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.agents/skills/source-command-audit-licenses/SKILL.md +4 -2
  2. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.claude/commands/audit-licenses.md +4 -2
  3. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/workflows/ci.yml +9 -4
  4. alpha_visualizer-1.2.2/.hypothesis/constants/4e26bccf25a8c1bb → alpha_visualizer-1.3.0/.hypothesis/constants/0caad6595136948b +1 -1
  5. alpha_visualizer-1.3.0/.hypothesis/constants/707dd0d075295200 +4 -0
  6. alpha_visualizer-1.2.2/.hypothesis/constants/bc34da97bbdf0eb3 → alpha_visualizer-1.3.0/.hypothesis/constants/7cea79ac6c0799bb +1 -1
  7. alpha_visualizer-1.3.0/.hypothesis/constants/8d9ea99caee79fd4 +4 -0
  8. alpha_visualizer-1.2.2/.hypothesis/constants/96ca93165140d446 → alpha_visualizer-1.3.0/.hypothesis/constants/98d0c8b0e6532609 +1 -1
  9. alpha_visualizer-1.3.0/.hypothesis/constants/99c8a89c4a9a7859 +4 -0
  10. alpha_visualizer-1.2.2/.hypothesis/constants/5e5c346a22eb22e1 → alpha_visualizer-1.3.0/.hypothesis/constants/ac0d9ed38453cfd0 +1 -1
  11. alpha_visualizer-1.2.2/.hypothesis/constants/f2f91c7f9b44111d → alpha_visualizer-1.3.0/.hypothesis/constants/bfd4c6ca4462fe73 +1 -1
  12. alpha_visualizer-1.3.0/.hypothesis/constants/c4312fe8499bc1f7 +4 -0
  13. alpha_visualizer-1.3.0/.hypothesis/constants/dbe657c7851479a7 +4 -0
  14. alpha_visualizer-1.2.2/.hypothesis/constants/e4be0e30e6ada148 → alpha_visualizer-1.3.0/.hypothesis/constants/fa54b8596401d232 +1 -1
  15. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/CHANGELOG.md +178 -121
  16. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/PKG-INFO +26 -3
  17. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/README.en.md +21 -0
  18. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/README.md +21 -0
  19. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/THIRDPARTY_LICENSES.txt +167 -2
  20. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/cliff.toml +10 -0
  21. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/.gitignore +3 -0
  22. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/results/backtest_results.db +0 -0
  23. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/eslint.config.js +2 -0
  24. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/openapi.json +222 -2
  25. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/package.json +2 -0
  26. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/pnpm-lock.yaml +126 -2
  27. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/api/client.ts +21 -5
  28. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/api/types.gen.ts +128 -2
  29. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/api/types.ts +38 -0
  30. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/CompareEquityTV.tsx +4 -2
  31. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/EquityDrawdownPaneTV.tsx +38 -0
  32. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/RollingMetricsChartTV.tsx +55 -10
  33. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/EquityDrawdownPaneTV.test.tsx +33 -1
  34. alpha_visualizer-1.3.0/frontend/src/charts/tv/__tests__/RollingMetricsChartTV.test.tsx +71 -0
  35. alpha_visualizer-1.3.0/frontend/src/components/AppFooter.tsx +107 -0
  36. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/AppNav.tsx +1 -0
  37. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/CommandPalette.tsx +28 -0
  38. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/DetailToolbar.tsx +4 -0
  39. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/MetricsSummaryBarV2.tsx +19 -76
  40. alpha_visualizer-1.3.0/frontend/src/components/RouteErrorScreen.tsx +90 -0
  41. alpha_visualizer-1.3.0/frontend/src/components/__tests__/AppFooter.test.tsx +102 -0
  42. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/CommandPalette.test.tsx +16 -0
  43. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/MetricsSummaryBarV2.test.tsx +25 -0
  44. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/RootLayout.test.tsx +25 -1
  45. alpha_visualizer-1.3.0/frontend/src/components/__tests__/RouteErrorScreen.test.tsx +61 -0
  46. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/responsive-styles.test.tsx +53 -0
  47. alpha_visualizer-1.3.0/frontend/src/components/browser/CreateStrategyEntry.tsx +87 -0
  48. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/FilterBar.tsx +6 -3
  49. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/RecipeRow.tsx +59 -5
  50. alpha_visualizer-1.3.0/frontend/src/components/browser/RunCompareView.tsx +228 -0
  51. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/RunHistoryTab.tsx +50 -0
  52. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/SavedViews.tsx +16 -3
  53. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/StrategyRow.tsx +17 -4
  54. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/StrategySlidePanel.tsx +16 -4
  55. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/StrategyTable.tsx +12 -2
  56. alpha_visualizer-1.3.0/frontend/src/components/browser/__tests__/CreateStrategyEntry.test.tsx +50 -0
  57. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/RecipeRow.test.tsx +55 -0
  58. alpha_visualizer-1.3.0/frontend/src/components/browser/__tests__/RunCompareView.test.tsx +131 -0
  59. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/RunHistoryTab.test.tsx +51 -2
  60. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/StrategySlidePanel.test.tsx +32 -4
  61. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/StrategyTable.test.tsx +2 -0
  62. alpha_visualizer-1.3.0/frontend/src/components/charts/AnnualSummaryTable.tsx +118 -0
  63. alpha_visualizer-1.3.0/frontend/src/components/charts/HoldingPeriodChart.tsx +189 -0
  64. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/MonteCarloChart.tsx +54 -3
  65. alpha_visualizer-1.3.0/frontend/src/components/charts/__tests__/AnnualSummaryTable.test.tsx +33 -0
  66. alpha_visualizer-1.3.0/frontend/src/components/charts/__tests__/HoldingPeriodChart.test.tsx +39 -0
  67. alpha_visualizer-1.3.0/frontend/src/components/charts/__tests__/MonteCarloChart.test.tsx +53 -0
  68. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/jobs/JobRunnerCard.tsx +8 -3
  69. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/LiveKpiRow.tsx +1 -1
  70. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/LivePositionView.tsx +3 -1
  71. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/LiveTab.test.tsx +5 -4
  72. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/CompareTable.tsx +29 -3
  73. alpha_visualizer-1.3.0/frontend/src/components/metrics/MetricInfoTip.tsx +121 -0
  74. alpha_visualizer-1.3.0/frontend/src/components/metrics/MetricsGrid.tsx +297 -0
  75. alpha_visualizer-1.3.0/frontend/src/components/metrics/PortfolioComposer.tsx +231 -0
  76. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/SignalQualityBadge.tsx +25 -4
  77. alpha_visualizer-1.3.0/frontend/src/components/metrics/SubperiodMetrics.tsx +182 -0
  78. alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/CompareTable.test.tsx +40 -0
  79. alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/MetricInfoTip.test.tsx +57 -0
  80. alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/MetricsGrid.hidden.test.tsx +84 -0
  81. alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/MetricsGrid.sentinel.test.tsx +38 -0
  82. alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/MetricsGrid.tooltip.test.tsx +86 -0
  83. alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/SubperiodMetrics.test.tsx +38 -0
  84. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/__tests__/evaluateGood.test.ts +14 -8
  85. alpha_visualizer-1.3.0/frontend/src/components/metrics/evaluate.ts +29 -0
  86. alpha_visualizer-1.3.0/frontend/src/components/trades/TradeTable.tsx +379 -0
  87. alpha_visualizer-1.3.0/frontend/src/components/trades/__tests__/TradeTable.test.tsx +138 -0
  88. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/tuning/TuningPanel.tsx +7 -2
  89. alpha_visualizer-1.3.0/frontend/src/constants/__tests__/metricDefinitions.test.ts +106 -0
  90. alpha_visualizer-1.3.0/frontend/src/constants/helpLinks.ts +13 -0
  91. alpha_visualizer-1.3.0/frontend/src/constants/metricDefinitions.ts +397 -0
  92. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/ConfirmDialog.tsx +43 -2
  93. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Toolbar.tsx +12 -1
  94. alpha_visualizer-1.3.0/frontend/src/design/primitives/__tests__/ConfirmDialog.test.tsx +113 -0
  95. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/tokens.css +10 -0
  96. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useJobRunner.test.tsx +104 -5
  97. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useSparklineCache.test.tsx +51 -23
  98. alpha_visualizer-1.3.0/frontend/src/hooks/__tests__/useStarredStrategies.test.ts +59 -0
  99. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useBacktestData.ts +16 -4
  100. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useJobRunner.ts +27 -3
  101. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useSparklineCache.ts +10 -12
  102. alpha_visualizer-1.3.0/frontend/src/hooks/useStarredStrategies.ts +54 -0
  103. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useStrategyList.ts +29 -6
  104. alpha_visualizer-1.3.0/frontend/src/lib/__tests__/annualSummary.test.ts +44 -0
  105. alpha_visualizer-1.3.0/frontend/src/lib/__tests__/benchmark.test.ts +51 -0
  106. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/errorMessage.test.ts +31 -1
  107. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/format.test.ts +29 -13
  108. alpha_visualizer-1.3.0/frontend/src/lib/__tests__/holdingPeriod.test.ts +39 -0
  109. alpha_visualizer-1.3.0/frontend/src/lib/__tests__/paramImportance.test.ts +54 -0
  110. alpha_visualizer-1.3.0/frontend/src/lib/__tests__/portfolio.test.ts +71 -0
  111. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/rolling.test.ts +22 -0
  112. alpha_visualizer-1.3.0/frontend/src/lib/__tests__/sentinel.test.ts +27 -0
  113. alpha_visualizer-1.3.0/frontend/src/lib/__tests__/subperiod.test.ts +46 -0
  114. alpha_visualizer-1.3.0/frontend/src/lib/annualSummary.ts +60 -0
  115. alpha_visualizer-1.3.0/frontend/src/lib/benchmark.ts +106 -0
  116. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/errorMessage.ts +41 -0
  117. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/format.ts +8 -3
  118. alpha_visualizer-1.3.0/frontend/src/lib/holdingPeriod.ts +64 -0
  119. alpha_visualizer-1.3.0/frontend/src/lib/paramImportance.ts +82 -0
  120. alpha_visualizer-1.3.0/frontend/src/lib/portfolio.ts +93 -0
  121. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/rolling.ts +27 -0
  122. alpha_visualizer-1.3.0/frontend/src/lib/sentinel.ts +14 -0
  123. alpha_visualizer-1.3.0/frontend/src/lib/subperiod.ts +91 -0
  124. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/mock/btData.ts +11 -0
  125. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/pages/BrowsePage.tsx +13 -12
  126. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/pages/ComparePage.tsx +5 -0
  127. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/pages/DetailPage.tsx +140 -17
  128. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/pages/MaintenancePage.tsx +5 -2
  129. alpha_visualizer-1.3.0/frontend/src/pages/ReportPage.tsx +196 -0
  130. alpha_visualizer-1.3.0/frontend/src/pages/RunsPage.tsx +347 -0
  131. alpha_visualizer-1.3.0/frontend/src/pages/__tests__/BrowsePage.test.tsx +70 -0
  132. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/pages/__tests__/ComparePage.test.tsx +19 -0
  133. alpha_visualizer-1.3.0/frontend/src/pages/__tests__/DetailPage.test.tsx +190 -0
  134. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/pages/__tests__/MaintenancePage.test.tsx +23 -0
  135. alpha_visualizer-1.3.0/frontend/src/pages/__tests__/ReportPage.test.tsx +112 -0
  136. alpha_visualizer-1.3.0/frontend/src/pages/__tests__/RunsPage.test.tsx +102 -0
  137. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/router.tsx +14 -0
  138. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/BacktestScreen.tsx +259 -5
  139. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/BrowseScreen.tsx +8 -1
  140. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/CompareScreen.tsx +63 -8
  141. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/ISOOSScreen.tsx +44 -9
  142. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/IdeasScreen.tsx +2 -2
  143. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/LiveScreen.tsx +1 -1
  144. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/MaintenanceScreen.tsx +31 -4
  145. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/OptimizeScreen.tsx +123 -3
  146. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/WFOScreen.tsx +25 -5
  147. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/__tests__/BacktestScreen.test.tsx +117 -0
  148. alpha_visualizer-1.3.0/frontend/src/screens/__tests__/CompareScreen.test.tsx +176 -0
  149. alpha_visualizer-1.3.0/frontend/src/screens/__tests__/ISOOSScreen.test.tsx +74 -0
  150. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/__tests__/OptimizeScreen.test.tsx +89 -2
  151. alpha_visualizer-1.3.0/frontend/src/screens/__tests__/WFOScreen.test.tsx +71 -0
  152. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/vite.config.ts +13 -0
  153. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/pyproject.toml +35 -4
  154. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/results/backtest_results.db +0 -0
  155. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/__init__.py +1 -1
  156. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/app.py +102 -9
  157. alpha_visualizer-1.3.0/src/alpha_visualizer/cli.py +250 -0
  158. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/db.py +3 -0
  159. alpha_visualizer-1.3.0/src/alpha_visualizer/dependencies.py +135 -0
  160. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/errors.py +14 -0
  161. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/backtest_results.py +174 -30
  162. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/live.py +3 -2
  163. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/strategies.py +78 -42
  164. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/jobs.py +2 -1
  165. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/live.py +3 -3
  166. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/maintenance.py +2 -2
  167. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/optimize.py +75 -30
  168. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/results.py +17 -2
  169. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/run.py +38 -3
  170. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/strategies.py +57 -21
  171. alpha_visualizer-1.3.0/src/alpha_visualizer/schemas/health.py +16 -0
  172. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/optimize.py +16 -0
  173. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/results.py +3 -1
  174. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/strategies.py +11 -0
  175. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/backtest.py +130 -30
  176. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/historical.py +2 -3
  177. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/jobs.py +4 -1
  178. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/live.py +1 -1
  179. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/BrowsePage-D2iIruQk.js +2 -0
  180. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/BrowsePage-D2iIruQk.js.map +1 -0
  181. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ChartDataTable-BihRD5zB.js +2 -0
  182. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ChartDataTable-BihRD5zB.js.map +1 -0
  183. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ComparePage-r2Kn5IKU.js +2 -0
  184. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ComparePage-r2Kn5IKU.js.map +1 -0
  185. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/DetailPage-DhT4BIhx.js +5 -0
  186. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/DetailPage-DhT4BIhx.js.map +1 -0
  187. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/EquityDrawdownPaneTV-BsdmPyAa.js +2 -0
  188. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/EquityDrawdownPaneTV-BsdmPyAa.js.map +1 -0
  189. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/IdeasPage-DaPbS4Yf.js +2 -0
  190. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/IdeasPage-DaPbS4Yf.js.map +1 -0
  191. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LivePage-Q3WKgh88.js +2 -0
  192. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LivePage-Q3WKgh88.js.map +1 -0
  193. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LiveTab-CYKQnJC8.js +2 -0
  194. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LiveTab-CYKQnJC8.js.map +1 -0
  195. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MaintenancePage-BP3oVssz.js +2 -0
  196. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MaintenancePage-BP3oVssz.js.map +1 -0
  197. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MetricsSummaryBarV2-gzksgQGt.js +2 -0
  198. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MetricsSummaryBarV2-gzksgQGt.js.map +1 -0
  199. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReportPage-Cf2NnZ2Z.js +2 -0
  200. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReportPage-Cf2NnZ2Z.js.map +1 -0
  201. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReturnDistributionChart-0hD8xUWa.js +3 -0
  202. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReturnDistributionChart-0hD8xUWa.js.map +1 -0
  203. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunLogDetails-BHJ70KpR.js +2 -0
  204. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunLogDetails-BHJ70KpR.js.map +1 -0
  205. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunsPage-DPkp5DAh.js +2 -0
  206. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunsPage-DPkp5DAh.js.map +1 -0
  207. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/SettingsToggles-DfZwmoRM.js → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SettingsToggles-CNzWlW9f.js +2 -2
  208. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/SettingsToggles-DfZwmoRM.js.map → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SettingsToggles-CNzWlW9f.js.map +1 -1
  209. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ShareCardButton-CN2fIICV.js +2 -0
  210. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ShareCardButton-CN2fIICV.js.map +1 -0
  211. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SortHeaderCell-CetYtnjX.js +2 -0
  212. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SortHeaderCell-CetYtnjX.js.map +1 -0
  213. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/errorMessage-BzDBBHE6.js +2 -0
  214. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/errorMessage-BzDBBHE6.js.map +1 -0
  215. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/format-D0fEne3x.js +2 -0
  216. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/format-D0fEne3x.js.map +1 -0
  217. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/index-BedmvoEG.css → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/index-ngPg-0Y0.css +1 -1
  218. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/index-xSIYNDJt.js +3 -0
  219. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/index-xSIYNDJt.js.map +1 -0
  220. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/react-router-CcOee6vW.js → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/react-router-CU9OAEs1.js +2 -2
  221. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/react-router-CcOee6vW.js.map → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/react-router-CU9OAEs1.js.map +1 -1
  222. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/tv-CrUgTguZ.js → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/tv-D3Zm-VpQ.js +2 -2
  223. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/tv-CrUgTguZ.js.map → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/tv-D3Zm-VpQ.js.map +1 -1
  224. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/useBacktestData-ewTBXVEg.js → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/useBacktestData-B7fFEVc7.js +2 -2
  225. alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/useBacktestData-B7fFEVc7.js.map +1 -0
  226. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/index.html +3 -3
  227. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/factories.py +13 -4
  228. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/repositories/test_backtest_results_repo.py +91 -0
  229. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/repositories/test_strategies_repo.py +120 -0
  230. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_jobs.py +13 -0
  231. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_live.py +3 -3
  232. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_maintenance.py +11 -3
  233. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_optimize.py +74 -0
  234. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_results.py +92 -0
  235. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_run.py +90 -2
  236. alpha_visualizer-1.3.0/tests/routers/test_sparkline.py +112 -0
  237. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_strategies.py +16 -0
  238. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_strategy_duplicate.py +3 -1
  239. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_strategy_save.py +3 -1
  240. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/services/test_backtest.py +60 -0
  241. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/services/test_backtest_properties.py +63 -28
  242. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/services/test_jobs.py +5 -3
  243. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/test_app.py +204 -0
  244. alpha_visualizer-1.3.0/tests/test_cli.py +218 -0
  245. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/uv.lock +285 -4
  246. alpha_visualizer-1.2.2/.hypothesis/constants/1e3ce406f3635331 +0 -4
  247. alpha_visualizer-1.2.2/.hypothesis/constants/8f23e54ec81ce772 +0 -4
  248. alpha_visualizer-1.2.2/.hypothesis/constants/a27ca3dcb982038c +0 -4
  249. alpha_visualizer-1.2.2/.hypothesis/constants/afe5949501fc5b8f +0 -4
  250. alpha_visualizer-1.2.2/frontend/src/charts/tv/__tests__/RollingMetricsChartTV.test.tsx +0 -106
  251. alpha_visualizer-1.2.2/frontend/src/components/AppFooter.tsx +0 -47
  252. alpha_visualizer-1.2.2/frontend/src/components/__tests__/AppFooter.test.tsx +0 -42
  253. alpha_visualizer-1.2.2/frontend/src/components/metrics/MetricsGrid.tsx +0 -175
  254. alpha_visualizer-1.2.2/frontend/src/components/metrics/evaluate.ts +0 -19
  255. alpha_visualizer-1.2.2/frontend/src/components/trades/TradeTable.tsx +0 -225
  256. alpha_visualizer-1.2.2/frontend/src/components/trades/__tests__/TradeTable.test.tsx +0 -52
  257. alpha_visualizer-1.2.2/frontend/src/constants/metricDefinitions.ts +0 -48
  258. alpha_visualizer-1.2.2/frontend/src/design/primitives/__tests__/ConfirmDialog.test.tsx +0 -59
  259. alpha_visualizer-1.2.2/frontend/src/screens/__tests__/CompareScreen.test.tsx +0 -84
  260. alpha_visualizer-1.2.2/src/alpha_visualizer/cli.py +0 -117
  261. alpha_visualizer-1.2.2/src/alpha_visualizer/dependencies.py +0 -82
  262. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/BrowsePage-CRD1NFN6.js +0 -2
  263. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/BrowsePage-CRD1NFN6.js.map +0 -1
  264. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/ChartDataTable-CpbeS-vH.js +0 -2
  265. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/ChartDataTable-CpbeS-vH.js.map +0 -1
  266. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/ComparePage-CLFz7URF.js +0 -2
  267. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/ComparePage-CLFz7URF.js.map +0 -1
  268. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/DetailPage-CQtYJc2N.js +0 -5
  269. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/DetailPage-CQtYJc2N.js.map +0 -1
  270. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/IdeasPage-r2nUwzs8.js +0 -2
  271. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/IdeasPage-r2nUwzs8.js.map +0 -1
  272. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/LivePage-DxqC9viK.js +0 -2
  273. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/LivePage-DxqC9viK.js.map +0 -1
  274. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/LiveTab-Bo0cnOzh.js +0 -2
  275. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/LiveTab-Bo0cnOzh.js.map +0 -1
  276. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/MaintenancePage-DPuIkcax.js +0 -2
  277. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/MaintenancePage-DPuIkcax.js.map +0 -1
  278. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/ReturnDistributionChart-DhMITrWS.js +0 -3
  279. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/ReturnDistributionChart-DhMITrWS.js.map +0 -1
  280. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/RunLogDetails-DWwJcvMo.js +0 -2
  281. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/RunLogDetails-DWwJcvMo.js.map +0 -1
  282. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/errorMessage-sAm1T6PK.js +0 -2
  283. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/errorMessage-sAm1T6PK.js.map +0 -1
  284. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/format-jy8n8zRe.js +0 -2
  285. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/format-jy8n8zRe.js.map +0 -1
  286. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/index-C4Iqvc3f.js +0 -3
  287. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/index-C4Iqvc3f.js.map +0 -1
  288. alpha_visualizer-1.2.2/src/alpha_visualizer/static/assets/useBacktestData-ewTBXVEg.js.map +0 -1
  289. alpha_visualizer-1.2.2/tests/test_cli.py +0 -52
  290. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.agents/skills/source-command-pre-release/SKILL.md +0 -0
  291. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.claude/commands/pre-release.md +0 -0
  292. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.codex/hooks.json +0 -0
  293. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  294. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/bug_report_ja.yml +0 -0
  295. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  296. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  297. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/feature_request_ja.yml +0 -0
  298. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  299. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/codeql/README.md +0 -0
  300. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/codeql/codeql-config.yml +0 -0
  301. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/dependabot.yml +0 -0
  302. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/workflows/codeql.yml +0 -0
  303. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/workflows/lighthouse.yml +0 -0
  304. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.github/workflows/release.yml +0 -0
  305. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.gitignore +0 -0
  306. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/.gitignore +0 -0
  307. /alpha_visualizer-1.2.2/.hypothesis/constants/4c29ef3d0bedcdd8 → /alpha_visualizer-1.3.0/.hypothesis/constants/04b2c2a699e215f4 +0 -0
  308. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/0bf3463e8f4751b8 +0 -0
  309. /alpha_visualizer-1.2.2/.hypothesis/constants/cd7fdfbe3f66457b → /alpha_visualizer-1.3.0/.hypothesis/constants/0e92a16981d06d97 +0 -0
  310. /alpha_visualizer-1.2.2/.hypothesis/constants/8add761403393fca → /alpha_visualizer-1.3.0/.hypothesis/constants/184fa6728d185660 +0 -0
  311. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/296b8092179c9f55 +0 -0
  312. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/312a7aaf12a1fd47 +0 -0
  313. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/316886ef98081ce9 +0 -0
  314. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/331e194303817b32 +0 -0
  315. /alpha_visualizer-1.2.2/.hypothesis/constants/1632901e1b51683b → /alpha_visualizer-1.3.0/.hypothesis/constants/36df1978b70731f9 +0 -0
  316. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/43f703bafb1e4b04 +0 -0
  317. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/4577b97f57a8a832 +0 -0
  318. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/4726660442f99a00 +0 -0
  319. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/4a1c4d1532cab28e +0 -0
  320. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/4b255f25d1067b71 +0 -0
  321. /alpha_visualizer-1.2.2/.hypothesis/constants/004709bbf59880d3 → /alpha_visualizer-1.3.0/.hypothesis/constants/4fd44198986300fe +0 -0
  322. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/508b282112ab038e +0 -0
  323. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/5c80be020ed7a646 +0 -0
  324. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/5c9eb073058f11a0 +0 -0
  325. /alpha_visualizer-1.2.2/.hypothesis/constants/060c20f3c4ff96cb → /alpha_visualizer-1.3.0/.hypothesis/constants/5fca39058ed3753e +0 -0
  326. /alpha_visualizer-1.2.2/.hypothesis/constants/1fedef6b4cc376fe → /alpha_visualizer-1.3.0/.hypothesis/constants/6abf3e9a1356666c +0 -0
  327. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/757b1f8305546439 +0 -0
  328. /alpha_visualizer-1.2.2/.hypothesis/constants/a7474b0c3a5a5850 → /alpha_visualizer-1.3.0/.hypothesis/constants/7c9231be4d08456f +0 -0
  329. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/7f90c9d611001617 +0 -0
  330. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/812d29a19e56a27b +0 -0
  331. /alpha_visualizer-1.2.2/.hypothesis/constants/fe325b4404aa1121 → /alpha_visualizer-1.3.0/.hypothesis/constants/906238816b505c1e +0 -0
  332. /alpha_visualizer-1.2.2/.hypothesis/constants/10d56fd11d90e91d → /alpha_visualizer-1.3.0/.hypothesis/constants/9c2871fc1ddbab71 +0 -0
  333. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/a636a4647020033d +0 -0
  334. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/ab4df659c6b192db +0 -0
  335. /alpha_visualizer-1.2.2/.hypothesis/constants/b0487cda9820c053 → /alpha_visualizer-1.3.0/.hypothesis/constants/acddbf8018c5d884 +0 -0
  336. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/af039261f357a5c1 +0 -0
  337. /alpha_visualizer-1.2.2/.hypothesis/constants/8bd584eda4b3b534 → /alpha_visualizer-1.3.0/.hypothesis/constants/b3227e2cf0b90fa4 +0 -0
  338. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/b5541576e1e9aea7 +0 -0
  339. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/b9ff5bcd3a53e3a7 +0 -0
  340. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/c5349cb90ddc7968 +0 -0
  341. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/d34317036474de6e +0 -0
  342. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/da39a3ee5e6b4b0d +0 -0
  343. /alpha_visualizer-1.2.2/.hypothesis/constants/fc009534004030e1 → /alpha_visualizer-1.3.0/.hypothesis/constants/e41b0128c49db70e +0 -0
  344. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/e44a457d795e56c2 +0 -0
  345. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/ea2d606acbfff989 +0 -0
  346. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/eed5e66c16ae84b8 +0 -0
  347. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/f7c4a04c97c0daf8 +0 -0
  348. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/fa443af6269a6e02 +0 -0
  349. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/.hypothesis/constants/ff4517cbfe51fea1 +0 -0
  350. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/AGENTS.md +0 -0
  351. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/CLAUDE.md +0 -0
  352. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/CODE_OF_CONDUCT.en.md +0 -0
  353. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/CODE_OF_CONDUCT.md +0 -0
  354. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/CONTRIBUTING.en.md +0 -0
  355. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/CONTRIBUTING.md +0 -0
  356. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/LICENSE +0 -0
  357. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/NOTICE +0 -0
  358. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/SECURITY.en.md +0 -0
  359. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/SECURITY.md +0 -0
  360. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/adr/0001-pages-vs-screens.md +0 -0
  361. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/adr/0002-charts-visx-vs-components.md +0 -0
  362. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/adr/0003-openapi-typescript-codegen.md +0 -0
  363. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/adr/0004-condition-node-discriminated-union.md +0 -0
  364. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/lighthouse-ci.md +0 -0
  365. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/backtest-tv.png +0 -0
  366. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/browse.png +0 -0
  367. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/compare-heatmap.png +0 -0
  368. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/compare.png +0 -0
  369. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/detail.png +0 -0
  370. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/ideas.png +0 -0
  371. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/live.png +0 -0
  372. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/optimize.png +0 -0
  373. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/strategy-signal-tv.png +0 -0
  374. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/en/strategy.png +0 -0
  375. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/backtest-tv.png +0 -0
  376. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/browse.png +0 -0
  377. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/compare-heatmap.png +0 -0
  378. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/compare.png +0 -0
  379. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/detail.png +0 -0
  380. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/ideas.png +0 -0
  381. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/live.png +0 -0
  382. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/optimize.png +0 -0
  383. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/strategy-signal-tv.png +0 -0
  384. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/screenshots/ja/strategy.png +0 -0
  385. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/superpowers/plans/2026-07-25-live-equity-rich.md +0 -0
  386. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/superpowers/plans/2026-07-26-browse-recipe-rollup.md +0 -0
  387. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/superpowers/plans/2026-07-27-browse-symbol-coverage.md +0 -0
  388. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/superpowers/plans/2026-07-27-maintenance-orphan-runs.md +0 -0
  389. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/superpowers/specs/2026-07-25-live-equity-rich-design.md +0 -0
  390. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/superpowers/specs/2026-07-26-browse-recipe-rollup-design.md +0 -0
  391. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/superpowers/specs/2026-07-27-browse-symbol-coverage-design.md +0 -0
  392. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/docs/superpowers/specs/2026-07-27-maintenance-orphan-runs-design.md +0 -0
  393. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/.npmrc +0 -0
  394. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/.size-limit.json +0 -0
  395. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/.storybook/main.ts +0 -0
  396. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/.storybook/preview.ts +0 -0
  397. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/CLAUDE.md +0 -0
  398. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/README.md +0 -0
  399. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/THIRDPARTY_FONTS.md +0 -0
  400. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/README.md +0 -0
  401. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/historical/SPY_1d.parquet +0 -0
  402. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/ideas/ideas.json +0 -0
  403. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/dual_symbol_qqq.json +0 -0
  404. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/dual_symbol_spy.json +0 -0
  405. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v1.json +0 -0
  406. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v2.json +0 -0
  407. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v3.json +0 -0
  408. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/idle_recipe_v1.json +0 -0
  409. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/idle_recipe_v2.json +0 -0
  410. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/momo_breakout.json +0 -0
  411. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/no_symbol_v1.json +0 -0
  412. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/rsi_reversal.json +0 -0
  413. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/sma_cross.json +0 -0
  414. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/forge.yaml +0 -0
  415. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/helpers/locators.ts +0 -0
  416. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/samples/sample-fixture.spec.ts +0 -0
  417. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/screenshots/capture.spec.ts +0 -0
  418. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/screenshots/equity-tv.spec.ts +0 -0
  419. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/screenshots/strategy-signal-tv.spec.ts +0 -0
  420. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/specs/browse.spec.ts +0 -0
  421. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/specs/compare.spec.ts +0 -0
  422. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/specs/detail.spec.ts +0 -0
  423. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/specs/i18n.spec.ts +0 -0
  424. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/specs/maintenance.spec.ts +0 -0
  425. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/specs/share.spec.ts +0 -0
  426. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/visual/README.md +0 -0
  427. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/visual/__snapshots__/linux/equity-drawdown-tv.png +0 -0
  428. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/visual/__snapshots__/linux/strategy-signal-tv.png +0 -0
  429. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/e2e/visual/tv-charts.spec.ts +0 -0
  430. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/index.html +0 -0
  431. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/playwright.config.ts +0 -0
  432. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/playwright.samples.config.ts +0 -0
  433. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/playwright.screenshots.config.ts +0 -0
  434. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/playwright.visual.config.ts +0 -0
  435. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/pnpm-workspace.yaml +0 -0
  436. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/public/favicon.svg +0 -0
  437. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/public/icons.svg +0 -0
  438. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/api/__tests__/client.test.ts +0 -0
  439. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/CompareEquityTV.stories.tsx +0 -0
  440. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/EquityDrawdownPaneTV.stories.tsx +0 -0
  441. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/RollingMetricsChartTV.stories.tsx +0 -0
  442. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/StrategySignalChartTV.stories.tsx +0 -0
  443. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/StrategySignalChartTV.tsx +0 -0
  444. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/WFOEquityTV.stories.tsx +0 -0
  445. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/WFOEquityTV.tsx +0 -0
  446. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/CompareEquityTV.test.tsx +0 -0
  447. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/StrategySignalChartTV.test.tsx +0 -0
  448. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/WFOEquityTV.test.tsx +0 -0
  449. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/data.test.ts +0 -0
  450. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/regimeBands.test.ts +0 -0
  451. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/theme.test.ts +0 -0
  452. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/trades.test.ts +0 -0
  453. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/data.ts +0 -0
  454. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/regimeBands.ts +0 -0
  455. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/theme.ts +0 -0
  456. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/trades.ts +0 -0
  457. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/AnnualReturnsBarV.tsx +0 -0
  458. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/CorrelationHeatmapV.tsx +0 -0
  459. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/MAEMFEScatterV.tsx +0 -0
  460. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/MonthlyHeatmapV.tsx +0 -0
  461. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/OptimizeHeatmapV.tsx +0 -0
  462. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/OptimizeScatterV.tsx +0 -0
  463. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/Sparkline.stories.tsx +0 -0
  464. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/Sparkline.tsx +0 -0
  465. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/ConfirmActionButton.tsx +0 -0
  466. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/MetricsSummaryBarV2.stories.tsx +0 -0
  467. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/RootLayout.tsx +0 -0
  468. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/RunLogDetails.tsx +0 -0
  469. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/SettingsToggles.tsx +0 -0
  470. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/ShareCardButton.tsx +0 -0
  471. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/StrategyHero.tsx +0 -0
  472. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/AppNav.test.tsx +0 -0
  473. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/CorrelationHeatmap.test.tsx +0 -0
  474. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/SettingsToggles.test.tsx +0 -0
  475. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/ShareCardButton.test.tsx +0 -0
  476. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/ShareCardXButton.test.tsx +0 -0
  477. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/CollapsibleSection.tsx +0 -0
  478. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/CompareFloatingBar.tsx +0 -0
  479. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/GroupByToggle.tsx +0 -0
  480. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/Heroline.tsx +0 -0
  481. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/StrategyTableFooter.tsx +0 -0
  482. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/SymbolCoverageTable.tsx +0 -0
  483. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/CollapsibleSection.test.tsx +0 -0
  484. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/FilterBar.test.tsx +0 -0
  485. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/StrategyRow.test.tsx +0 -0
  486. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/StrategyTableFooter.test.tsx +0 -0
  487. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/SymbolCoverageTable.test.tsx +0 -0
  488. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/AnnualReturnsBar.tsx +0 -0
  489. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/CorrelationHeatmap.tsx +0 -0
  490. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/DrawdownDetailChart.tsx +0 -0
  491. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/MAEMFEScatter.tsx +0 -0
  492. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/OptimizeHeatmap.tsx +0 -0
  493. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/OptimizeScatter.tsx +0 -0
  494. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/ReturnDistributionChart.tsx +0 -0
  495. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/VaRChart.tsx +0 -0
  496. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/WFOTimeline.tsx +0 -0
  497. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/charts/WeekdayPerformanceChart.tsx +0 -0
  498. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/LivePositionsTable.tsx +0 -0
  499. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/LiveTab.tsx +0 -0
  500. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/SummaryCard.tsx +0 -0
  501. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/LiveKpiRow.test.tsx +0 -0
  502. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/LivePositionView.test.tsx +0 -0
  503. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/LivePositionsTable.test.tsx +0 -0
  504. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/format.test.ts +0 -0
  505. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/live/format.ts +0 -0
  506. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/CarryAdjustedCard.tsx +0 -0
  507. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/ISOOSMetrics.tsx +0 -0
  508. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/RegimeBreakdownCards.tsx +0 -0
  509. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/__tests__/SignalQualityBadge.test.tsx +0 -0
  510. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/tuning/DuplicateStrategyCard.tsx +0 -0
  511. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/tuning/__tests__/DuplicateStrategyCard.test.tsx +0 -0
  512. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/components/tuning/__tests__/TuningPanel.test.tsx +0 -0
  513. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/constants/runSource.ts +0 -0
  514. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/contexts/DashboardContext.tsx +0 -0
  515. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/contexts/dashboardConstants.ts +0 -0
  516. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/__tests__/definedTokens.test.ts +0 -0
  517. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/__tests__/noHardcodedColors.test.ts +0 -0
  518. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/__tests__/tokens.contrast.test.ts +0 -0
  519. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/a11y.css +0 -0
  520. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Button.tsx +0 -0
  521. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Card.tsx +0 -0
  522. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/ChartDataTable.tsx +0 -0
  523. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Chip.tsx +0 -0
  524. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Divider.tsx +0 -0
  525. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/ErrorBanner.tsx +0 -0
  526. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/KeyValue.tsx +0 -0
  527. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Loading.tsx +0 -0
  528. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/OverflowMenu.tsx +0 -0
  529. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Pill.stories.tsx +0 -0
  530. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Pill.tsx +0 -0
  531. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/SectionHeader.tsx +0 -0
  532. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/SortHeaderCell.tsx +0 -0
  533. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Stat.stories.tsx +0 -0
  534. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Stat.tsx +0 -0
  535. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/TabBar.tsx +0 -0
  536. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/ChartDataTable.test.tsx +0 -0
  537. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/ErrorBanner.test.tsx +0 -0
  538. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/Loading.test.tsx +0 -0
  539. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/OverflowMenu.test.tsx +0 -0
  540. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/Pill.test.tsx +0 -0
  541. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/SortHeaderCell.test.tsx +0 -0
  542. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/TabBar.test.tsx +0 -0
  543. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/index.ts +0 -0
  544. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/srOnly.ts +0 -0
  545. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/design/useChartTheme.ts +0 -0
  546. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useDocumentTitle.test.tsx +0 -0
  547. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useEquityViewport.test.ts +0 -0
  548. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useFetchByKey.test.ts +0 -0
  549. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useLiveAvailability.test.tsx +0 -0
  550. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useOrphanRuns.test.tsx +0 -0
  551. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useRunBacktest.test.tsx +0 -0
  552. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useScrollRestoration.test.tsx +0 -0
  553. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useStrategyHistorical.test.tsx +0 -0
  554. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useStrategyList.test.tsx +0 -0
  555. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useSyncedTimeRange.test.tsx +0 -0
  556. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useTheme.test.tsx +0 -0
  557. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useViewerSettings.lang.test.tsx +0 -0
  558. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useViewerSettings.shared.test.tsx +0 -0
  559. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useDebounce.ts +0 -0
  560. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useDocumentTitle.ts +0 -0
  561. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useEquityViewport.ts +0 -0
  562. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useFetchByKey.ts +0 -0
  563. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useIdeasList.ts +0 -0
  564. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useLiveAvailability.ts +0 -0
  565. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useLiveList.ts +0 -0
  566. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useOrphanRuns.ts +0 -0
  567. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useRecentStrategies.ts +0 -0
  568. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useScrollRestoration.ts +0 -0
  569. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useStrategyHistorical.ts +0 -0
  570. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useSyncedTimeRange.ts +0 -0
  571. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/hooks/useTheme.ts +0 -0
  572. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/i18n/__tests__/strings.test.ts +0 -0
  573. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/i18n/strings.ts +0 -0
  574. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/bestSharpe.test.ts +0 -0
  575. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/correlation.test.ts +0 -0
  576. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/distribution.test.ts +0 -0
  577. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/drawdown.test.ts +0 -0
  578. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/liveEquity.test.ts +0 -0
  579. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/metricLabel.test.ts +0 -0
  580. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/monteCarlo.properties.test.ts +0 -0
  581. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/monteCarlo.test.ts +0 -0
  582. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/optimizeHeatmap.test.ts +0 -0
  583. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/recipes.test.ts +0 -0
  584. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/searchParams.test.ts +0 -0
  585. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/searchStrategies.test.ts +0 -0
  586. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/shareCard.test.ts +0 -0
  587. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/shareCardMulti.test.ts +0 -0
  588. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/shareTweet.test.ts +0 -0
  589. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/symbolStats.test.ts +0 -0
  590. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/walkForward.test.ts +0 -0
  591. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/weekday.test.ts +0 -0
  592. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/assetClass.ts +0 -0
  593. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/bestSharpe.ts +0 -0
  594. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/correlation.ts +0 -0
  595. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/csv.ts +0 -0
  596. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/distribution.ts +0 -0
  597. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/drawdown.ts +0 -0
  598. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/exportPng.ts +0 -0
  599. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/liveEquity.ts +0 -0
  600. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/metricLabel.ts +0 -0
  601. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/monteCarlo.ts +0 -0
  602. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/optimizeHeatmap.ts +0 -0
  603. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/recipes.ts +0 -0
  604. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/searchParams.ts +0 -0
  605. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/searchStrategies.ts +0 -0
  606. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/shareCard.ts +0 -0
  607. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/shareTweet.ts +0 -0
  608. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/symbolStats.ts +0 -0
  609. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/walkForward.ts +0 -0
  610. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/lib/weekday.ts +0 -0
  611. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/main.tsx +0 -0
  612. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/pages/IdeasPage.tsx +0 -0
  613. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/pages/LivePage.tsx +0 -0
  614. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/BacktestScreen.stories.tsx +0 -0
  615. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/CompareScreen.stories.tsx +0 -0
  616. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/IdeasScreen.stories.tsx +0 -0
  617. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/LiveScreen.stories.tsx +0 -0
  618. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/OptimizeScreen.stories.tsx +0 -0
  619. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/StrategyScreen.tsx +0 -0
  620. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/WFOScreen.stories.tsx +0 -0
  621. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/__tests__/LiveScreen.test.tsx +0 -0
  622. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/__tests__/MaintenanceScreen.test.tsx +0 -0
  623. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/screens/strategy/SignalChartCard.tsx +0 -0
  624. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/src/test-setup.ts +0 -0
  625. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/tsconfig.app.json +0 -0
  626. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/tsconfig.e2e.json +0 -0
  627. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/tsconfig.json +0 -0
  628. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/frontend/tsconfig.node.json +0 -0
  629. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/lighthouserc.json +0 -0
  630. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/release.sh +0 -0
  631. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/README.en.md +0 -0
  632. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/README.md +0 -0
  633. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/__init__.py +0 -0
  634. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/__init__.py +0 -0
  635. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/compatibility_matrix.py +0 -0
  636. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/ideas_defs.py +0 -0
  637. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/pseudo_backtest.py +0 -0
  638. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/pseudo_grid.py +0 -0
  639. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/pseudo_wfo.py +0 -0
  640. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/strategy_defs.py +0 -0
  641. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/synthetic_ohlcv.py +0 -0
  642. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/_generators/writers.py +0 -0
  643. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/build_samples.py +0 -0
  644. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/ideas/ideas.json +0 -0
  645. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/bbands_breakout_v1.json +0 -0
  646. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/donchian_turtle_v1.json +0 -0
  647. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/ema_adx_macd_v1.json +0 -0
  648. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/macd_crossover_v1.json +0 -0
  649. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/range_reversion_v1.json +0 -0
  650. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/rsi_reversion_v1.json +0 -0
  651. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/sma_crossover_v1.json +0 -0
  652. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/supertrend_adx_v1.json +0 -0
  653. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/samples/sample-forge/forge.yaml +0 -0
  654. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/scripts/compare_sqlite_dump.py +0 -0
  655. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/scripts/generate_openapi.py +0 -0
  656. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/scripts/generate_thirdparty_js.py +0 -0
  657. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/scripts/verify_build_artifacts.py +0 -0
  658. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/forge_config.py +0 -0
  659. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/log_sanitize.py +0 -0
  660. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/__init__.py +0 -0
  661. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/ideas.py +0 -0
  662. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/optimization.py +0 -0
  663. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/__init__.py +0 -0
  664. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/historical.py +0 -0
  665. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/ideas.py +0 -0
  666. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/wfo.py +0 -0
  667. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/__init__.py +0 -0
  668. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/historical.py +0 -0
  669. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/ideas.py +0 -0
  670. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/live.py +0 -0
  671. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/maintenance.py +0 -0
  672. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/wfo.py +0 -0
  673. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/__init__.py +0 -0
  674. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/forge_cli.py +0 -0
  675. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/tuning.py +0 -0
  676. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/walk_forward.py +0 -0
  677. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/fonts-DJsrEZjK.css +0 -0
  678. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-400-normal-BLrFJfvD.woff +0 -0
  679. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-400-normal-iW8qmuJY.woff2 +0 -0
  680. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-500-normal-BFXNXuvF.woff2 +0 -0
  681. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-500-normal-pobXraBK.woff +0 -0
  682. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-600-normal-BgSTtRxb.woff2 +0 -0
  683. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-600-normal-D7bG6gX1.woff +0 -0
  684. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  685. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  686. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/react-CuMkScR3.js +0 -0
  687. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/react-CuMkScR3.js.map +0 -0
  688. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/rolldown-runtime-C0phanGV.js +0 -0
  689. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/source-serif-4-latin-600-normal-DMD1h6_f.woff +0 -0
  690. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/source-serif-4-latin-600-normal-DouSKlru.woff2 +0 -0
  691. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/useDocumentTitle-DPighAM_.js +0 -0
  692. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/useDocumentTitle-DPighAM_.js.map +0 -0
  693. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/visx-HscrFEDZ.js +0 -0
  694. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/visx-HscrFEDZ.js.map +0 -0
  695. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/favicon.svg +0 -0
  696. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/icons.svg +0 -0
  697. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/__init__.py +0 -0
  698. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/conftest.py +0 -0
  699. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/fixtures/build_e2e_fixture.py +0 -0
  700. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/repositories/__init__.py +0 -0
  701. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/repositories/test_ideas_reader.py +0 -0
  702. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/repositories/test_live_repo.py +0 -0
  703. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/repositories/test_optimization_repo.py +0 -0
  704. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/__init__.py +0 -0
  705. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_db_mode_write_paths.py +0 -0
  706. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_forge_yaml_integration.py +0 -0
  707. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_historical.py +0 -0
  708. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_ideas.py +0 -0
  709. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_strategies_source.py +0 -0
  710. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/routers/test_wfo.py +0 -0
  711. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/samples/__init__.py +0 -0
  712. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/samples/test_pseudo_backtest.py +0 -0
  713. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/samples/test_pseudo_grid.py +0 -0
  714. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/samples/test_pseudo_wfo.py +0 -0
  715. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/samples/test_sample_forge.py +0 -0
  716. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/samples/test_strategy_defs.py +0 -0
  717. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/samples/test_synthetic_ohlcv.py +0 -0
  718. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/samples/test_writers.py +0 -0
  719. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/schemas/__init__.py +0 -0
  720. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/schemas/test_schemas.py +0 -0
  721. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/services/__init__.py +0 -0
  722. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/services/test_historical.py +0 -0
  723. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/services/test_live.py +0 -0
  724. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/services/test_tuning.py +0 -0
  725. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/services/test_wfo.py +0 -0
  726. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/test_compare_sqlite_dump.py +0 -0
  727. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/test_db.py +0 -0
  728. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/test_dependencies.py +0 -0
  729. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/test_errors.py +0 -0
  730. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/test_forge_config.py +0 -0
  731. {alpha_visualizer-1.2.2 → alpha_visualizer-1.3.0}/tests/test_log_sanitize.py +0 -0
@@ -42,7 +42,8 @@ GPL/AGPL 混入がないことを確認した上で `THIRDPARTY_LICENSES.txt`
42
42
 
43
43
  - ライセンス名に `GPL` または `AGPL` を含むパッケージ
44
44
  - ただし以下は**開発専用(dev)**のため除外して判定する:
45
- - `pytest`, `ruff`, `httpx`, `bump-my-version`, `hypothesis`(devツール)
45
+ - `pytest`, `pytest-cov`, `ruff`, `httpx`, `bump-my-version`, `hypothesis`,
46
+ `mypy`, `pandas-stubs`, `types-pyyaml`(devツール)
46
47
  - `pip-licenses`, `prettytable`(監査ツール)
47
48
  - 除外リストは `pyproject.toml` の `[dependency-groups]` と乖離しやすいので、
48
49
  実行時に必ず突合し、乖離があればこのファイルも更新すること。
@@ -81,7 +82,8 @@ Step 1・Step 2 で問題がなければ以下を実行する。
81
82
 
82
83
  DEV_ONLY = {
83
84
  "alpha-visualizer",
84
- "pytest", "ruff", "httpx", "bump-my-version", "hypothesis",
85
+ "pytest", "pytest-cov", "ruff", "httpx", "bump-my-version", "hypothesis",
86
+ "mypy", "pandas-stubs", "types-pyyaml",
85
87
  "pip-licenses", "prettytable",
86
88
  }
87
89
 
@@ -37,7 +37,8 @@ GPL/AGPL 混入がないことを確認した上で `THIRDPARTY_LICENSES.txt`
37
37
 
38
38
  - ライセンス名に `GPL` または `AGPL` を含むパッケージ
39
39
  - ただし以下は**開発専用(dev)**のため除外して判定する:
40
- - `pytest`, `ruff`, `httpx`, `bump-my-version`, `hypothesis`(devツール)
40
+ - `pytest`, `pytest-cov`, `ruff`, `httpx`, `bump-my-version`, `hypothesis`,
41
+ `mypy`, `pandas-stubs`, `types-pyyaml`(devツール)
41
42
  - `pip-licenses`, `prettytable`(監査ツール)
42
43
  - 除外リストは `pyproject.toml` の `[dependency-groups]` と乖離しやすいので、
43
44
  実行時に必ず突合し、乖離があればこのファイルも更新すること。
@@ -76,7 +77,8 @@ Step 1・Step 2 で問題がなければ以下を実行する。
76
77
 
77
78
  DEV_ONLY = {
78
79
  "alpha-visualizer",
79
- "pytest", "ruff", "httpx", "bump-my-version", "hypothesis",
80
+ "pytest", "pytest-cov", "ruff", "httpx", "bump-my-version", "hypothesis",
81
+ "mypy", "pandas-stubs", "types-pyyaml",
80
82
  "pip-licenses", "prettytable",
81
83
  }
82
84
 
@@ -26,8 +26,12 @@ jobs:
26
26
  - name: Lint (ruff)
27
27
  run: uv run ruff check src/ tests/
28
28
 
29
- - name: Test (pytest)
30
- run: uv run pytest tests/ -q
29
+ - name: Type check (mypy)
30
+ run: uv run mypy
31
+
32
+ - name: Test (pytest + coverage)
33
+ # fail_under は pyproject.toml [tool.coverage.report] で管理 (issue #393)
34
+ run: uv run pytest tests/ -q --cov
31
35
 
32
36
  frontend:
33
37
  runs-on: ubuntu-latest
@@ -55,8 +59,9 @@ jobs:
55
59
  - name: Lint (eslint)
56
60
  run: pnpm run lint
57
61
 
58
- - name: Test (vitest)
59
- run: pnpm run test:ci
62
+ - name: Test (vitest + coverage)
63
+ # しきい値は frontend/vite.config.ts test.coverage.thresholds (issue #393)
64
+ run: pnpm run test:coverage
60
65
 
61
66
  - name: Build (tsc -b && vite build)
62
67
  run: pnpm run build
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/repositories/backtest_results.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- ['backtest_results', 'carry_adjusted_json', 'name', 'rn', 'source']
4
+ ['backtest_results', 'carry_adjusted_json', 'name', 'params_json', 'rn', 'source']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/schemas/health.py
2
+ # hypothesis_version: 6.161.6
3
+
4
+ []
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/db.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- ['[]', 'all_trials_json', 'asset_class', 'asset_type', 'avg_holding_days', 'avg_loss', 'avg_slippage_bps', 'avg_win', 'backtest_equity_json', 'backtest_results', 'best_metric_name', 'best_metric_value', 'best_params_json', 'broker', 'buy_hold_curve_json', 'cagr_pct', 'calmar_ratio', 'carry_adjusted_json', 'cash', 'commission', 'created_at', 'definition_json', 'duration_seconds', 'entry_at', 'entry_price', 'equity_curve_json', 'equity_json', 'exit_at', 'exit_price', 'exit_reason', 'gross_pnl', 'holding_seconds', 'id', 'live_summaries', 'live_trades', 'max_drawdown_pct', 'metrics_json', 'n_trials', 'name', 'net_pnl', 'notes', 'oos_start', 'optimization_runs', 'portfolio_id', 'positions_json', 'profit_factor', 'qty', 'receipts_count', 'return_pct', 'run_at', 'run_id', 'sharpe_ratio', 'side', 'slippage_bps', 'snapshot_id', 'sortino_ratio', 'source', 'source_file', 'strategies', 'strategy_id', 'strategy_version', 'sub_strategies_json', 'symbol', 'symbols', 'tags', 'timeframe', 'total_commission', 'total_return_pct', 'total_trades', 'total_value', 'trade_id', 'trades_json', 'updated_at', 'version', 'win_rate_pct']
4
+ ['[]', 'all_trials_json', 'asset_class', 'asset_type', 'avg_holding_days', 'avg_loss', 'avg_slippage_bps', 'avg_win', 'backtest_equity_json', 'backtest_results', 'best_metric_name', 'best_metric_value', 'best_params_json', 'broker', 'buy_hold_curve_json', 'cagr_pct', 'calmar_ratio', 'carry_adjusted_json', 'cash', 'commission', 'created_at', 'definition_json', 'duration_seconds', 'entry_at', 'entry_price', 'equity_curve_json', 'equity_json', 'exit_at', 'exit_price', 'exit_reason', 'gross_pnl', 'holding_seconds', 'id', 'live_summaries', 'live_trades', 'max_drawdown_pct', 'metrics_json', 'n_trials', 'name', 'net_pnl', 'notes', 'oos_start', 'optimization_runs', 'params_json', 'portfolio_id', 'positions_json', 'profit_factor', 'qty', 'receipts_count', 'return_pct', 'run_at', 'run_id', 'sharpe_ratio', 'side', 'slippage_bps', 'snapshot_id', 'sortino_ratio', 'source', 'source_file', 'strategies', 'strategy_id', 'strategy_version', 'sub_strategies_json', 'symbol', 'symbols', 'tags', 'timeframe', 'total_commission', 'total_return_pct', 'total_trades', 'total_value', 'trade_id', 'trades_json', 'updated_at', 'version', 'win_rate_pct']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/services/backtest.py
2
+ # hypothesis_version: 6.161.6
3
+
4
+ [0.0, 1.0, 100.0, 252.0, 365.25, '+00:00', '-', '1d', 'Z', 'aggregates', 'annual_returns', 'avg_holding_days', 'build_detail', 'buy_hold_curve', 'buy_hold_equity', 'cagr_pct', 'calmar_ratio', 'carry_adjusted', 'compute_drawdown', 'daily_returns', 'date', 'dates', 'direction', 'drawdown', 'end', 'entry_date', 'entry_price', 'equity', 'equity_curve', 'exit_date', 'exit_price', 'filter_by_since', 'holding_days', 'id', 'index', 'is_cutoff', 'is_metrics', 'label_names', 'long', 'mae_pct', 'max_drawdown_pct', 'metrics', 'mfe_pct', 'monthly_returns', 'n_states', 'oos_metrics', 'oos_start', 'params', 'params_json', 'parse_dt', 'per_trade_mae_pct', 'per_trade_mfe_pct', 'period', 'periods', 'pnl', 'profit_factor', 'regime_breakdown', 'regime_series', 'return_pct', 'row_to_dict', 'run_at', 'run_id', 'shape_annual_returns', 'shape_equity', 'shape_regime_series', 'shape_trades', 'sharpe_ratio', 'short', 'signal', 'sl_price', 'sortino_ratio', 'source', 'split_metrics', 'start', 'states', 'strategy_id', 'strategy_name', 'summarize_row', 'symbol', 'timeframe', 'total_return_pct', 'total_trades', 'tp_price', 'trade_analysis', 'trades', 'value', 'values', 'win_rate_pct']
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/routers/results.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- ['/results', '/results/{run_id}', 'router']
4
+ ['/results', '/results/{run_id}', 'router', '読み飛ばす件数', '返す最大件数(省略時は全件・従来互換)']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/routers/optimize.py
2
+ # hypothesis_version: 6.161.6
3
+
4
+ [0.0, 'avg_holding_days', 'best_metric', 'best_metric_name', 'best_metric_value', 'cagr_pct', 'calmar_ratio', 'cvar_95_pct', 'is_sharpe', 'is_start', 'max_drawdown_pct', 'metric', 'metric_name', 'metrics', 'n_trials', 'omega_ratio', 'oos_sharpe', 'oos_start', 'params', 'pass', 'profit_factor', 'run_at', 'run_id', 'runs', 'sharpe_ratio', 'sortino_ratio', 'strategy_id', 'total_return_pct', 'total_trades', 'trials', 'var_95_pct', 'win_rate_pct', 'window_id', 'バックテスト DB が見つかりません', '最適化結果の取得に失敗: %s (%s)']
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/__init__.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- ['1.2.2']
4
+ ['1.3.0']
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/routers/live.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- [200, '/live', '/live/{strategy_id}', 'aligned', 'backtest', 'diff', 'has_summary', 'has_trades', 'kind', 'live', 'period', 'position', 'router', 'run_id', 'strategy', 'strategy_id', 'summary', 'trades', 'warnings']
4
+ [200, '/live', '/live/{strategy_id}', 'aligned', 'backtest', 'diff', 'has_summary', 'has_trades', 'kind', 'live', 'period', 'position', 'router', 'run_id', 'strategy', 'strategy_id', 'summary', 'trades', 'warnings', '対応するバックテスト実行が見つかりません', '対象期間にバックテストの取引がありません']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/app.py
2
+ # hypothesis_version: 6.161.6
3
+
4
+ [404, 422, 500, 1024, '*', '.', '/api', '/health', '/{full_path:path}', '127.0.0.1', '::1', 'Cache-Control', 'Not Found', 'alpha-visualizer', 'api/', 'assets/', 'body', 'code', 'detail', 'index.html', 'loc', 'localhost', 'msg', 'no-cache', 'ok', 'static', 'testserver', 'validation error']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/cli.py
2
+ # hypothesis_version: 6.161.6
3
+
4
+ [0.1, 8000, '*', '--forge-config', '--forge-dir', '--host', '--log-level', '--no-open', '--port', '.', '127.0.0.1', '::1', 'alpha-visualizer', 'debug', 'error', 'forge_config', 'info', 'localhost', 'log_level', 'no_open', 'sample-forge', 'samples', 'serve', 'use_bundled_samples', 'warning', 'yellow', 'ポート番号 / Port number']
@@ -1,4 +1,4 @@
1
1
  # file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/errors.py
2
2
  # hypothesis_version: 6.161.6
3
3
 
4
- [400, 404, 409, 429, 500]
4
+ [400, 404, 409, 429, 500, 503, 'forge_cli_not_found']
@@ -4,163 +4,295 @@ alpha-visualizer の全バージョン変更履歴です。
4
4
 
5
5
  > **License Change Notice (v0.6.0+):** v0.6.0 以降、ライセンスは MIT から Apache-2.0 に変更されました。v0.5.0 以前のリリースは引き続き MIT ライセンスです。詳細は [LICENSE](LICENSE) を参照してください。
6
6
 
7
+ > **⚠ 破壊的変更の履歴 / Breaking changes:**
8
+ > - **v1.0.0**: 安定版 GA。以降は semver に従います / Stable GA; semver applies from here on.
9
+ > - **v0.3.0**: CLI コマンド名を `vis` から `alpha-vis` にリネーム(macOS 標準 `/usr/bin/vis` との衝突回避)。旧名は使えません / The CLI was renamed from `vis` to `alpha-vis`; the old name no longer works.
10
+
11
+ _(EN) Entries below are generated from Conventional Commits (Japanese). Group names: 新機能 = Features, バグ修正 = Bug fixes, リファクタリング = Refactoring, パフォーマンス改善 = Performance, ドキュメント = Docs, テスト = Tests, その他 = Chore. Breaking commits are tagged 破壊的変更._
12
+
13
+
14
+ ## [unreleased]
15
+
16
+
17
+ ### CI/CD
18
+
19
+ - カバレッジ計測(fail_under/thresholds)と mypy を導入し既存型エラーを 0 化 (#449)
7
20
 
8
- ## [1.2.1] - 2026-07-28
9
21
 
10
22
 
11
23
  ### その他
12
24
 
13
- - バージョン 1.2.1 にバンプ
25
+ - CLI help・起動メッセージを日英併記にし DB 不在警告へ次の一歩を追加 (#435)
26
+
27
+
28
+ - UI 文言の平易化・統一(snake_case 露出/独自用語/CLI 前提文言/表記ゆれ) (#439)
14
29
 
15
30
 
16
31
 
17
32
  ### ドキュメント
18
33
 
19
- - CHANGELOG v1.2.0 に更新
34
+ - README に同梱サンプルの導線・Live/Ideas スクショ・FAQ リンクを追加する (#410)
20
35
 
21
36
 
22
37
 
23
38
  ### バグ修正
24
39
 
25
- - audit-licenses dev 除外を名前の表記ゆれに耐えるようにする (#340)
40
+ - 起動後に生成された DB を初回アクセス時に遅延接続する (#403)
26
41
 
27
42
 
28
- - **deps**: Dependabot のセキュリティアラート 2 件とバージョン更新 3 件を解消 (#341)
43
+ - IS/OOS 指標を按分疑似値から equity 実分割計算に変更 (#404)
29
44
 
30
45
 
31
- - **browse**: 最終実行の日付が折り返して行高が 55px に膨らむ問題を修正 (#344)
46
+ - 存在しない戦略 ID の詳細ページを永久スケルトンでなく 404 表示にする (#405)
32
47
 
33
48
 
34
- - **design**: 未定義のまま参照されていた CSS 変数 3 種を定義し、再発をテストで防ぐ (#345)
49
+ - 最大DDの色判定を正値規約に合わせ絶対値ベースに統一する (#406)
35
50
 
36
51
 
52
+ - 最適化タブの試行数を DB の n_trials で表示し optimize run を切替可能にする (#407)
37
53
 
38
- ## [1.2.0] - 2026-07-27
39
54
 
55
+ - 未定義の /api/* パスが SPA フォールバックで 200 + HTML を返す問題を修正 (#415)
40
56
 
41
- ### その他
42
57
 
43
- - バージョン 1.2.0 にバンプ
58
+ - アプリバージョンを UI・/health・OpenAPI で実バージョンに連動させる (#416)
44
59
 
45
60
 
61
+ - forge CLI 未検出を 503 + 機械可読 code で返し UI は表示言語のみの文言にする (#417)
46
62
 
47
- ### テスト
48
63
 
49
- - **e2e**: Live ページを撮影対象に追加し、overlay の色・重複ラベル・TZ 依存を解消 (#332)
64
+ - 整数値の指標・取引数が「119.0」「0.00」と小数付きで表示される問題を修正 (#418)
50
65
 
51
66
 
67
+ - 0 トレード run のセンチネル Sharpe/Sortino -100 を注釈付き「—」表示にする (#419)
52
68
 
53
- ### ドキュメント
54
69
 
55
- - CHANGELOG v1.1.0 に更新
70
+ - Compare サイドカードの null 指標が 0.00 表示になり指標テーブルと食い違う問題を修正 (#420)
56
71
 
57
72
 
73
+ - WFO/IS-OOS 画面のウィンドウ数・分割比サブタイトルを実データから導出する (#421)
58
74
 
59
- ### バグ修正
60
75
 
61
- - **compare**: 戦略未選択時に永久ローディングになる不具合を修正 (#328)
76
+ - サーバー再起動後のジョブ 404 を握りつぶして永久ポーリングし続ける問題を修正 (#422)
77
+
78
+
79
+ - 再実行ダイアログの「上書きされます」を実挙動(追加・履歴保持)の説明に修正 (#423)
80
+
81
+
82
+ - 422 の detail を文字列へ正規化し Browse に ErrorBanner + 再試行導線を追加 (#424)
83
+
84
+
85
+ - ConfirmDialog に初期フォーカス・フォーカストラップ・復帰を実装し modal として機能させる (#425)
86
+
87
+
88
+ - Compare/Detail の内部スクロールコンテナをキーボード操作可能な region にする (#426)
89
+
90
+
91
+ - 375px のフィルタ行崩れ・指標列不可視と 1280px の右列切れを修正 (#427)
92
+
93
+
94
+ - Compare ヘッダーに全銘柄・期間を表示し差分記号を ▲改善/▼悪化 + 凡例に統一 (#438)
95
+
96
+
97
+ - レシピ行の比較チェックボックス aria-label に strategy_id を含めて一意化 (#451)
98
+
99
+
100
+
101
+ ### パフォーマンス改善
102
+
103
+ - GZip 圧縮と静的アセットの Cache-Control を追加する (#408)
104
+
105
+
106
+ - 一覧 API をスカラー SELECT + limit/offset 化し compare ids に上限を設ける (#409)
107
+
108
+
109
+ - 戦略 1 件取得の全件ロード線形走査を解消(DB は WHERE・JSON は対象ファイル直読み) (#428)
110
+
111
+
112
+ - sparkline を軽量 API 化し 2MB フル詳細の 2 連 fetch とエラー握りつぶしを解消 (#429)
62
113
 
63
114
 
64
115
 
65
116
  ### 新機能
66
117
 
67
- - **live**: Live ページの Equity 表示をリッチ化(KPI・ベンチマーク比較・建玉テーブル) (#329)
118
+ - 指標ツールチップを全指標に拡張し目安値付き・タッチ/キーボード対応にする (#411)
68
119
 
69
120
 
70
- - **browse**: ブラウズ画面をレシピ単位に畳んで見やすくする(SP1) (#333)
121
+ - アプリ内ヘルプ導線を追加する(docs/FAQ リンク・IS/OOS・WFO の概念説明) (#412)
71
122
 
72
123
 
73
- - **browse**: 銘柄カバレッジ表で未実行レシピの偏りを可視化する(SP2) (#338)
124
+ - forge 計算済みの未表示指標を UI に出す(コスト実績・Kelly・期待値・勝率CI 等) (#413)
74
125
 
75
126
 
76
- - **maintenance**: 孤児バックテスト結果を掃除する /maintenance 画面を追加(SP3 フェーズ2 (#339)
127
+ - Run History 2 run 選択の比較ビューを追加する(指標差分 + equity 重ね描き) (#414)
77
128
 
78
129
 
130
+ - ルート共通の errorElement を追加し描画例外を i18n エラー画面 + 回復導線で受ける (#430)
79
131
 
80
- ## [1.1.0] - 2026-07-24
81
132
 
133
+ - POST /api/run に同時実行ガードを追加し上限超過は 429 を返す (#431)
82
134
 
83
- ### その他
84
135
 
85
- - バージョン 1.1.0 にバンプ
136
+ - アプリロガー設定と --log-level を追加しポート衝突時は案内付きで失敗させる (#432)
86
137
 
87
138
 
139
+ - 非 loopback バインド時の明示警告と TrustedHostMiddleware を導入する (#433)
88
140
 
89
- ### テスト
90
141
 
91
- - **e2e**: TV チャートの Playwright ビジュアル回帰テストを追加 (#325)
142
+ - P&L・エクイティ・評価額に開始時評価額と口座通貨建ての前提を明示する (#434)
92
143
 
93
144
 
145
+ - モンテカルロに全期間累積の明記・趣旨説明・用語ツールチップを追加 (#436)
94
146
 
95
- ### ドキュメント
96
147
 
97
- - CHANGELOG v1.0.1 に更新
148
+ - Browse に新規戦略作成(既存から複製)への導線を追加 (#437)
149
+
150
+
151
+ - 取引タブに保有期間分布ヒストグラム(勝敗色分け + ビン別勝率/平均リターン表)を追加 (#440)
152
+
153
+
154
+ - 取引一覧に方向・勝敗・期間フィルタとページサイズ選択を追加 (#441)
155
+
156
+
157
+ - rolling チャートに年率ボラティリティの系列切替を追加 (#442)
158
+
159
+
160
+ - メトリクスタブに期間プリセット(YTD/1Y/3Y/5Y)のサブピリオド再計算を追加 (#443)
161
+
162
+
163
+ - Performance タブに年別サマリテーブル(リターン/ベンチ超過/年次MaxDD/取引数/勝率)を追加 (#444)
164
+
165
+
166
+ - 全 run 横断の Runs ページ(検索・銘柄・期間・Sharpe 下限・ソート)を追加 (#445)
167
+
168
+
169
+ - フルレポート(印刷用ビュー→PDF 保存)ページと Detail からの導線を追加 (#446)
170
+
171
+
172
+ - Compare にポートフォリオ合成(ウェイト指定・加重合成エクイティ・分散効果の確認)を追加 (#447)
173
+
174
+
175
+ - 任意ベンチマーク銘柄のオーバーレイと対ベンチ指標(β/α/IR/超過)を追加 (#448)
176
+
177
+
178
+ - run の実行時パラメータを Detail に表示する(forge#1356 の params_json 連携) (#450)
179
+
180
+
181
+ - エクイティチャートに対数スケール(Log)トグルを追加 (#452)
182
+
183
+
184
+ - 戦略のお気に入り(スター + Starred レンズ・localStorage 永続)を追加 (#453)
185
+
98
186
 
187
+ - 最適化ビューにパラメータ重要度(Spearman 順位相関)バーを追加 (#454)
188
+
189
+
190
+
191
+ ## [1.2.2] - 2026-07-29
99
192
 
100
193
 
101
194
  ### バグ修正
102
195
 
103
- - CodeQL の指摘 7 件を解消 (#326)
196
+ - **browse**: 戦略選択時に sparkline 取得が無限ループして API を叩き続ける問題を修正 (#346)
104
197
 
105
198
 
106
199
 
107
- ### 新機能
200
+ ## [1.2.1] - 2026-07-28
108
201
 
109
- - **charts**: EquityDrawdownPaneTV にレジーム背景バンドを実装 (issue #317) (#323)
110
202
 
203
+ ### バグ修正
111
204
 
112
- - **charts**: TV チャートの双方向 viewport sync を実装 (issue #318) (#324)
205
+ - audit-licenses dev 除外を名前の表記ゆれに耐えるようにする (#340)
113
206
 
114
207
 
208
+ - **deps**: Dependabot のセキュリティアラート 2 件とバージョン更新 3 件を解消 (#341)
115
209
 
116
- ## [1.0.1] - 2026-07-23
210
+
211
+ - **browse**: 最終実行の日付が折り返して行高が 55px に膨らむ問題を修正 (#344)
117
212
 
118
213
 
119
- ### CI/CD
214
+ - **design**: 未定義のまま参照されていた CSS 変数 3 種を定義し、再発をテストで防ぐ (#345)
120
215
 
121
- - **deps**: bump actions/setup-node from 6 to 7 (#310)
122
216
 
123
217
 
218
+ ## [1.2.0] - 2026-07-27
124
219
 
125
- ### その他
126
220
 
127
- - **charts**: lightweight-charts PoC 後の clean-up とインフラ整備 (#320)
221
+ ### テスト
128
222
 
223
+ - **e2e**: Live ページを撮影対象に追加し、overlay の色・重複ラベル・TZ 依存を解消 (#332)
129
224
 
130
- - **deps**: Dependabot の依存更新とセキュリティアラート 7 件を解消 (#322)
131
225
 
132
226
 
133
- - バージョン 1.0.1 にバンプ
227
+ ### バグ修正
134
228
 
229
+ - **compare**: 戦略未選択時に永久ローディングになる不具合を修正 (#328)
135
230
 
136
231
 
137
- ### ドキュメント
138
232
 
139
- - CHANGELOG を v1.0.0 に更新
233
+ ### 新機能
234
+
235
+ - **live**: Live ページの Equity 表示をリッチ化(KPI・ベンチマーク比較・建玉テーブル) (#329)
236
+
237
+
238
+ - **browse**: ブラウズ画面をレシピ単位に畳んで見やすくする(SP1) (#333)
239
+
240
+
241
+ - **browse**: 銘柄カバレッジ表で未実行レシピの偏りを可視化する(SP2) (#338)
242
+
243
+
244
+ - **maintenance**: 孤児バックテスト結果を掃除する /maintenance 画面を追加(SP3 フェーズ2) (#339)
245
+
246
+
247
+
248
+ ## [1.1.0] - 2026-07-24
249
+
250
+
251
+ ### テスト
252
+
253
+ - **e2e**: TV チャートの Playwright ビジュアル回帰テストを追加 (#325)
140
254
 
141
255
 
142
256
 
143
257
  ### バグ修正
144
258
 
145
- - **web**: EN 言語切替をナビ・チャート軸ロケール・Data table 表記に反映 (issue #315) (#316)
259
+ - CodeQL の指摘 7 件を解消 (#326)
146
260
 
147
261
 
148
- - **web**: 残存していた素テキストのローディング表示 6 箇所を共有 Loading へ移行 (issue #266) (#321)
149
262
 
263
+ ### 新機能
150
264
 
265
+ - **charts**: EquityDrawdownPaneTV にレジーム背景バンドを実装 (issue #317) (#323)
266
+
267
+
268
+ - **charts**: TV チャートの双方向 viewport sync を実装 (issue #318) (#324)
269
+
270
+
271
+
272
+ ## [1.0.1] - 2026-07-23
273
+
274
+
275
+ ### CI/CD
276
+
277
+ - **deps**: bump actions/setup-node from 6 to 7 (#310)
151
278
 
152
- ## [1.0.0] - 2026-07-21
153
279
 
154
280
 
155
281
  ### その他
156
282
 
157
- - バージョン 1.0.0 にバンプ
283
+ - **charts**: lightweight-charts PoC 後の clean-up とインフラ整備 (#320)
284
+
158
285
 
286
+ - **deps**: Dependabot の依存更新とセキュリティアラート 7 件を解消 (#322)
159
287
 
160
288
 
161
- ### ドキュメント
162
289
 
163
- - CHANGELOG を v0.9.0 に更新
290
+ ### バグ修正
291
+
292
+ - **web**: EN 言語切替をナビ・チャート軸ロケール・Data table 表記に反映 (issue #315) (#316)
293
+
294
+
295
+ - **web**: 残存していた素テキストのローディング表示 6 箇所を共有 Loading へ移行 (issue #266) (#321)
164
296
 
165
297
 
166
298
 
@@ -211,9 +343,6 @@ alpha-visualizer の全バージョン変更履歴です。
211
343
  - THIRDPARTY ライセンスを v0.9.0 向けに再生成
212
344
 
213
345
 
214
- - バージョン 0.9.0 にバンプ
215
-
216
-
217
346
 
218
347
  ### テスト
219
348
 
@@ -226,9 +355,6 @@ alpha-visualizer の全バージョン変更履歴です。
226
355
 
227
356
  ### ドキュメント
228
357
 
229
- - CHANGELOG を v0.8.0 に更新
230
-
231
-
232
358
  - pre-release を CI 委譲フローに刷新し audit-licenses の除外リストを現依存に同期 (#277)
233
359
 
234
360
 
@@ -331,9 +457,6 @@ alpha-visualizer の全バージョン変更履歴です。
331
457
  - **deps-dev**: bump vitest (#240)
332
458
 
333
459
 
334
- - バージョン 0.8.0 にバンプ
335
-
336
-
337
460
 
338
461
  ### ドキュメント
339
462
 
@@ -376,9 +499,6 @@ alpha-visualizer の全バージョン変更履歴です。
376
499
  - **deps**: bump starlette from 1.0.0 to 1.0.1 (#220)
377
500
 
378
501
 
379
- - バージョン 0.7.3 にバンプ
380
-
381
-
382
502
 
383
503
  ### バグ修正
384
504
 
@@ -401,17 +521,8 @@ alpha-visualizer の全バージョン変更履歴です。
401
521
 
402
522
 
403
523
 
404
- ### その他
405
-
406
- - バージョン 0.7.2 にバンプ
407
-
408
-
409
-
410
524
  ### ドキュメント
411
525
 
412
- - CHANGELOG を v0.7.1 に更新
413
-
414
-
415
526
  - **screenshots**: README スクショを主役が切れないよう撮り直し+相関ヒートマップ追加 (#219)
416
527
 
417
528
 
@@ -469,15 +580,6 @@ alpha-visualizer の全バージョン変更履歴です。
469
580
  - **deps-dev**: bump @vitejs/plugin-react in /frontend (#208)
470
581
 
471
582
 
472
- - バージョン 0.7.1 にバンプ
473
-
474
-
475
-
476
- ### ドキュメント
477
-
478
- - CHANGELOG を v0.7.0 に更新
479
-
480
-
481
583
 
482
584
  ## [0.7.0] - 2026-05-30
483
585
 
@@ -488,18 +590,6 @@ alpha-visualizer の全バージョン変更履歴です。
488
590
 
489
591
 
490
592
 
491
- ### その他
492
-
493
- - バージョン 0.7.0 にバンプ
494
-
495
-
496
-
497
- ### ドキュメント
498
-
499
- - CHANGELOG を v0.6.0 に更新
500
-
501
-
502
-
503
593
  ### バグ修正
504
594
 
505
595
  - **strategies**: use_db=true で DB 欠落時に JSON へ黙ってフォールバックせず Fail Loud (Closes #210) (#212)
@@ -520,25 +610,10 @@ alpha-visualizer の全バージョン変更履歴です。
520
610
  - ライセンスを MIT から Apache-2.0 に変更 (#201) [**破壊的変更**]
521
611
 
522
612
 
523
- - バージョン 0.6.0 にバンプ
524
-
525
-
526
-
527
- ### ドキュメント
528
-
529
- - CHANGELOG を v0.5.0 に更新
530
-
531
-
532
613
 
533
614
  ## [0.5.0] - 2026-05-18
534
615
 
535
616
 
536
- ### その他
537
-
538
- - バージョン 0.5.0 にバンプ
539
-
540
-
541
-
542
617
  ### バグ修正
543
618
 
544
619
  - **security**: CodeQL alert #42 #43 を解消 (#200)
@@ -548,12 +623,6 @@ alpha-visualizer の全バージョン変更履歴です。
548
623
  ## [0.4.0] - 2026-05-16
549
624
 
550
625
 
551
- ### その他
552
-
553
- - **release**: v0.4.0 — TradingView シグナル時系列チャートを正式リリース (#199)
554
-
555
-
556
-
557
626
  ### バグ修正
558
627
 
559
628
  - **api**: trades のソースを metrics_json.trades 優先に切替(PascalCase 互換) (#198)
@@ -578,17 +647,8 @@ alpha-visualizer の全バージョン変更履歴です。
578
647
  ## [0.3.0] - 2026-05-16
579
648
 
580
649
 
581
- ### その他
582
-
583
- - **release**: v0.3.0 — vis → alpha-vis CLI リネームを正式リリース (#193)
584
-
585
-
586
-
587
650
  ### ドキュメント
588
651
 
589
- - CHANGELOG を v0.2.0 に更新
590
-
591
-
592
652
  - CLAUDE.md の重複と冗長を整理 (#181)
593
653
 
594
654
 
@@ -682,9 +742,6 @@ alpha-visualizer の全バージョン変更履歴です。
682
742
  - Dependabot に storybook グループを追加 (#174)
683
743
 
684
744
 
685
- - バージョン 0.2.0 にバンプ
686
-
687
-
688
745
 
689
746
  ### テスト
690
747