alpha-visualizer 0.2.0__tar.gz → 0.4.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-0.2.0 → alpha_visualizer-0.4.0}/.agents/skills/source-command-audit-licenses/SKILL.md +1 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.claude/commands/audit-licenses.md +1 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.claude/commands/pre-release.md +15 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/PULL_REQUEST_TEMPLATE.md +5 -5
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/workflows/ci.yml +39 -21
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/workflows/lighthouse.yml +15 -10
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/workflows/release.yml +10 -5
- alpha_visualizer-0.2.0/.hypothesis/constants/069853a4f8389a49 → alpha_visualizer-0.4.0/.hypothesis/constants/11405f641e79317e +1 -1
- alpha_visualizer-0.4.0/.hypothesis/constants/14f71fc9be9bf497 +4 -0
- alpha_visualizer-0.4.0/.hypothesis/constants/4720ae237de2a683 +4 -0
- alpha_visualizer-0.4.0/.hypothesis/constants/4726660442f99a00 +4 -0
- alpha_visualizer-0.2.0/.hypothesis/constants/ac5661ce57db0685 → alpha_visualizer-0.4.0/.hypothesis/constants/6d12ac81de32365c +1 -1
- alpha_visualizer-0.4.0/.hypothesis/constants/ab4df659c6b192db +4 -0
- alpha_visualizer-0.2.0/.hypothesis/constants/cc9de77781f98ef2 → alpha_visualizer-0.4.0/.hypothesis/constants/dd2b62c354789905 +1 -1
- alpha_visualizer-0.4.0/CHANGELOG.md +398 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/CLAUDE.md +48 -97
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/CONTRIBUTING.en.md +11 -11
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/CONTRIBUTING.md +11 -11
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/PKG-INFO +12 -9
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/README.en.md +10 -8
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/README.md +10 -8
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/SECURITY.en.md +3 -3
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/SECURITY.md +3 -3
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/THIRDPARTY_LICENSES.txt +27 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/adr/0003-openapi-typescript-codegen.md +9 -9
- alpha_visualizer-0.4.0/docs/screenshots/en/strategy-signal-tv.png +0 -0
- alpha_visualizer-0.4.0/docs/screenshots/ja/strategy-signal-tv.png +0 -0
- alpha_visualizer-0.4.0/frontend/.npmrc +4 -0
- alpha_visualizer-0.4.0/frontend/.size-limit.json +20 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/CLAUDE.md +2 -2
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/README.md +12 -9
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/THIRDPARTY_FONTS.md +1 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/fixtures/README.md +1 -1
- alpha_visualizer-0.4.0/frontend/e2e/fixtures/forge/data/historical/SPY_1d.parquet +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/fixtures/forge/forge.yaml +2 -0
- alpha_visualizer-0.4.0/frontend/e2e/screenshots/equity-tv.spec.ts +55 -0
- alpha_visualizer-0.4.0/frontend/e2e/screenshots/strategy-signal-tv.spec.ts +49 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/openapi.json +191 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/package.json +11 -3
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/playwright.config.ts +1 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/playwright.screenshots.config.ts +2 -2
- alpha_visualizer-0.4.0/frontend/pnpm-lock.yaml +4251 -0
- alpha_visualizer-0.4.0/frontend/pnpm-workspace.yaml +5 -0
- alpha_visualizer-0.4.0/frontend/src/api/__tests__/client.test.ts +101 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/api/client.ts +16 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/api/types.gen.ts +108 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/api/types.ts +10 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/CompareEquityTV.stories.tsx +101 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/CompareEquityTV.tsx +189 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/EquityDrawdownPaneTV.stories.tsx +134 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/EquityDrawdownPaneTV.tsx +267 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/RollingMetricsChartTV.stories.tsx +71 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/RollingMetricsChartTV.tsx +142 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/StrategySignalChartTV.stories.tsx +243 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/StrategySignalChartTV.tsx +174 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/WFOEquityTV.stories.tsx +108 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/WFOEquityTV.tsx +124 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/__tests__/CompareEquityTV.test.tsx +105 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/__tests__/EquityDrawdownPaneTV.test.tsx +203 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/__tests__/RollingMetricsChartTV.test.tsx +97 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/__tests__/StrategySignalChartTV.test.tsx +250 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/__tests__/WFOEquityTV.test.tsx +150 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/__tests__/data.test.ts +124 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/__tests__/theme.test.ts +94 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/__tests__/trades.test.ts +219 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/data.ts +158 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/theme.ts +180 -0
- alpha_visualizer-0.4.0/frontend/src/charts/tv/trades.ts +181 -0
- alpha_visualizer-0.4.0/frontend/src/constants/featureFlags.ts +84 -0
- alpha_visualizer-0.4.0/frontend/src/hooks/__tests__/useStrategyHistorical.test.tsx +101 -0
- alpha_visualizer-0.4.0/frontend/src/hooks/useStrategyHistorical.ts +35 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/pages/DetailPage.tsx +9 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/BacktestScreen.tsx +180 -63
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/CompareScreen.tsx +9 -2
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/StrategyScreen.tsx +10 -2
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/WFOScreen.tsx +18 -6
- alpha_visualizer-0.4.0/frontend/src/screens/strategy/SignalChartCard.tsx +145 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/vite.config.ts +26 -11
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/pyproject.toml +5 -4
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/release.sh +15 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/README.en.md +3 -3
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/README.md +3 -3
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/build_samples.py +2 -2
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/__init__.py +1 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/app.py +2 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/cli.py +3 -3
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/forge_config.py +9 -0
- alpha_visualizer-0.4.0/src/alpha_visualizer/routers/historical.py +57 -0
- alpha_visualizer-0.4.0/src/alpha_visualizer/schemas/historical.py +41 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/schemas/results.py +9 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/services/backtest.py +36 -2
- alpha_visualizer-0.4.0/src/alpha_visualizer/services/historical.py +145 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/fixtures/build_e2e_fixture.py +48 -1
- alpha_visualizer-0.4.0/tests/routers/test_historical.py +102 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/samples/test_sample_forge.py +1 -1
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/schemas/test_schemas.py +69 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/services/test_backtest.py +137 -0
- alpha_visualizer-0.4.0/tests/services/test_historical.py +156 -0
- alpha_visualizer-0.4.0/tests/test_cli.py +52 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/test_forge_config.py +40 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/uv.lock +46 -1
- alpha_visualizer-0.2.0/.hypothesis/constants/150dfae7c64cc789 +0 -4
- alpha_visualizer-0.2.0/CHANGELOG.md +0 -103
- alpha_visualizer-0.2.0/frontend/.npmrc +0 -1
- alpha_visualizer-0.2.0/frontend/package-lock.json +0 -6387
- alpha_visualizer-0.2.0/tests/test_cli.py +0 -30
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.agents/skills/source-command-pre-release/SKILL.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.codex/hooks.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/ISSUE_TEMPLATE/bug_report_ja.yml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/ISSUE_TEMPLATE/feature_request_ja.yml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/codeql/README.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/codeql/codeql-config.yml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/dependabot.yml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.github/workflows/codeql.yml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.gitignore +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/.gitignore +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/0bf3463e8f4751b8 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/152293548dfa1dc4 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/291dc4c40995bea6 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/312a7aaf12a1fd47 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/331e194303817b32 +0 -0
- /alpha_visualizer-0.2.0/.hypothesis/constants/0a940b6ee0f389fc → /alpha_visualizer-0.4.0/.hypothesis/constants/368f2bae545df6be +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/3c70931be7dd2e4e +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/3f7b61d4b4a660e1 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/4577b97f57a8a832 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/4a1c4d1532cab28e +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/508b282112ab038e +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/5c12d3619c3f5d5b +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/757b1f8305546439 +0 -0
- /alpha_visualizer-0.2.0/.hypothesis/constants/0b2de83fbd38f835 → /alpha_visualizer-0.4.0/.hypothesis/constants/76d133f3ba15df09 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/7aec89cee7c5a592 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/7d3b67d825fc154a +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/7f90c9d611001617 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/828ed73d45fcee28 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/85f15eb28ea04389 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/89aaa48f251cd53d +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/8add761403393fca +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/96ca93165140d446 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/97982d8e7c8d4a95 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/a5b6e9cccb23f349 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/a636a4647020033d +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/b5803992d2e76cf5 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/b76328deebb21ae6 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/b9ff5bcd3a53e3a7 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/c5349cb90ddc7968 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/c5f6cf064ffb412d +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/c9814af66187059c +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/da39a3ee5e6b4b0d +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/e44a457d795e56c2 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/ea2d606acbfff989 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/ee487c54cd5ca7dc +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/eed5e66c16ae84b8 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/f7c4a04c97c0daf8 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/fa443af6269a6e02 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/.hypothesis/constants/ff4517cbfe51fea1 +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/AGENTS.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/CODE_OF_CONDUCT.en.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/CODE_OF_CONDUCT.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/LICENSE +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/cliff.toml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/adr/0001-pages-vs-screens.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/adr/0002-charts-visx-vs-components.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/adr/0004-condition-node-discriminated-union.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/lighthouse-ci.md +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/en/browse.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/en/compare.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/en/detail.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/en/ideas.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/en/optimize.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/en/strategy.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/ja/browse.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/ja/compare.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/ja/detail.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/ja/ideas.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/ja/optimize.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/docs/screenshots/ja/strategy.png +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/.gitignore +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/.storybook/main.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/.storybook/preview.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/fixtures/forge/data/ideas/ideas.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/fixtures/forge/data/results/backtest_results.db +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/fixtures/forge/data/strategies/momo_breakout.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/fixtures/forge/data/strategies/rsi_reversal.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/fixtures/forge/data/strategies/sma_cross.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/helpers/locators.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/samples/sample-fixture.spec.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/screenshots/capture.spec.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/specs/browse.spec.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/specs/compare.spec.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/specs/detail.spec.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/e2e/specs/i18n.spec.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/eslint.config.js +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/index.html +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/playwright.samples.config.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/public/favicon.svg +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/public/icons.svg +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/AnnualReturnsBarV.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/CompareEquityV.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/CorrelationHeatmapV.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/DrawdownChartV.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/EquityChartV.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/MAEMFEScatterV.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/MonthlyHeatmapV.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/OptimizeScatterV.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/Sparkline.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/Sparkline.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/__tests__/EquityChartV.regime.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/charts/visx/regimeBands.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/CommandPalette.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/DetailToolbar.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/MetricsSummaryBarV2.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/MetricsSummaryBarV2.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/RootLayout.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/SettingsToggles.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/StrategyHero.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/__tests__/CommandPalette.test.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/__tests__/CorrelationHeatmap.test.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/__tests__/responsive-styles.test.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/CompareFloatingBar.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/FilterBar.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/GroupByToggle.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/Heroline.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/RunHistoryTab.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/SavedViews.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/StrategySlidePanel.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/StrategyTable.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/SymbolAtlas.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/browser/SymbolCard.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/AnnualReturnsBar.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/CorrelationHeatmap.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/DrawdownDetailChart.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/MAEMFEScatter.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/MonteCarloChart.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/OptimizeScatter.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/ReturnDistributionChart.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/RollingMetricsChart.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/VaRChart.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/WFOTimeline.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/charts/WeekdayPerformanceChart.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/live/LiveTab.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/live/__tests__/LiveTab.test.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/live/__tests__/format.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/live/format.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/metrics/CompareTable.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/metrics/ISOOSMetrics.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/metrics/MetricsGrid.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/metrics/RegimeBreakdownCards.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/metrics/SignalQualityBadge.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/metrics/__tests__/evaluateGood.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/metrics/evaluate.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/nav.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/components/trades/TradeTable.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/constants/metricDefinitions.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/contexts/DashboardContext.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/contexts/dashboardConstants.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/a11y.css +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Button.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Card.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Chip.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Divider.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/KeyValue.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/OverflowMenu.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Pill.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Pill.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/SectionHeader.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Stat.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Stat.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/TabBar.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/Toolbar.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/__tests__/OverflowMenu.test.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/primitives/index.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/tokens.css +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/design/useChartTheme.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/__tests__/useEquityViewport.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/__tests__/useFetchByKey.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/__tests__/useScrollRestoration.test.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/__tests__/useStrategyList.test.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/__tests__/useTheme.test.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useBacktestData.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useDebounce.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useEquityViewport.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useFetchByKey.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useIdeasList.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useRecentStrategies.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useScrollRestoration.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useSparklineCache.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useStrategyList.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useSymbolStats.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/hooks/useTheme.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/i18n/__tests__/strings.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/i18n/strings.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/correlation.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/distribution.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/drawdown.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/format.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/monteCarlo.properties.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/monteCarlo.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/rolling.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/searchParams.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/searchStrategies.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/walkForward.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/__tests__/weekday.test.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/assetClass.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/correlation.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/csv.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/distribution.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/drawdown.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/exportPng.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/format.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/monteCarlo.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/rolling.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/searchParams.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/searchStrategies.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/walkForward.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/lib/weekday.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/main.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/mock/btData.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/pages/BrowsePage.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/pages/ComparePage.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/pages/IdeasPage.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/router.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/BacktestScreen.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/BrowseScreen.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/CompareScreen.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/ISOOSScreen.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/IdeasScreen.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/IdeasScreen.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/OptimizeScreen.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/OptimizeScreen.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/screens/WFOScreen.stories.tsx +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/src/test-setup.ts +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/tsconfig.app.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/tsconfig.e2e.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/tsconfig.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/frontend/tsconfig.node.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/lighthouserc.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/compatibility_matrix.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/ideas_defs.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/pseudo_backtest.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/pseudo_grid.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/pseudo_wfo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/strategy_defs.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/synthetic_ohlcv.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/_generators/writers.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/ideas/ideas.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/results/backtest_results.db +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/strategies/bbands_breakout_v1.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/strategies/donchian_turtle_v1.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/strategies/ema_adx_macd_v1.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/strategies/macd_crossover_v1.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/strategies/range_reversion_v1.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/strategies/rsi_reversion_v1.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/strategies/sma_crossover_v1.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/data/strategies/supertrend_adx_v1.json +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/samples/sample-forge/forge.yaml +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/scripts/generate_openapi.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/db.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/dependencies.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/errors.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/log_sanitize.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/repositories/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/repositories/backtest_results.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/repositories/ideas.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/repositories/live.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/repositories/optimization.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/repositories/strategies.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/routers/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/routers/ideas.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/routers/live.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/routers/optimize.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/routers/results.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/routers/run.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/routers/strategies.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/routers/wfo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/schemas/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/schemas/ideas.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/schemas/live.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/schemas/optimize.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/schemas/strategies.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/schemas/wfo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/services/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/services/live.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/src/alpha_visualizer/services/walk_forward.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/conftest.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/factories.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/repositories/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/repositories/test_backtest_results_repo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/repositories/test_ideas_reader.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/repositories/test_live_repo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/repositories/test_optimization_repo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/repositories/test_strategies_repo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/test_forge_yaml_integration.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/test_ideas.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/test_live.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/test_optimize.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/test_results.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/test_run.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/test_strategies.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/routers/test_wfo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/samples/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/samples/test_pseudo_backtest.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/samples/test_pseudo_grid.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/samples/test_pseudo_wfo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/samples/test_strategy_defs.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/samples/test_synthetic_ohlcv.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/samples/test_writers.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/schemas/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/services/__init__.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/services/test_backtest_properties.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/services/test_live.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/services/test_wfo.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/test_app.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/test_db.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/test_dependencies.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/test_errors.py +0 -0
- {alpha_visualizer-0.2.0 → alpha_visualizer-0.4.0}/tests/test_log_sanitize.py +0 -0
|
@@ -177,4 +177,4 @@ Step 1・Step 2 で問題がなければ以下を実行する。
|
|
|
177
177
|
- Python の仮想環境(`.venv`)が存在し `uv sync` 済みであることを前提とする。
|
|
178
178
|
- `pip-licenses` と `prettytable` はこのコマンド専用の監査ツールであり、`pyproject.toml` の
|
|
179
179
|
依存には含めない(`uv pip install` で都度インストールする)。
|
|
180
|
-
- フロントエンドの `node_modules/` が存在しない場合は `
|
|
180
|
+
- フロントエンドの `node_modules/` が存在しない場合は `pnpm install` を先に実行すること。
|
|
@@ -173,4 +173,4 @@ Step 1・Step 2 で問題がなければ以下を実行する。
|
|
|
173
173
|
- Python の仮想環境(`.venv`)が存在し `uv sync` 済みであることを前提とする。
|
|
174
174
|
- `pip-licenses` と `prettytable` はこのコマンド専用の監査ツールであり、`pyproject.toml` の
|
|
175
175
|
依存には含めない(`uv pip install` で都度インストールする)。
|
|
176
|
-
- フロントエンドの `node_modules/` が存在しない場合は `
|
|
176
|
+
- フロントエンドの `node_modules/` が存在しない場合は `pnpm install` を先に実行すること。
|
|
@@ -56,6 +56,18 @@ alpha-visualizer のリリース前にテスト・Lint を実行して検証し
|
|
|
56
56
|
# バージョンを bump してコミット・タグ
|
|
57
57
|
uv run bump-my-version bump ${PART}
|
|
58
58
|
|
|
59
|
+
# uv.lock 内の自己バージョンを追従させ、差分が出たら bump commit に取り込む
|
|
60
|
+
# (bump-my-version は pyproject.toml と __init__.py だけ更新するため、
|
|
61
|
+
# このステップを省くと uv.lock の自己バージョンが drift する)
|
|
62
|
+
NEW_VERSION=$(grep '^version' pyproject.toml | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
|
|
63
|
+
uv lock
|
|
64
|
+
if [[ -n "$(git status --porcelain uv.lock)" ]]; then
|
|
65
|
+
git tag -d "v${NEW_VERSION}"
|
|
66
|
+
git add uv.lock
|
|
67
|
+
git commit --amend --no-edit
|
|
68
|
+
git tag -a "v${NEW_VERSION}" -m "v${NEW_VERSION}"
|
|
69
|
+
fi
|
|
70
|
+
|
|
59
71
|
# PyPI に公開
|
|
60
72
|
uv build
|
|
61
73
|
uv publish
|
|
@@ -65,9 +77,12 @@ alpha-visualizer のリリース前にテスト・Lint を実行して検証し
|
|
|
65
77
|
git push
|
|
66
78
|
```
|
|
67
79
|
|
|
80
|
+
`release.sh` を使う場合はこれらをまとめて実行できる(`bash release.sh [patch|minor|major]`)。
|
|
81
|
+
|
|
68
82
|
## 注意
|
|
69
83
|
|
|
70
84
|
- `git push --tags` と `uv publish` は不可逆な操作のため、実行前に必ずユーザーの承認を取ること。
|
|
71
85
|
- `bump-my-version` が必要(`uv sync --all-groups` で導入済みのはず)。
|
|
72
86
|
- PyPI 認証情報(`UV_PUBLISH_TOKEN` 等)が設定されていること。
|
|
73
87
|
- リリース前に `/audit-licenses` を実行して `THIRDPARTY_LICENSES.txt` を最新化すること。
|
|
88
|
+
- bump 直後の `uv lock` ステップは省略しないこと。省略すると `uv.lock` 内の自己バージョン文字列が旧バージョンのまま取り残され、リリース後に lock drift が発生する。
|
|
@@ -37,11 +37,11 @@ Closes #
|
|
|
37
37
|
|
|
38
38
|
- [ ] バックエンドテスト: `uv run pytest tests/ -v`
|
|
39
39
|
- [ ] バックエンド Lint: `uv run ruff check src/ tests/`
|
|
40
|
-
- [ ] フロントエンドテスト: `cd frontend &&
|
|
41
|
-
- [ ] フロントエンド Lint: `cd frontend &&
|
|
42
|
-
- [ ] フロントエンドビルド: `cd frontend &&
|
|
43
|
-
- [ ] E2E(UI 変更時): `cd frontend &&
|
|
44
|
-
- [ ] スクリーンショット再撮影(UI 変更時): `cd frontend &&
|
|
40
|
+
- [ ] フロントエンドテスト: `cd frontend && pnpm run test:ci`
|
|
41
|
+
- [ ] フロントエンド Lint: `cd frontend && pnpm run lint`
|
|
42
|
+
- [ ] フロントエンドビルド: `cd frontend && pnpm run build`
|
|
43
|
+
- [ ] E2E(UI 変更時): `cd frontend && pnpm run e2e`
|
|
44
|
+
- [ ] スクリーンショット再撮影(UI 変更時): `cd frontend && pnpm run screenshots`
|
|
45
45
|
|
|
46
46
|
## スクリーンショット / Screenshots
|
|
47
47
|
|
|
@@ -37,24 +37,32 @@ jobs:
|
|
|
37
37
|
steps:
|
|
38
38
|
- uses: actions/checkout@v6
|
|
39
39
|
|
|
40
|
+
- name: Setup pnpm
|
|
41
|
+
uses: pnpm/action-setup@v4
|
|
42
|
+
with:
|
|
43
|
+
version: 11
|
|
44
|
+
|
|
40
45
|
- name: Set up Node.js
|
|
41
46
|
uses: actions/setup-node@v6
|
|
42
47
|
with:
|
|
43
48
|
node-version: '22'
|
|
44
|
-
cache: '
|
|
45
|
-
cache-dependency-path: frontend/
|
|
49
|
+
cache: 'pnpm'
|
|
50
|
+
cache-dependency-path: frontend/pnpm-lock.yaml
|
|
46
51
|
|
|
47
52
|
- name: Install dependencies
|
|
48
|
-
run:
|
|
53
|
+
run: pnpm install --frozen-lockfile
|
|
49
54
|
|
|
50
55
|
- name: Lint (eslint)
|
|
51
|
-
run:
|
|
56
|
+
run: pnpm run lint
|
|
52
57
|
|
|
53
58
|
- name: Test (vitest)
|
|
54
|
-
run:
|
|
59
|
+
run: pnpm run test:ci
|
|
55
60
|
|
|
56
61
|
- name: Build (tsc -b && vite build)
|
|
57
|
-
run:
|
|
62
|
+
run: pnpm run build
|
|
63
|
+
|
|
64
|
+
- name: Bundle size check (size-limit)
|
|
65
|
+
run: pnpm run size
|
|
58
66
|
|
|
59
67
|
openapi-types:
|
|
60
68
|
name: OpenAPI types drift check
|
|
@@ -74,26 +82,31 @@ jobs:
|
|
|
74
82
|
- name: Install Python dependencies
|
|
75
83
|
run: uv sync --all-extras
|
|
76
84
|
|
|
85
|
+
- name: Setup pnpm
|
|
86
|
+
uses: pnpm/action-setup@v4
|
|
87
|
+
with:
|
|
88
|
+
version: 11
|
|
89
|
+
|
|
77
90
|
- name: Set up Node.js
|
|
78
91
|
uses: actions/setup-node@v6
|
|
79
92
|
with:
|
|
80
93
|
node-version: '22'
|
|
81
|
-
cache: '
|
|
82
|
-
cache-dependency-path: frontend/
|
|
94
|
+
cache: 'pnpm'
|
|
95
|
+
cache-dependency-path: frontend/pnpm-lock.yaml
|
|
83
96
|
|
|
84
|
-
- name: Install
|
|
97
|
+
- name: Install pnpm dependencies
|
|
85
98
|
working-directory: frontend
|
|
86
|
-
run:
|
|
99
|
+
run: pnpm install --frozen-lockfile
|
|
87
100
|
|
|
88
101
|
- name: Regenerate OpenAPI schema and TS types
|
|
89
102
|
working-directory: frontend
|
|
90
|
-
run:
|
|
103
|
+
run: pnpm run gen
|
|
91
104
|
|
|
92
105
|
- name: Verify generated files are committed
|
|
93
106
|
run: |
|
|
94
107
|
if ! git diff --exit-code frontend/openapi.json frontend/src/api/types.gen.ts; then
|
|
95
108
|
echo "::error::OpenAPI schema or generated TS types are out of date."
|
|
96
|
-
echo "Run 'cd frontend &&
|
|
109
|
+
echo "Run 'cd frontend && pnpm run gen' locally and commit the changes."
|
|
97
110
|
exit 1
|
|
98
111
|
fi
|
|
99
112
|
|
|
@@ -172,43 +185,48 @@ jobs:
|
|
|
172
185
|
- name: Install Python dependencies
|
|
173
186
|
run: uv sync --all-extras
|
|
174
187
|
|
|
188
|
+
- name: Setup pnpm
|
|
189
|
+
uses: pnpm/action-setup@v4
|
|
190
|
+
with:
|
|
191
|
+
version: 11
|
|
192
|
+
|
|
175
193
|
- name: Set up Node.js
|
|
176
194
|
uses: actions/setup-node@v6
|
|
177
195
|
with:
|
|
178
196
|
node-version: '22'
|
|
179
|
-
cache: '
|
|
180
|
-
cache-dependency-path: frontend/
|
|
197
|
+
cache: 'pnpm'
|
|
198
|
+
cache-dependency-path: frontend/pnpm-lock.yaml
|
|
181
199
|
|
|
182
|
-
- name: Install
|
|
200
|
+
- name: Install pnpm dependencies
|
|
183
201
|
working-directory: frontend
|
|
184
|
-
run:
|
|
202
|
+
run: pnpm install --frozen-lockfile
|
|
185
203
|
|
|
186
204
|
- name: Cache Playwright browsers
|
|
187
205
|
uses: actions/cache@v5
|
|
188
206
|
id: playwright-cache
|
|
189
207
|
with:
|
|
190
208
|
path: ~/.cache/ms-playwright
|
|
191
|
-
key: playwright-${{ runner.os }}-${{ hashFiles('frontend/
|
|
209
|
+
key: playwright-${{ runner.os }}-${{ hashFiles('frontend/pnpm-lock.yaml') }}
|
|
192
210
|
|
|
193
211
|
- name: Install Playwright browsers (cold)
|
|
194
212
|
working-directory: frontend
|
|
195
213
|
if: steps.playwright-cache.outputs.cache-hit != 'true'
|
|
196
|
-
run:
|
|
214
|
+
run: pnpm exec playwright install --with-deps chromium
|
|
197
215
|
|
|
198
216
|
- name: Install Playwright system deps (cache hit)
|
|
199
217
|
working-directory: frontend
|
|
200
218
|
if: steps.playwright-cache.outputs.cache-hit == 'true'
|
|
201
|
-
run:
|
|
219
|
+
run: pnpm exec playwright install-deps chromium
|
|
202
220
|
|
|
203
221
|
- name: Build frontend
|
|
204
222
|
working-directory: frontend
|
|
205
|
-
run:
|
|
223
|
+
run: pnpm run build
|
|
206
224
|
|
|
207
225
|
- name: Run Playwright tests
|
|
208
226
|
working-directory: frontend
|
|
209
227
|
env:
|
|
210
228
|
CI: 'true'
|
|
211
|
-
run:
|
|
229
|
+
run: pnpm run e2e
|
|
212
230
|
|
|
213
231
|
- name: Upload Playwright report
|
|
214
232
|
if: always()
|
|
@@ -34,40 +34,45 @@ jobs:
|
|
|
34
34
|
- name: Install Python dependencies
|
|
35
35
|
run: uv sync --all-extras
|
|
36
36
|
|
|
37
|
+
- name: Setup pnpm
|
|
38
|
+
uses: pnpm/action-setup@v4
|
|
39
|
+
with:
|
|
40
|
+
version: 11
|
|
41
|
+
|
|
37
42
|
- name: Set up Node.js
|
|
38
43
|
uses: actions/setup-node@v6
|
|
39
44
|
with:
|
|
40
45
|
node-version: "22"
|
|
41
|
-
cache: "
|
|
42
|
-
cache-dependency-path: frontend/
|
|
46
|
+
cache: "pnpm"
|
|
47
|
+
cache-dependency-path: frontend/pnpm-lock.yaml
|
|
43
48
|
|
|
44
|
-
- name: Install
|
|
49
|
+
- name: Install pnpm dependencies
|
|
45
50
|
working-directory: frontend
|
|
46
|
-
run:
|
|
51
|
+
run: pnpm install --frozen-lockfile
|
|
47
52
|
|
|
48
53
|
- name: Build frontend (PROD bundle)
|
|
49
54
|
working-directory: frontend
|
|
50
|
-
run:
|
|
55
|
+
run: pnpm run build
|
|
51
56
|
|
|
52
|
-
- name: Start vis serve
|
|
57
|
+
- name: Start alpha-vis serve
|
|
53
58
|
run: |
|
|
54
|
-
uv run vis serve \
|
|
59
|
+
uv run alpha-vis serve \
|
|
55
60
|
--forge-dir frontend/e2e/fixtures/forge \
|
|
56
61
|
--port 8123 &
|
|
57
62
|
# 起動待機(最大 30 秒)
|
|
58
63
|
for i in $(seq 1 30); do
|
|
59
64
|
if curl -fsS http://127.0.0.1:8123/health > /dev/null 2>&1; then
|
|
60
|
-
echo "vis serve is up"
|
|
65
|
+
echo "alpha-vis serve is up"
|
|
61
66
|
exit 0
|
|
62
67
|
fi
|
|
63
68
|
sleep 1
|
|
64
69
|
done
|
|
65
|
-
echo "::error::vis serve did not start within 30s"
|
|
70
|
+
echo "::error::alpha-vis serve did not start within 30s"
|
|
66
71
|
exit 1
|
|
67
72
|
|
|
68
73
|
- name: Run Lighthouse CI
|
|
69
74
|
run: |
|
|
70
|
-
|
|
75
|
+
pnpm dlx @lhci/cli@0.14.0 autorun --config=./lighthouserc.json
|
|
71
76
|
env:
|
|
72
77
|
LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN || '' }}
|
|
73
78
|
|
|
@@ -35,20 +35,25 @@ jobs:
|
|
|
35
35
|
# Issue #149 以降、wheel に同梱する静的アセット
|
|
36
36
|
# (src/alpha_visualizer/static/) はリポジトリ管理対象外。
|
|
37
37
|
# PyPI 配布用に wheel build 直前で frontend を再生成する。
|
|
38
|
+
- name: Setup pnpm
|
|
39
|
+
uses: pnpm/action-setup@v4
|
|
40
|
+
with:
|
|
41
|
+
version: 11
|
|
42
|
+
|
|
38
43
|
- name: Set up Node.js
|
|
39
44
|
uses: actions/setup-node@v6
|
|
40
45
|
with:
|
|
41
46
|
node-version: "22"
|
|
42
|
-
cache: "
|
|
43
|
-
cache-dependency-path: frontend/
|
|
47
|
+
cache: "pnpm"
|
|
48
|
+
cache-dependency-path: frontend/pnpm-lock.yaml
|
|
44
49
|
|
|
45
|
-
- name: Install
|
|
50
|
+
- name: Install pnpm dependencies
|
|
46
51
|
working-directory: frontend
|
|
47
|
-
run:
|
|
52
|
+
run: pnpm install --frozen-lockfile
|
|
48
53
|
|
|
49
54
|
- name: Build frontend (PROD bundle)
|
|
50
55
|
working-directory: frontend
|
|
51
|
-
run:
|
|
56
|
+
run: pnpm run build
|
|
52
57
|
|
|
53
58
|
- name: Build
|
|
54
59
|
run: uv build
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
# file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/forge_config.py
|
|
2
2
|
# hypothesis_version: 6.152.4
|
|
3
3
|
|
|
4
|
-
['FORGE_CONFIG', 'backtest_results.db', 'data', 'db_filename', 'forge.yaml', 'ideas', 'ideas.json', 'ideas_path', 'live', 'output_path', 'path', 'report', 'results', 'strategies', 'strategies.db', 'use_db', 'utf-8']
|
|
4
|
+
['FORGE_CONFIG', 'backtest_results.db', 'data', 'db_filename', 'forge.yaml', 'historical', 'ideas', 'ideas.json', 'ideas_path', 'live', 'output_path', 'path', 'report', 'results', 'storage_path', 'strategies', 'strategies.db', 'use_db', 'utf-8']
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
# file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/services/backtest.py
|
|
2
|
+
# hypothesis_version: 6.152.4
|
|
3
|
+
|
|
4
|
+
[0.0, 1.0, 100.0, '+00:00', '-', '1d', 'Z', 'aggregates', 'annual_returns', 'avg_holding_days', 'build_detail', 'buy_hold_curve', 'buy_hold_equity', 'cagr_pct', 'calmar_ratio', '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', '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', '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/services/historical.py
|
|
2
|
+
# hypothesis_version: 6.152.4
|
|
3
|
+
|
|
4
|
+
['\x00', '%Y-%m-%d', '%Y-%m-%dT%H:%M:%S', '..', '/', 'Close', 'High', 'Low', 'Open', 'Volume', '\\', 'close', 'coerce', 'high', 'low', 'open', 'symbol が空です', 'time', 'volume']
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
# file: /home/runner/work/alpha-visualizer/alpha-visualizer/src/alpha_visualizer/cli.py
|
|
2
2
|
# hypothesis_version: 6.152.4
|
|
3
3
|
|
|
4
|
-
[8000, '--forge-config', '--forge-dir', '--host', '--no-open', '--port', '.', '127.0.0.1', 'alpha-visualizer', 'forge_config', 'no_open', 'sample-forge', 'samples', 'serve', 'use_bundled_samples', '
|
|
4
|
+
[8000, '--forge-config', '--forge-dir', '--host', '--no-open', '--port', '.', '127.0.0.1', 'alpha-visualizer', 'forge_config', 'no_open', 'sample-forge', 'samples', 'serve', 'use_bundled_samples', 'バインドするホスト名', 'ブラウザを自動で開かない', 'ポート番号']
|