alpha-visualizer 1.2.1__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.
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.agents/skills/source-command-audit-licenses/SKILL.md +4 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.claude/commands/audit-licenses.md +4 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/workflows/ci.yml +9 -4
- alpha_visualizer-1.2.1/.hypothesis/constants/4e26bccf25a8c1bb → alpha_visualizer-1.3.0/.hypothesis/constants/0caad6595136948b +1 -1
- alpha_visualizer-1.3.0/.hypothesis/constants/707dd0d075295200 +4 -0
- alpha_visualizer-1.2.1/.hypothesis/constants/bc34da97bbdf0eb3 → alpha_visualizer-1.3.0/.hypothesis/constants/7cea79ac6c0799bb +1 -1
- alpha_visualizer-1.3.0/.hypothesis/constants/8d9ea99caee79fd4 +4 -0
- alpha_visualizer-1.2.1/.hypothesis/constants/96ca93165140d446 → alpha_visualizer-1.3.0/.hypothesis/constants/98d0c8b0e6532609 +1 -1
- alpha_visualizer-1.3.0/.hypothesis/constants/99c8a89c4a9a7859 +4 -0
- alpha_visualizer-1.2.1/.hypothesis/constants/6114e271dda4d8b8 → alpha_visualizer-1.3.0/.hypothesis/constants/ac0d9ed38453cfd0 +1 -1
- alpha_visualizer-1.2.1/.hypothesis/constants/f2f91c7f9b44111d → alpha_visualizer-1.3.0/.hypothesis/constants/bfd4c6ca4462fe73 +1 -1
- alpha_visualizer-1.3.0/.hypothesis/constants/c4312fe8499bc1f7 +4 -0
- alpha_visualizer-1.3.0/.hypothesis/constants/dbe657c7851479a7 +4 -0
- alpha_visualizer-1.2.1/.hypothesis/constants/e4be0e30e6ada148 → alpha_visualizer-1.3.0/.hypothesis/constants/fa54b8596401d232 +1 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/CHANGELOG.md +199 -112
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/PKG-INFO +26 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/README.en.md +21 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/README.md +21 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/THIRDPARTY_LICENSES.txt +167 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/cliff.toml +10 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/.gitignore +3 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/results/backtest_results.db +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/eslint.config.js +2 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/openapi.json +222 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/package.json +2 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/pnpm-lock.yaml +126 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/api/client.ts +21 -5
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/api/types.gen.ts +128 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/api/types.ts +38 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/CompareEquityTV.tsx +4 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/EquityDrawdownPaneTV.tsx +38 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/RollingMetricsChartTV.tsx +55 -10
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/EquityDrawdownPaneTV.test.tsx +33 -1
- alpha_visualizer-1.3.0/frontend/src/charts/tv/__tests__/RollingMetricsChartTV.test.tsx +71 -0
- alpha_visualizer-1.3.0/frontend/src/components/AppFooter.tsx +107 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/AppNav.tsx +1 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/CommandPalette.tsx +28 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/DetailToolbar.tsx +4 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/MetricsSummaryBarV2.tsx +19 -76
- alpha_visualizer-1.3.0/frontend/src/components/RouteErrorScreen.tsx +90 -0
- alpha_visualizer-1.3.0/frontend/src/components/__tests__/AppFooter.test.tsx +102 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/CommandPalette.test.tsx +16 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/MetricsSummaryBarV2.test.tsx +25 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/RootLayout.test.tsx +25 -1
- alpha_visualizer-1.3.0/frontend/src/components/__tests__/RouteErrorScreen.test.tsx +61 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/responsive-styles.test.tsx +53 -0
- alpha_visualizer-1.3.0/frontend/src/components/browser/CreateStrategyEntry.tsx +87 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/FilterBar.tsx +6 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/RecipeRow.tsx +59 -5
- alpha_visualizer-1.3.0/frontend/src/components/browser/RunCompareView.tsx +228 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/RunHistoryTab.tsx +50 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/SavedViews.tsx +16 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/StrategyRow.tsx +17 -4
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/StrategySlidePanel.tsx +16 -4
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/StrategyTable.tsx +12 -2
- alpha_visualizer-1.3.0/frontend/src/components/browser/__tests__/CreateStrategyEntry.test.tsx +50 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/RecipeRow.test.tsx +55 -0
- alpha_visualizer-1.3.0/frontend/src/components/browser/__tests__/RunCompareView.test.tsx +131 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/RunHistoryTab.test.tsx +51 -2
- alpha_visualizer-1.3.0/frontend/src/components/browser/__tests__/StrategySlidePanel.test.tsx +112 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/StrategyTable.test.tsx +2 -0
- alpha_visualizer-1.3.0/frontend/src/components/charts/AnnualSummaryTable.tsx +118 -0
- alpha_visualizer-1.3.0/frontend/src/components/charts/HoldingPeriodChart.tsx +189 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/MonteCarloChart.tsx +54 -3
- alpha_visualizer-1.3.0/frontend/src/components/charts/__tests__/AnnualSummaryTable.test.tsx +33 -0
- alpha_visualizer-1.3.0/frontend/src/components/charts/__tests__/HoldingPeriodChart.test.tsx +39 -0
- alpha_visualizer-1.3.0/frontend/src/components/charts/__tests__/MonteCarloChart.test.tsx +53 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/jobs/JobRunnerCard.tsx +8 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/LiveKpiRow.tsx +1 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/LivePositionView.tsx +3 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/LiveTab.test.tsx +5 -4
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/CompareTable.tsx +29 -3
- alpha_visualizer-1.3.0/frontend/src/components/metrics/MetricInfoTip.tsx +121 -0
- alpha_visualizer-1.3.0/frontend/src/components/metrics/MetricsGrid.tsx +297 -0
- alpha_visualizer-1.3.0/frontend/src/components/metrics/PortfolioComposer.tsx +231 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/SignalQualityBadge.tsx +25 -4
- alpha_visualizer-1.3.0/frontend/src/components/metrics/SubperiodMetrics.tsx +182 -0
- alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/CompareTable.test.tsx +40 -0
- alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/MetricInfoTip.test.tsx +57 -0
- alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/MetricsGrid.hidden.test.tsx +84 -0
- alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/MetricsGrid.sentinel.test.tsx +38 -0
- alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/MetricsGrid.tooltip.test.tsx +86 -0
- alpha_visualizer-1.3.0/frontend/src/components/metrics/__tests__/SubperiodMetrics.test.tsx +38 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/__tests__/evaluateGood.test.ts +14 -8
- alpha_visualizer-1.3.0/frontend/src/components/metrics/evaluate.ts +29 -0
- alpha_visualizer-1.3.0/frontend/src/components/trades/TradeTable.tsx +379 -0
- alpha_visualizer-1.3.0/frontend/src/components/trades/__tests__/TradeTable.test.tsx +138 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/tuning/TuningPanel.tsx +7 -2
- alpha_visualizer-1.3.0/frontend/src/constants/__tests__/metricDefinitions.test.ts +106 -0
- alpha_visualizer-1.3.0/frontend/src/constants/helpLinks.ts +13 -0
- alpha_visualizer-1.3.0/frontend/src/constants/metricDefinitions.ts +397 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/ConfirmDialog.tsx +43 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Toolbar.tsx +12 -1
- alpha_visualizer-1.3.0/frontend/src/design/primitives/__tests__/ConfirmDialog.test.tsx +113 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/tokens.css +10 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useJobRunner.test.tsx +104 -5
- alpha_visualizer-1.3.0/frontend/src/hooks/__tests__/useSparklineCache.test.tsx +121 -0
- alpha_visualizer-1.3.0/frontend/src/hooks/__tests__/useStarredStrategies.test.ts +59 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useBacktestData.ts +16 -4
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useJobRunner.ts +27 -3
- alpha_visualizer-1.3.0/frontend/src/hooks/useSparklineCache.ts +50 -0
- alpha_visualizer-1.3.0/frontend/src/hooks/useStarredStrategies.ts +54 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useStrategyList.ts +29 -6
- alpha_visualizer-1.3.0/frontend/src/lib/__tests__/annualSummary.test.ts +44 -0
- alpha_visualizer-1.3.0/frontend/src/lib/__tests__/benchmark.test.ts +51 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/errorMessage.test.ts +31 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/format.test.ts +29 -13
- alpha_visualizer-1.3.0/frontend/src/lib/__tests__/holdingPeriod.test.ts +39 -0
- alpha_visualizer-1.3.0/frontend/src/lib/__tests__/paramImportance.test.ts +54 -0
- alpha_visualizer-1.3.0/frontend/src/lib/__tests__/portfolio.test.ts +71 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/rolling.test.ts +22 -0
- alpha_visualizer-1.3.0/frontend/src/lib/__tests__/sentinel.test.ts +27 -0
- alpha_visualizer-1.3.0/frontend/src/lib/__tests__/subperiod.test.ts +46 -0
- alpha_visualizer-1.3.0/frontend/src/lib/annualSummary.ts +60 -0
- alpha_visualizer-1.3.0/frontend/src/lib/benchmark.ts +106 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/errorMessage.ts +41 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/format.ts +8 -3
- alpha_visualizer-1.3.0/frontend/src/lib/holdingPeriod.ts +64 -0
- alpha_visualizer-1.3.0/frontend/src/lib/paramImportance.ts +82 -0
- alpha_visualizer-1.3.0/frontend/src/lib/portfolio.ts +93 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/rolling.ts +27 -0
- alpha_visualizer-1.3.0/frontend/src/lib/sentinel.ts +14 -0
- alpha_visualizer-1.3.0/frontend/src/lib/subperiod.ts +91 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/mock/btData.ts +11 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/pages/BrowsePage.tsx +13 -12
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/pages/ComparePage.tsx +5 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/pages/DetailPage.tsx +140 -17
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/pages/MaintenancePage.tsx +5 -2
- alpha_visualizer-1.3.0/frontend/src/pages/ReportPage.tsx +196 -0
- alpha_visualizer-1.3.0/frontend/src/pages/RunsPage.tsx +347 -0
- alpha_visualizer-1.3.0/frontend/src/pages/__tests__/BrowsePage.test.tsx +70 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/pages/__tests__/ComparePage.test.tsx +19 -0
- alpha_visualizer-1.3.0/frontend/src/pages/__tests__/DetailPage.test.tsx +190 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/pages/__tests__/MaintenancePage.test.tsx +23 -0
- alpha_visualizer-1.3.0/frontend/src/pages/__tests__/ReportPage.test.tsx +112 -0
- alpha_visualizer-1.3.0/frontend/src/pages/__tests__/RunsPage.test.tsx +102 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/router.tsx +14 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/BacktestScreen.tsx +259 -5
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/BrowseScreen.tsx +8 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/CompareScreen.tsx +63 -8
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/ISOOSScreen.tsx +44 -9
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/IdeasScreen.tsx +2 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/LiveScreen.tsx +1 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/MaintenanceScreen.tsx +31 -4
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/OptimizeScreen.tsx +123 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/WFOScreen.tsx +25 -5
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/__tests__/BacktestScreen.test.tsx +117 -0
- alpha_visualizer-1.3.0/frontend/src/screens/__tests__/CompareScreen.test.tsx +176 -0
- alpha_visualizer-1.3.0/frontend/src/screens/__tests__/ISOOSScreen.test.tsx +74 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/__tests__/OptimizeScreen.test.tsx +89 -2
- alpha_visualizer-1.3.0/frontend/src/screens/__tests__/WFOScreen.test.tsx +71 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/vite.config.ts +13 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/pyproject.toml +35 -4
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/results/backtest_results.db +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/__init__.py +1 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/app.py +102 -9
- alpha_visualizer-1.3.0/src/alpha_visualizer/cli.py +250 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/db.py +3 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/dependencies.py +135 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/errors.py +14 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/backtest_results.py +174 -30
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/live.py +3 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/strategies.py +78 -42
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/jobs.py +2 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/live.py +3 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/maintenance.py +2 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/optimize.py +75 -30
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/results.py +17 -2
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/run.py +38 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/strategies.py +57 -21
- alpha_visualizer-1.3.0/src/alpha_visualizer/schemas/health.py +16 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/optimize.py +16 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/results.py +3 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/strategies.py +11 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/backtest.py +130 -30
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/historical.py +2 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/jobs.py +4 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/live.py +1 -1
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/BrowsePage-D2iIruQk.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/BrowsePage-D2iIruQk.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ChartDataTable-BihRD5zB.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ChartDataTable-BihRD5zB.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ComparePage-r2Kn5IKU.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ComparePage-r2Kn5IKU.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/DetailPage-DhT4BIhx.js +5 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/DetailPage-DhT4BIhx.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/EquityDrawdownPaneTV-BsdmPyAa.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/EquityDrawdownPaneTV-BsdmPyAa.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/IdeasPage-DaPbS4Yf.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/IdeasPage-DaPbS4Yf.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LivePage-Q3WKgh88.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LivePage-Q3WKgh88.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LiveTab-CYKQnJC8.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/LiveTab-CYKQnJC8.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MaintenancePage-BP3oVssz.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MaintenancePage-BP3oVssz.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MetricsSummaryBarV2-gzksgQGt.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/MetricsSummaryBarV2-gzksgQGt.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReportPage-Cf2NnZ2Z.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReportPage-Cf2NnZ2Z.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReturnDistributionChart-0hD8xUWa.js +3 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ReturnDistributionChart-0hD8xUWa.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunLogDetails-BHJ70KpR.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunLogDetails-BHJ70KpR.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunsPage-DPkp5DAh.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/RunsPage-DPkp5DAh.js.map +1 -0
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/SettingsToggles-CH2UYPvW.js → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SettingsToggles-CNzWlW9f.js +2 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/SettingsToggles-CH2UYPvW.js.map → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SettingsToggles-CNzWlW9f.js.map +1 -1
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ShareCardButton-CN2fIICV.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/ShareCardButton-CN2fIICV.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SortHeaderCell-CetYtnjX.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/SortHeaderCell-CetYtnjX.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/errorMessage-BzDBBHE6.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/errorMessage-BzDBBHE6.js.map +1 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/format-D0fEne3x.js +2 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/format-D0fEne3x.js.map +1 -0
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/index-BedmvoEG.css → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/index-ngPg-0Y0.css +1 -1
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/index-xSIYNDJt.js +3 -0
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/index-xSIYNDJt.js.map +1 -0
- alpha_visualizer-1.2.1/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
- alpha_visualizer-1.2.1/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
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/tv-CrUgTguZ.js → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/tv-D3Zm-VpQ.js +2 -2
- alpha_visualizer-1.2.1/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
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/useBacktestData-XnSfmng5.js → alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/useBacktestData-B7fFEVc7.js +2 -2
- alpha_visualizer-1.3.0/src/alpha_visualizer/static/assets/useBacktestData-B7fFEVc7.js.map +1 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/index.html +3 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/factories.py +13 -4
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/repositories/test_backtest_results_repo.py +91 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/repositories/test_strategies_repo.py +120 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_jobs.py +13 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_live.py +3 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_maintenance.py +11 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_optimize.py +74 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_results.py +92 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_run.py +90 -2
- alpha_visualizer-1.3.0/tests/routers/test_sparkline.py +112 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_strategies.py +16 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_strategy_duplicate.py +3 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_strategy_save.py +3 -1
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/services/test_backtest.py +60 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/services/test_backtest_properties.py +63 -28
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/services/test_jobs.py +5 -3
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/test_app.py +204 -0
- alpha_visualizer-1.3.0/tests/test_cli.py +218 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/uv.lock +285 -4
- alpha_visualizer-1.2.1/.hypothesis/constants/1e3ce406f3635331 +0 -4
- alpha_visualizer-1.2.1/.hypothesis/constants/8f23e54ec81ce772 +0 -4
- alpha_visualizer-1.2.1/.hypothesis/constants/a27ca3dcb982038c +0 -4
- alpha_visualizer-1.2.1/.hypothesis/constants/afe5949501fc5b8f +0 -4
- alpha_visualizer-1.2.1/frontend/src/charts/tv/__tests__/RollingMetricsChartTV.test.tsx +0 -106
- alpha_visualizer-1.2.1/frontend/src/components/AppFooter.tsx +0 -47
- alpha_visualizer-1.2.1/frontend/src/components/__tests__/AppFooter.test.tsx +0 -42
- alpha_visualizer-1.2.1/frontend/src/components/metrics/MetricsGrid.tsx +0 -175
- alpha_visualizer-1.2.1/frontend/src/components/metrics/evaluate.ts +0 -19
- alpha_visualizer-1.2.1/frontend/src/components/trades/TradeTable.tsx +0 -225
- alpha_visualizer-1.2.1/frontend/src/components/trades/__tests__/TradeTable.test.tsx +0 -52
- alpha_visualizer-1.2.1/frontend/src/constants/metricDefinitions.ts +0 -48
- alpha_visualizer-1.2.1/frontend/src/design/primitives/__tests__/ConfirmDialog.test.tsx +0 -59
- alpha_visualizer-1.2.1/frontend/src/hooks/useSparklineCache.ts +0 -52
- alpha_visualizer-1.2.1/frontend/src/screens/__tests__/CompareScreen.test.tsx +0 -84
- alpha_visualizer-1.2.1/src/alpha_visualizer/cli.py +0 -117
- alpha_visualizer-1.2.1/src/alpha_visualizer/dependencies.py +0 -82
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/BrowsePage-y_9xKk4F.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/BrowsePage-y_9xKk4F.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/ChartDataTable-BJ5w8ojJ.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/ChartDataTable-BJ5w8ojJ.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/ComparePage-BQWVgWH4.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/ComparePage-BQWVgWH4.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/DetailPage-CXVkMosD.js +0 -5
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/DetailPage-CXVkMosD.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/IdeasPage-DOm3fHuz.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/IdeasPage-DOm3fHuz.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/LivePage-BKXWD5s_.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/LivePage-BKXWD5s_.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/LiveTab-BI1uTwbD.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/LiveTab-BI1uTwbD.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/MaintenancePage-B2nz-JsD.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/MaintenancePage-B2nz-JsD.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/ReturnDistributionChart-dFTJCaO7.js +0 -3
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/ReturnDistributionChart-dFTJCaO7.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/RunLogDetails-DxKjhiQM.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/RunLogDetails-DxKjhiQM.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/errorMessage-DKeqg0eT.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/errorMessage-DKeqg0eT.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/format-jy8n8zRe.js +0 -2
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/format-jy8n8zRe.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/index-BLCdAVgG.js +0 -3
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/index-BLCdAVgG.js.map +0 -1
- alpha_visualizer-1.2.1/src/alpha_visualizer/static/assets/useBacktestData-XnSfmng5.js.map +0 -1
- alpha_visualizer-1.2.1/tests/test_cli.py +0 -52
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.agents/skills/source-command-pre-release/SKILL.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.claude/commands/pre-release.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.codex/hooks.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/bug_report_ja.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/ISSUE_TEMPLATE/feature_request_ja.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/codeql/README.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/codeql/codeql-config.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/dependabot.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/workflows/codeql.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/workflows/lighthouse.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.github/workflows/release.yml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.gitignore +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/.gitignore +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/4c29ef3d0bedcdd8 → /alpha_visualizer-1.3.0/.hypothesis/constants/04b2c2a699e215f4 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/0bf3463e8f4751b8 +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/cd7fdfbe3f66457b → /alpha_visualizer-1.3.0/.hypothesis/constants/0e92a16981d06d97 +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/8add761403393fca → /alpha_visualizer-1.3.0/.hypothesis/constants/184fa6728d185660 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/296b8092179c9f55 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/312a7aaf12a1fd47 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/316886ef98081ce9 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/331e194303817b32 +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/1632901e1b51683b → /alpha_visualizer-1.3.0/.hypothesis/constants/36df1978b70731f9 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/43f703bafb1e4b04 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/4577b97f57a8a832 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/4726660442f99a00 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/4a1c4d1532cab28e +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/4b255f25d1067b71 +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/004709bbf59880d3 → /alpha_visualizer-1.3.0/.hypothesis/constants/4fd44198986300fe +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/508b282112ab038e +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/5c80be020ed7a646 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/5c9eb073058f11a0 +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/060c20f3c4ff96cb → /alpha_visualizer-1.3.0/.hypothesis/constants/5fca39058ed3753e +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/1fedef6b4cc376fe → /alpha_visualizer-1.3.0/.hypothesis/constants/6abf3e9a1356666c +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/757b1f8305546439 +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/a7474b0c3a5a5850 → /alpha_visualizer-1.3.0/.hypothesis/constants/7c9231be4d08456f +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/7f90c9d611001617 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/812d29a19e56a27b +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/fe325b4404aa1121 → /alpha_visualizer-1.3.0/.hypothesis/constants/906238816b505c1e +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/10d56fd11d90e91d → /alpha_visualizer-1.3.0/.hypothesis/constants/9c2871fc1ddbab71 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/a636a4647020033d +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/ab4df659c6b192db +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/b0487cda9820c053 → /alpha_visualizer-1.3.0/.hypothesis/constants/acddbf8018c5d884 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/af039261f357a5c1 +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/8bd584eda4b3b534 → /alpha_visualizer-1.3.0/.hypothesis/constants/b3227e2cf0b90fa4 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/b5541576e1e9aea7 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/b9ff5bcd3a53e3a7 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/c5349cb90ddc7968 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/d34317036474de6e +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/da39a3ee5e6b4b0d +0 -0
- /alpha_visualizer-1.2.1/.hypothesis/constants/fc009534004030e1 → /alpha_visualizer-1.3.0/.hypothesis/constants/e41b0128c49db70e +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/e44a457d795e56c2 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/ea2d606acbfff989 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/eed5e66c16ae84b8 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/f7c4a04c97c0daf8 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/fa443af6269a6e02 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/.hypothesis/constants/ff4517cbfe51fea1 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/AGENTS.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/CLAUDE.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/CODE_OF_CONDUCT.en.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/CODE_OF_CONDUCT.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/CONTRIBUTING.en.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/CONTRIBUTING.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/LICENSE +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/NOTICE +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/SECURITY.en.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/SECURITY.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/adr/0001-pages-vs-screens.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/adr/0002-charts-visx-vs-components.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/adr/0003-openapi-typescript-codegen.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/adr/0004-condition-node-discriminated-union.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/lighthouse-ci.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/backtest-tv.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/browse.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/compare-heatmap.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/compare.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/detail.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/ideas.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/live.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/optimize.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/strategy-signal-tv.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/en/strategy.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/backtest-tv.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/browse.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/compare-heatmap.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/compare.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/detail.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/ideas.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/live.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/optimize.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/strategy-signal-tv.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/screenshots/ja/strategy.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/superpowers/plans/2026-07-25-live-equity-rich.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/superpowers/plans/2026-07-26-browse-recipe-rollup.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/superpowers/plans/2026-07-27-browse-symbol-coverage.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/superpowers/plans/2026-07-27-maintenance-orphan-runs.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/superpowers/specs/2026-07-25-live-equity-rich-design.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/superpowers/specs/2026-07-26-browse-recipe-rollup-design.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/superpowers/specs/2026-07-27-browse-symbol-coverage-design.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/docs/superpowers/specs/2026-07-27-maintenance-orphan-runs-design.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/.npmrc +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/.size-limit.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/.storybook/main.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/.storybook/preview.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/CLAUDE.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/README.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/THIRDPARTY_FONTS.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/README.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/historical/SPY_1d.parquet +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/ideas/ideas.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/dual_symbol_qqq.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/dual_symbol_spy.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v2.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/ema_trend_v3.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/idle_recipe_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/idle_recipe_v2.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/momo_breakout.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/no_symbol_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/rsi_reversal.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/data/strategies/sma_cross.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/fixtures/forge/forge.yaml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/helpers/locators.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/samples/sample-fixture.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/screenshots/capture.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/screenshots/equity-tv.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/screenshots/strategy-signal-tv.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/specs/browse.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/specs/compare.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/specs/detail.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/specs/i18n.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/specs/maintenance.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/specs/share.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/visual/README.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/visual/__snapshots__/linux/equity-drawdown-tv.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/visual/__snapshots__/linux/strategy-signal-tv.png +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/e2e/visual/tv-charts.spec.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/index.html +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/playwright.config.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/playwright.samples.config.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/playwright.screenshots.config.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/playwright.visual.config.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/pnpm-workspace.yaml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/public/favicon.svg +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/public/icons.svg +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/api/__tests__/client.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/CompareEquityTV.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/EquityDrawdownPaneTV.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/RollingMetricsChartTV.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/StrategySignalChartTV.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/StrategySignalChartTV.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/WFOEquityTV.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/WFOEquityTV.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/CompareEquityTV.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/StrategySignalChartTV.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/WFOEquityTV.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/data.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/regimeBands.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/theme.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/__tests__/trades.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/data.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/regimeBands.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/theme.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/tv/trades.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/AnnualReturnsBarV.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/CorrelationHeatmapV.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/MAEMFEScatterV.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/MonthlyHeatmapV.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/OptimizeHeatmapV.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/OptimizeScatterV.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/Sparkline.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/charts/visx/Sparkline.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/ConfirmActionButton.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/MetricsSummaryBarV2.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/RootLayout.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/RunLogDetails.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/SettingsToggles.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/ShareCardButton.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/StrategyHero.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/AppNav.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/CorrelationHeatmap.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/SettingsToggles.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/ShareCardButton.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/__tests__/ShareCardXButton.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/CollapsibleSection.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/CompareFloatingBar.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/GroupByToggle.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/Heroline.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/StrategyTableFooter.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/SymbolCoverageTable.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/CollapsibleSection.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/FilterBar.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/StrategyRow.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/StrategyTableFooter.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/browser/__tests__/SymbolCoverageTable.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/AnnualReturnsBar.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/CorrelationHeatmap.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/DrawdownDetailChart.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/MAEMFEScatter.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/OptimizeHeatmap.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/OptimizeScatter.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/ReturnDistributionChart.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/VaRChart.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/WFOTimeline.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/charts/WeekdayPerformanceChart.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/LivePositionsTable.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/LiveTab.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/SummaryCard.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/LiveKpiRow.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/LivePositionView.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/LivePositionsTable.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/__tests__/format.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/live/format.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/CarryAdjustedCard.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/ISOOSMetrics.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/RegimeBreakdownCards.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/metrics/__tests__/SignalQualityBadge.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/tuning/DuplicateStrategyCard.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/tuning/__tests__/DuplicateStrategyCard.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/components/tuning/__tests__/TuningPanel.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/constants/runSource.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/contexts/DashboardContext.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/contexts/dashboardConstants.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/__tests__/definedTokens.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/__tests__/noHardcodedColors.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/__tests__/tokens.contrast.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/a11y.css +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Button.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Card.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/ChartDataTable.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Chip.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Divider.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/ErrorBanner.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/KeyValue.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Loading.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/OverflowMenu.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Pill.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Pill.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/SectionHeader.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/SortHeaderCell.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Stat.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/Stat.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/TabBar.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/ChartDataTable.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/ErrorBanner.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/Loading.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/OverflowMenu.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/Pill.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/SortHeaderCell.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/__tests__/TabBar.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/index.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/primitives/srOnly.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/design/useChartTheme.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useDocumentTitle.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useEquityViewport.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useFetchByKey.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useLiveAvailability.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useOrphanRuns.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useRunBacktest.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useScrollRestoration.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useStrategyHistorical.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useStrategyList.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useSyncedTimeRange.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useTheme.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useViewerSettings.lang.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/__tests__/useViewerSettings.shared.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useDebounce.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useDocumentTitle.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useEquityViewport.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useFetchByKey.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useIdeasList.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useLiveAvailability.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useLiveList.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useOrphanRuns.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useRecentStrategies.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useScrollRestoration.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useStrategyHistorical.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useSyncedTimeRange.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/hooks/useTheme.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/i18n/__tests__/strings.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/i18n/strings.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/bestSharpe.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/correlation.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/distribution.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/drawdown.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/liveEquity.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/metricLabel.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/monteCarlo.properties.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/monteCarlo.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/optimizeHeatmap.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/recipes.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/searchParams.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/searchStrategies.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/shareCard.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/shareCardMulti.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/shareTweet.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/symbolStats.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/walkForward.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/__tests__/weekday.test.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/assetClass.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/bestSharpe.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/correlation.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/csv.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/distribution.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/drawdown.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/exportPng.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/liveEquity.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/metricLabel.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/monteCarlo.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/optimizeHeatmap.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/recipes.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/searchParams.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/searchStrategies.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/shareCard.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/shareTweet.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/symbolStats.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/walkForward.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/lib/weekday.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/main.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/pages/IdeasPage.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/pages/LivePage.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/BacktestScreen.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/CompareScreen.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/IdeasScreen.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/LiveScreen.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/OptimizeScreen.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/StrategyScreen.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/WFOScreen.stories.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/__tests__/LiveScreen.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/__tests__/MaintenanceScreen.test.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/screens/strategy/SignalChartCard.tsx +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/src/test-setup.ts +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/tsconfig.app.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/tsconfig.e2e.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/tsconfig.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/frontend/tsconfig.node.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/lighthouserc.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/release.sh +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/README.en.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/README.md +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/compatibility_matrix.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/ideas_defs.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/pseudo_backtest.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/pseudo_grid.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/pseudo_wfo.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/strategy_defs.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/synthetic_ohlcv.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/_generators/writers.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/build_samples.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/ideas/ideas.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/bbands_breakout_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/donchian_turtle_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/ema_adx_macd_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/macd_crossover_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/range_reversion_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/rsi_reversion_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/sma_crossover_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/data/strategies/supertrend_adx_v1.json +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/samples/sample-forge/forge.yaml +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/scripts/compare_sqlite_dump.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/scripts/generate_openapi.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/scripts/generate_thirdparty_js.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/scripts/verify_build_artifacts.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/forge_config.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/log_sanitize.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/ideas.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/repositories/optimization.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/historical.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/ideas.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/routers/wfo.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/historical.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/ideas.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/live.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/maintenance.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/schemas/wfo.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/forge_cli.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/tuning.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/services/walk_forward.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/fonts-DJsrEZjK.css +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-400-normal-BLrFJfvD.woff +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-400-normal-iW8qmuJY.woff2 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-500-normal-BFXNXuvF.woff2 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-500-normal-pobXraBK.woff +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-600-normal-BgSTtRxb.woff2 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/inter-tight-latin-600-normal-D7bG6gX1.woff +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/react-CuMkScR3.js +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/react-CuMkScR3.js.map +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/rolldown-runtime-C0phanGV.js +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/source-serif-4-latin-600-normal-DMD1h6_f.woff +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/source-serif-4-latin-600-normal-DouSKlru.woff2 +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/useDocumentTitle-DPighAM_.js +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/useDocumentTitle-DPighAM_.js.map +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/visx-HscrFEDZ.js +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/assets/visx-HscrFEDZ.js.map +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/favicon.svg +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/src/alpha_visualizer/static/icons.svg +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/conftest.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/fixtures/build_e2e_fixture.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/repositories/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/repositories/test_ideas_reader.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/repositories/test_live_repo.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/repositories/test_optimization_repo.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_db_mode_write_paths.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_forge_yaml_integration.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_historical.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_ideas.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_strategies_source.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/routers/test_wfo.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/samples/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/samples/test_pseudo_backtest.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/samples/test_pseudo_grid.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/samples/test_pseudo_wfo.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/samples/test_sample_forge.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/samples/test_strategy_defs.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/samples/test_synthetic_ohlcv.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/samples/test_writers.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/schemas/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/schemas/test_schemas.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/services/__init__.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/services/test_historical.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/services/test_live.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/services/test_tuning.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/services/test_wfo.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/test_compare_sqlite_dump.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/test_db.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/test_dependencies.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/test_errors.py +0 -0
- {alpha_visualizer-1.2.1 → alpha_visualizer-1.3.0}/tests/test_forge_config.py +0 -0
- {alpha_visualizer-1.2.1 → 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
|
|
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
|
|
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:
|
|
30
|
-
run: uv run
|
|
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
|
-
|
|
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']
|
|
@@ -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']
|
|
@@ -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/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']
|
|
@@ -4,133 +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.
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+
_(EN) Entries below are generated from Conventional Commits (Japanese). Group names: 新機能 = Features, バグ修正 = Bug fixes, リファクタリング = Refactoring, パフォーマンス改善 = Performance, ドキュメント = Docs, テスト = Tests, その他 = Chore. Breaking commits are tagged 破壊的変更._
|
|
9
12
|
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
## [unreleased]
|
|
12
15
|
|
|
13
|
-
- バージョン 1.2.0 にバンプ
|
|
14
16
|
|
|
17
|
+
### CI/CD
|
|
15
18
|
|
|
19
|
+
- カバレッジ計測(fail_under/thresholds)と mypy を導入し既存型エラーを 0 化 (#449)
|
|
16
20
|
|
|
17
|
-
### テスト
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
|
|
23
|
+
### その他
|
|
24
|
+
|
|
25
|
+
- CLI の help・起動メッセージを日英併記にし DB 不在警告へ次の一歩を追加 (#435)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
- UI 文言の平易化・統一(snake_case 露出/独自用語/CLI 前提文言/表記ゆれ) (#439)
|
|
20
29
|
|
|
21
30
|
|
|
22
31
|
|
|
23
32
|
### ドキュメント
|
|
24
33
|
|
|
25
|
-
-
|
|
34
|
+
- README に同梱サンプルの導線・Live/Ideas スクショ・FAQ リンクを追加する (#410)
|
|
26
35
|
|
|
27
36
|
|
|
28
37
|
|
|
29
38
|
### バグ修正
|
|
30
39
|
|
|
31
|
-
-
|
|
40
|
+
- 起動後に生成された DB を初回アクセス時に遅延接続する (#403)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
- IS/OOS 指標を按分疑似値から equity 実分割計算に変更 (#404)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
- 存在しない戦略 ID の詳細ページを永久スケルトンでなく 404 表示にする (#405)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
- 最大DDの色判定を正値規約に合わせ絶対値ベースに統一する (#406)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
- 最適化タブの試行数を DB の n_trials で表示し optimize run を切替可能にする (#407)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
- 未定義の /api/* パスが SPA フォールバックで 200 + HTML を返す問題を修正 (#415)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
- アプリバージョンを UI・/health・OpenAPI で実バージョンに連動させる (#416)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
- forge CLI 未検出を 503 + 機械可読 code で返し UI は表示言語のみの文言にする (#417)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
- 整数値の指標・取引数が「119.0」「0.00」と小数付きで表示される問題を修正 (#418)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
- 0 トレード run のセンチネル Sharpe/Sortino -100 を注釈付き「—」表示にする (#419)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
- Compare サイドカードの null 指標が 0.00 表示になり指標テーブルと食い違う問題を修正 (#420)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
- WFO/IS-OOS 画面のウィンドウ数・分割比サブタイトルを実データから導出する (#421)
|
|
74
|
+
|
|
75
|
+
|
|
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)
|
|
32
113
|
|
|
33
114
|
|
|
34
115
|
|
|
35
116
|
### 新機能
|
|
36
117
|
|
|
37
|
-
-
|
|
118
|
+
- 指標ツールチップを全指標に拡張し目安値付き・タッチ/キーボード対応にする (#411)
|
|
38
119
|
|
|
39
120
|
|
|
40
|
-
-
|
|
121
|
+
- アプリ内ヘルプ導線を追加する(docs/FAQ リンク・IS/OOS・WFO の概念説明) (#412)
|
|
41
122
|
|
|
42
123
|
|
|
43
|
-
-
|
|
124
|
+
- forge 計算済みの未表示指標を UI に出す(コスト実績・Kelly・期待値・勝率CI 等) (#413)
|
|
44
125
|
|
|
45
126
|
|
|
46
|
-
-
|
|
127
|
+
- Run History に 2 run 選択の比較ビューを追加する(指標差分 + equity 重ね描き) (#414)
|
|
47
128
|
|
|
48
129
|
|
|
130
|
+
- ルート共通の errorElement を追加し描画例外を i18n エラー画面 + 回復導線で受ける (#430)
|
|
49
131
|
|
|
50
|
-
## [1.1.0] - 2026-07-24
|
|
51
132
|
|
|
133
|
+
- POST /api/run に同時実行ガードを追加し上限超過は 429 を返す (#431)
|
|
52
134
|
|
|
53
|
-
### その他
|
|
54
135
|
|
|
55
|
-
-
|
|
136
|
+
- アプリロガー設定と --log-level を追加しポート衝突時は案内付きで失敗させる (#432)
|
|
56
137
|
|
|
57
138
|
|
|
139
|
+
- 非 loopback バインド時の明示警告と TrustedHostMiddleware を導入する (#433)
|
|
58
140
|
|
|
59
|
-
### テスト
|
|
60
141
|
|
|
61
|
-
-
|
|
142
|
+
- P&L・エクイティ・評価額に開始時評価額と口座通貨建ての前提を明示する (#434)
|
|
62
143
|
|
|
63
144
|
|
|
145
|
+
- モンテカルロに全期間累積の明記・趣旨説明・用語ツールチップを追加 (#436)
|
|
64
146
|
|
|
65
|
-
### ドキュメント
|
|
66
147
|
|
|
67
|
-
-
|
|
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
|
+
|
|
68
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
|
+
|
|
186
|
+
|
|
187
|
+
- 最適化ビューにパラメータ重要度(Spearman 順位相関)バーを追加 (#454)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
## [1.2.2] - 2026-07-29
|
|
69
192
|
|
|
70
193
|
|
|
71
194
|
### バグ修正
|
|
72
195
|
|
|
73
|
-
-
|
|
196
|
+
- **browse**: 戦略選択時に sparkline 取得が無限ループして API を叩き続ける問題を修正 (#346)
|
|
74
197
|
|
|
75
198
|
|
|
76
199
|
|
|
77
|
-
|
|
200
|
+
## [1.2.1] - 2026-07-28
|
|
78
201
|
|
|
79
|
-
- **charts**: EquityDrawdownPaneTV にレジーム背景バンドを実装 (issue #317) (#323)
|
|
80
202
|
|
|
203
|
+
### バグ修正
|
|
81
204
|
|
|
82
|
-
-
|
|
205
|
+
- audit-licenses の dev 除外を名前の表記ゆれに耐えるようにする (#340)
|
|
83
206
|
|
|
84
207
|
|
|
208
|
+
- **deps**: Dependabot のセキュリティアラート 2 件とバージョン更新 3 件を解消 (#341)
|
|
85
209
|
|
|
86
|
-
## [1.0.1] - 2026-07-23
|
|
87
210
|
|
|
211
|
+
- **browse**: 最終実行の日付が折り返して行高が 55px に膨らむ問題を修正 (#344)
|
|
88
212
|
|
|
89
|
-
### CI/CD
|
|
90
213
|
|
|
91
|
-
- **
|
|
214
|
+
- **design**: 未定義のまま参照されていた CSS 変数 3 種を定義し、再発をテストで防ぐ (#345)
|
|
92
215
|
|
|
93
216
|
|
|
94
217
|
|
|
95
|
-
|
|
218
|
+
## [1.2.0] - 2026-07-27
|
|
96
219
|
|
|
97
|
-
- **charts**: lightweight-charts PoC 後の clean-up とインフラ整備 (#320)
|
|
98
220
|
|
|
221
|
+
### テスト
|
|
99
222
|
|
|
100
|
-
- **
|
|
223
|
+
- **e2e**: Live ページを撮影対象に追加し、overlay の色・重複ラベル・TZ 依存を解消 (#332)
|
|
101
224
|
|
|
102
225
|
|
|
103
|
-
- バージョン 1.0.1 にバンプ
|
|
104
226
|
|
|
227
|
+
### バグ修正
|
|
228
|
+
|
|
229
|
+
- **compare**: 戦略未選択時に永久ローディングになる不具合を修正 (#328)
|
|
105
230
|
|
|
106
231
|
|
|
107
|
-
### ドキュメント
|
|
108
232
|
|
|
109
|
-
|
|
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)
|
|
110
254
|
|
|
111
255
|
|
|
112
256
|
|
|
113
257
|
### バグ修正
|
|
114
258
|
|
|
115
|
-
-
|
|
259
|
+
- CodeQL の指摘 7 件を解消 (#326)
|
|
116
260
|
|
|
117
261
|
|
|
118
|
-
|
|
262
|
+
|
|
263
|
+
### 新機能
|
|
264
|
+
|
|
265
|
+
- **charts**: EquityDrawdownPaneTV にレジーム背景バンドを実装 (issue #317) (#323)
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
- **charts**: TV チャートの双方向 viewport sync を実装 (issue #318) (#324)
|
|
119
269
|
|
|
120
270
|
|
|
121
271
|
|
|
122
|
-
## [1.0.
|
|
272
|
+
## [1.0.1] - 2026-07-23
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
### CI/CD
|
|
276
|
+
|
|
277
|
+
- **deps**: bump actions/setup-node from 6 to 7 (#310)
|
|
278
|
+
|
|
123
279
|
|
|
124
280
|
|
|
125
281
|
### その他
|
|
126
282
|
|
|
127
|
-
-
|
|
283
|
+
- **charts**: lightweight-charts PoC 後の clean-up とインフラ整備 (#320)
|
|
128
284
|
|
|
129
285
|
|
|
286
|
+
- **deps**: Dependabot の依存更新とセキュリティアラート 7 件を解消 (#322)
|
|
130
287
|
|
|
131
|
-
### ドキュメント
|
|
132
288
|
|
|
133
|
-
|
|
289
|
+
|
|
290
|
+
### バグ修正
|
|
291
|
+
|
|
292
|
+
- **web**: EN 言語切替をナビ・チャート軸ロケール・Data table 表記に反映 (issue #315) (#316)
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
- **web**: 残存していた素テキストのローディング表示 6 箇所を共有 Loading へ移行 (issue #266) (#321)
|
|
134
296
|
|
|
135
297
|
|
|
136
298
|
|
|
@@ -181,9 +343,6 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
181
343
|
- THIRDPARTY ライセンスを v0.9.0 向けに再生成
|
|
182
344
|
|
|
183
345
|
|
|
184
|
-
- バージョン 0.9.0 にバンプ
|
|
185
|
-
|
|
186
|
-
|
|
187
346
|
|
|
188
347
|
### テスト
|
|
189
348
|
|
|
@@ -196,9 +355,6 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
196
355
|
|
|
197
356
|
### ドキュメント
|
|
198
357
|
|
|
199
|
-
- CHANGELOG を v0.8.0 に更新
|
|
200
|
-
|
|
201
|
-
|
|
202
358
|
- pre-release を CI 委譲フローに刷新し audit-licenses の除外リストを現依存に同期 (#277)
|
|
203
359
|
|
|
204
360
|
|
|
@@ -301,9 +457,6 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
301
457
|
- **deps-dev**: bump vitest (#240)
|
|
302
458
|
|
|
303
459
|
|
|
304
|
-
- バージョン 0.8.0 にバンプ
|
|
305
|
-
|
|
306
|
-
|
|
307
460
|
|
|
308
461
|
### ドキュメント
|
|
309
462
|
|
|
@@ -346,9 +499,6 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
346
499
|
- **deps**: bump starlette from 1.0.0 to 1.0.1 (#220)
|
|
347
500
|
|
|
348
501
|
|
|
349
|
-
- バージョン 0.7.3 にバンプ
|
|
350
|
-
|
|
351
|
-
|
|
352
502
|
|
|
353
503
|
### バグ修正
|
|
354
504
|
|
|
@@ -371,17 +521,8 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
371
521
|
|
|
372
522
|
|
|
373
523
|
|
|
374
|
-
### その他
|
|
375
|
-
|
|
376
|
-
- バージョン 0.7.2 にバンプ
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
524
|
### ドキュメント
|
|
381
525
|
|
|
382
|
-
- CHANGELOG を v0.7.1 に更新
|
|
383
|
-
|
|
384
|
-
|
|
385
526
|
- **screenshots**: README スクショを主役が切れないよう撮り直し+相関ヒートマップ追加 (#219)
|
|
386
527
|
|
|
387
528
|
|
|
@@ -439,15 +580,6 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
439
580
|
- **deps-dev**: bump @vitejs/plugin-react in /frontend (#208)
|
|
440
581
|
|
|
441
582
|
|
|
442
|
-
- バージョン 0.7.1 にバンプ
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
### ドキュメント
|
|
447
|
-
|
|
448
|
-
- CHANGELOG を v0.7.0 に更新
|
|
449
|
-
|
|
450
|
-
|
|
451
583
|
|
|
452
584
|
## [0.7.0] - 2026-05-30
|
|
453
585
|
|
|
@@ -458,18 +590,6 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
458
590
|
|
|
459
591
|
|
|
460
592
|
|
|
461
|
-
### その他
|
|
462
|
-
|
|
463
|
-
- バージョン 0.7.0 にバンプ
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
### ドキュメント
|
|
468
|
-
|
|
469
|
-
- CHANGELOG を v0.6.0 に更新
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
593
|
### バグ修正
|
|
474
594
|
|
|
475
595
|
- **strategies**: use_db=true で DB 欠落時に JSON へ黙ってフォールバックせず Fail Loud (Closes #210) (#212)
|
|
@@ -490,25 +610,10 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
490
610
|
- ライセンスを MIT から Apache-2.0 に変更 (#201) [**破壊的変更**]
|
|
491
611
|
|
|
492
612
|
|
|
493
|
-
- バージョン 0.6.0 にバンプ
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
### ドキュメント
|
|
498
|
-
|
|
499
|
-
- CHANGELOG を v0.5.0 に更新
|
|
500
|
-
|
|
501
|
-
|
|
502
613
|
|
|
503
614
|
## [0.5.0] - 2026-05-18
|
|
504
615
|
|
|
505
616
|
|
|
506
|
-
### その他
|
|
507
|
-
|
|
508
|
-
- バージョン 0.5.0 にバンプ
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
617
|
### バグ修正
|
|
513
618
|
|
|
514
619
|
- **security**: CodeQL alert #42 #43 を解消 (#200)
|
|
@@ -518,12 +623,6 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
518
623
|
## [0.4.0] - 2026-05-16
|
|
519
624
|
|
|
520
625
|
|
|
521
|
-
### その他
|
|
522
|
-
|
|
523
|
-
- **release**: v0.4.0 — TradingView シグナル時系列チャートを正式リリース (#199)
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
626
|
### バグ修正
|
|
528
627
|
|
|
529
628
|
- **api**: trades のソースを metrics_json.trades 優先に切替(PascalCase 互換) (#198)
|
|
@@ -548,17 +647,8 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
548
647
|
## [0.3.0] - 2026-05-16
|
|
549
648
|
|
|
550
649
|
|
|
551
|
-
### その他
|
|
552
|
-
|
|
553
|
-
- **release**: v0.3.0 — vis → alpha-vis CLI リネームを正式リリース (#193)
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
650
|
### ドキュメント
|
|
558
651
|
|
|
559
|
-
- CHANGELOG を v0.2.0 に更新
|
|
560
|
-
|
|
561
|
-
|
|
562
652
|
- CLAUDE.md の重複と冗長を整理 (#181)
|
|
563
653
|
|
|
564
654
|
|
|
@@ -652,9 +742,6 @@ alpha-visualizer の全バージョン変更履歴です。
|
|
|
652
742
|
- Dependabot に storybook グループを追加 (#174)
|
|
653
743
|
|
|
654
744
|
|
|
655
|
-
- バージョン 0.2.0 にバンプ
|
|
656
|
-
|
|
657
|
-
|
|
658
745
|
|
|
659
746
|
### テスト
|
|
660
747
|
|