powerquant-cli 0.2.6__py3-none-any.whl
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.
- powerquant_cli-0.2.6.dist-info/METADATA +62 -0
- powerquant_cli-0.2.6.dist-info/RECORD +355 -0
- powerquant_cli-0.2.6.dist-info/WHEEL +4 -0
- powerquant_cli-0.2.6.dist-info/entry_points.txt +2 -0
- powerquant_cli-0.2.6.dist-info/licenses/LICENSE +36 -0
- powerquant_cli-0.2.6.dist-info/licenses/licenses/LICENSE.vnpy +21 -0
- pqdata/__init__.py +6 -0
- pqdata/client.py +389 -0
- pqdata/download.py +60 -0
- pqdata/exceptions.py +14 -0
- pqdata/schema/__init__.py +1 -0
- pqdata/schema/adjustment_schema.py +67 -0
- pqdata/schema/bar_content_schema.py +24 -0
- pqdata/schema/bar_schema.py +56 -0
- pqdata/schema/corporate_action_schema.py +46 -0
- pqdata/schema/history_schema.py +61 -0
- pqdata/schema/pit_daily_window.py +16 -0
- pqdata/schema/query_schema.py +53 -0
- pqdata/schema/quote_schema.py +73 -0
- pqdata/schema/reference_schema.py +48 -0
- pqdata/schema/reliability_schema.py +152 -0
- quant_cli/__init__.py +0 -0
- quant_cli/api.py +39 -0
- quant_cli/app/__init__.py +0 -0
- quant_cli/app/backtest/__init__.py +0 -0
- quant_cli/app/backtest/cli/__init__.py +0 -0
- quant_cli/app/backtest/cli/local_backtest_cli.py +72 -0
- quant_cli/app/backtest/local_backtest_dependency.py +10 -0
- quant_cli/app/backtest/local_backtest_schema.py +49 -0
- quant_cli/app/backtest/repository/__init__.py +0 -0
- quant_cli/app/backtest/repository/backtest_local_repository.py +67 -0
- quant_cli/app/backtest/service/__init__.py +0 -0
- quant_cli/app/backtest/service/local_backtest_service.py +271 -0
- quant_cli/app/data/__init__.py +0 -0
- quant_cli/app/data/cli/__init__.py +0 -0
- quant_cli/app/data/cli/data_cli.py +78 -0
- quant_cli/app/data/data_dependency.py +35 -0
- quant_cli/app/data/repository/__init__.py +0 -0
- quant_cli/app/data/repository/parquet_repository.py +124 -0
- quant_cli/app/data/schema/__init__.py +0 -0
- quant_cli/app/data/schema/dataset_audit_schema.py +37 -0
- quant_cli/app/data/schema/dataset_request_schema.py +28 -0
- quant_cli/app/data/schema/parquet_file_schema.py +17 -0
- quant_cli/app/data/service/__init__.py +0 -0
- quant_cli/app/data/service/bar_cache_service.py +287 -0
- quant_cli/app/data/service/dataset_audit_service.py +137 -0
- quant_cli/app/data/service/dataset_load_service.py +115 -0
- quant_cli/app/data/service/dataset_prepare_service.py +187 -0
- quant_cli/app/factor/__init__.py +0 -0
- quant_cli/app/factor/cli/__init__.py +0 -0
- quant_cli/app/factor/cli/factor_definition_cli.py +81 -0
- quant_cli/app/factor/cli/local_factor_cli.py +102 -0
- quant_cli/app/factor/cli/local_selection_cli.py +58 -0
- quant_cli/app/factor/interface/__init__.py +0 -0
- quant_cli/app/factor/interface/local_selection_store.py +12 -0
- quant_cli/app/factor/local_factor_dependency.py +38 -0
- quant_cli/app/factor/repository/__init__.py +0 -0
- quant_cli/app/factor/repository/factor_local_repository.py +154 -0
- quant_cli/app/factor/repository/selection_local_repository.py +67 -0
- quant_cli/app/factor/schema/local_selection_schema.py +56 -0
- quant_cli/app/factor/service/__init__.py +0 -0
- quant_cli/app/factor/service/factor_data_prepare_service.py +181 -0
- quant_cli/app/factor/service/local_factor_query_service.py +146 -0
- quant_cli/app/factor/service/local_factor_service.py +120 -0
- quant_cli/app/factor/service/local_selection_service.py +139 -0
- quant_cli/app/job/__init__.py +0 -0
- quant_cli/app/job/cli/__init__.py +0 -0
- quant_cli/app/job/cli/local_job_cli.py +69 -0
- quant_cli/app/job/schema/__init__.py +0 -0
- quant_cli/app/job/schema/local_job_schema.py +11 -0
- quant_cli/app/job/service/__init__.py +0 -0
- quant_cli/app/job/service/local_job_service.py +60 -0
- quant_cli/app/quant_cli.py +49 -0
- quant_cli/app/research/__init__.py +0 -0
- quant_cli/app/research/cli/__init__.py +0 -0
- quant_cli/app/research/cli/local_research_cli.py +93 -0
- quant_cli/app/research/local_research_dependency.py +10 -0
- quant_cli/app/research/repository/__init__.py +0 -0
- quant_cli/app/research/repository/research_local_repository.py +67 -0
- quant_cli/app/research/schema/__init__.py +0 -0
- quant_cli/app/research/schema/local_research_schema.py +26 -0
- quant_cli/app/research/service/__init__.py +0 -0
- quant_cli/app/research/service/local_research_execution_service.py +105 -0
- quant_cli/app/research/service/local_research_service.py +101 -0
- quant_cli/app/strategy/__init__.py +0 -0
- quant_cli/app/strategy/cli/__init__.py +0 -0
- quant_cli/app/strategy/cli/strategy_cli.py +104 -0
- quant_cli/common/__init__.py +0 -0
- quant_cli/common/constants.py +7 -0
- quant_cli/common/database/__init__.py +0 -0
- quant_cli/common/database/duckdb_connection.py +30 -0
- quant_cli/common/http/__init__.py +0 -0
- quant_cli/common/http/definition_client.py +54 -0
- quant_cli/common/utils/__init__.py +0 -0
- quant_cli/common/utils/cli_utils.py +37 -0
- quant_cli/common/utils/platform_utils.py +11 -0
- quant_cli/common/utils/runtime_environment.py +12 -0
- quant_cli/examples/cached_factor_screen.py +165 -0
- quant_cli/examples/factors/ma_close_10.py +10 -0
- quant_cli/examples/factors/max_drawdown_20d.py +18 -0
- quant_cli/examples/factors/momentum_20d.py +13 -0
- quant_cli/examples/factors/multi_intraday_screen.py +16 -0
- quant_cli/examples/factors/risk_adjusted_momentum_20d.py +18 -0
- quant_cli/examples/factors/volume_ratio_5d.py +14 -0
- quant_cli/examples/factors/volume_weighted_close_pressure.py +14 -0
- quant_cli/examples/full_market_screen.py +189 -0
- quant_cli/examples/local_quant_validation.py +196 -0
- quant_cli/examples/published_definition_validation.py +219 -0
- quant_cli/examples/research/factor_pit_coverage.py +87 -0
- quant_cli/examples/research/ipo_first_day.py +348 -0
- quant_cli/examples/selection/README.md +59 -0
- quant_cli/examples/selection/backtest.json +18 -0
- quant_cli/examples/selection/buy_hold.py +7 -0
- quant_cli/examples/selection/compute.json +15 -0
- quant_cli/examples/selection/prepare.json +13 -0
- quant_cli/examples/selection/select.json +44 -0
- quant_cli/examples/strategies/bar_roundtrip.py +12 -0
- quant_cli/examples/strategies/buy_and_hold.py +11 -0
- quant_cli/examples/strategies/contrarian_timing.py +14 -0
- quant_cli/examples/strategies/factor_gate_vwap.py +22 -0
- quant_cli/examples/strategies/ipo_next_day_vwap.py +31 -0
- quant_cli/examples/strategies/momentum_timing.py +14 -0
- quant_cli/examples/strategies/monthly_equal_weight.py +19 -0
- quant_cli/examples/strategies/session_roundtrip.py +16 -0
- quant_cli/examples/strategies/trend_drawdown_guard.py +22 -0
- quant_cli/examples/strategies/weekly_risk_adjusted_rotation.py +61 -0
- quant_cli/examples/unified_snapshot_validation.py +260 -0
- quant_core/__init__.py +0 -0
- quant_core/app/SPEC.md +18 -0
- quant_core/app/__init__.py +0 -0
- quant_core/app/backtest/SPEC.md +65 -0
- quant_core/app/backtest/__init__.py +1 -0
- quant_core/app/backtest/backtest_input_schema.py +20 -0
- quant_core/app/backtest/backtest_run.py +393 -0
- quant_core/app/backtest/data_guard.py +77 -0
- quant_core/app/backtest/historical_clock.py +26 -0
- quant_core/app/backtest/legacy_result_schema.py +34 -0
- quant_core/app/backtest/metrics.py +194 -0
- quant_core/app/backtest/performance_report.py +61 -0
- quant_core/app/backtest/report_schema.py +64 -0
- quant_core/app/backtest/schema.py +477 -0
- quant_core/app/backtest/service/__init__.py +0 -0
- quant_core/app/backtest/service/backtest_execution_service.py +114 -0
- quant_core/app/data/__init__.py +0 -0
- quant_core/app/data/constants.py +284 -0
- quant_core/app/data/domain/__init__.py +0 -0
- quant_core/app/data/domain/trading_quantity_value.py +57 -0
- quant_core/app/data/exceptions.py +95 -0
- quant_core/app/data/interface/__init__.py +0 -0
- quant_core/app/data/interface/adjustment_factor_query.py +21 -0
- quant_core/app/data/interface/market_data_query.py +71 -0
- quant_core/app/data/interface/market_data_verification.py +20 -0
- quant_core/app/data/interface/market_event_source.py +11 -0
- quant_core/app/data/interface/market_revision_query.py +8 -0
- quant_core/app/data/interface/market_runtime_repository.py +44 -0
- quant_core/app/data/interface/market_time_slice_source.py +11 -0
- quant_core/app/data/repository/__init__.py +0 -0
- quant_core/app/data/schema/__init__.py +1 -0
- quant_core/app/data/schema/adjustment_schema.py +67 -0
- quant_core/app/data/schema/corporate_action_schema.py +46 -0
- quant_core/app/data/schema/event_schema.py +506 -0
- quant_core/app/data/schema/exchange_operating_state.py +37 -0
- quant_core/app/data/schema/exchange_state_schema.py +106 -0
- quant_core/app/data/schema/history_schema.py +48 -0
- quant_core/app/data/schema/instrument_identity.py +69 -0
- quant_core/app/data/schema/market_schema.py +128 -0
- quant_core/app/data/schema/pit_daily_window.py +16 -0
- quant_core/app/data/schema/quote_schema.py +73 -0
- quant_core/app/data/schema/reliability_schema.py +152 -0
- quant_core/app/data/schema/snapshot_schema.py +82 -0
- quant_core/app/data/schema/trading_state_schema.py +211 -0
- quant_core/app/data/service/__init__.py +0 -0
- quant_core/app/data/service/calendar_coverage_service.py +63 -0
- quant_core/app/data/service/prepared_data_verification_service.py +40 -0
- quant_core/app/data/service/prepared_market_service.py +189 -0
- quant_core/app/data/service/price_adjustment_service.py +235 -0
- quant_core/app/factor/LICENSE.vnpy +21 -0
- quant_core/app/factor/__init__.py +13 -0
- quant_core/app/factor/builtin/__init__.py +0 -0
- quant_core/app/factor/builtin/alpha101_recipe.py +1095 -0
- quant_core/app/factor/builtin/alpha158_recipe.py +1284 -0
- quant_core/app/factor/builtin/factor_recipe_catalog.py +100 -0
- quant_core/app/factor/computation/__init__.py +0 -0
- quant_core/app/factor/computation/factor_batch_evaluator.py +141 -0
- quant_core/app/factor/computation/factor_expression.py +106 -0
- quant_core/app/factor/computation/factor_source_loader.py +24 -0
- quant_core/app/factor/computation/operators/__init__.py +0 -0
- quant_core/app/factor/computation/operators/arithmetic_operator.py +182 -0
- quant_core/app/factor/computation/operators/cross_section_operator.py +66 -0
- quant_core/app/factor/computation/operators/time_series_operator.py +342 -0
- quant_core/app/factor/computation/panel_evaluator.py +59 -0
- quant_core/app/factor/computation/panel_expression.py +193 -0
- quant_core/app/factor/computation/python_factor_executor.py +87 -0
- quant_core/app/factor/computation/universe_filter.py +25 -0
- quant_core/app/factor/constants.py +114 -0
- quant_core/app/factor/exceptions.py +35 -0
- quant_core/app/factor/factor_dependency.py +65 -0
- quant_core/app/factor/interface/__init__.py +0 -0
- quant_core/app/factor/interface/factor_compute.py +12 -0
- quant_core/app/factor/interface/factor_execution.py +15 -0
- quant_core/app/factor/interface/factor_local_data.py +42 -0
- quant_core/app/factor/interface/factor_panel_compute.py +18 -0
- quant_core/app/factor/interface/factor_panel_input.py +12 -0
- quant_core/app/factor/interface/factor_query_store.py +39 -0
- quant_core/app/factor/interface/public/__init__.py +0 -0
- quant_core/app/factor/interface/public/factor_diagnostics.py +18 -0
- quant_core/app/factor/interface/public/factor_exposure_query.py +12 -0
- quant_core/app/factor/interface/public/factor_local.py +15 -0
- quant_core/app/factor/interface/public/factor_query.py +57 -0
- quant_core/app/factor/interface/public/factor_selection.py +20 -0
- quant_core/app/factor/model/__init__.py +0 -0
- quant_core/app/factor/repository/__init__.py +0 -0
- quant_core/app/factor/schema/__init__.py +1 -0
- quant_core/app/factor/schema/diagnostic_types.py +42 -0
- quant_core/app/factor/schema/factor_artifact_schema.py +36 -0
- quant_core/app/factor/schema/factor_computation_schema.py +102 -0
- quant_core/app/factor/schema/factor_compute_request.py +24 -0
- quant_core/app/factor/schema/factor_contract.py +257 -0
- quant_core/app/factor/schema/factor_input_schema.py +32 -0
- quant_core/app/factor/schema/factor_panel.py +65 -0
- quant_core/app/factor/schema/factor_publication_schema.py +41 -0
- quant_core/app/factor/schema/factor_query_result_schema.py +12 -0
- quant_core/app/factor/schema/factor_result_schema.py +6 -0
- quant_core/app/factor/schema/local_factor_schema.py +42 -0
- quant_core/app/factor/schema/panel_policy.py +13 -0
- quant_core/app/factor/schema/selection_report.py +116 -0
- quant_core/app/factor/schema/selection_types.py +135 -0
- quant_core/app/factor/service/__init__.py +1 -0
- quant_core/app/factor/service/factor_compute_service.py +140 -0
- quant_core/app/factor/service/factor_diagnostic_runner.py +134 -0
- quant_core/app/factor/service/factor_diagnostics_service.py +140 -0
- quant_core/app/factor/service/factor_exposure_service.py +24 -0
- quant_core/app/factor/service/factor_input_service.py +258 -0
- quant_core/app/factor/service/factor_local_execution_service.py +51 -0
- quant_core/app/factor/service/factor_panel_service.py +86 -0
- quant_core/app/factor/service/factor_runtime_service.py +306 -0
- quant_core/app/factor/service/factor_selection_runner.py +88 -0
- quant_core/app/factor/service/published_factor_execution_service.py +160 -0
- quant_core/app/factor/service/selection_service.py +234 -0
- quant_core/app/factor/visibility.py +22 -0
- quant_core/app/opportunity/SPEC.md +45 -0
- quant_core/app/opportunity/__init__.py +1 -0
- quant_core/app/order_execution/SPEC.md +64 -0
- quant_core/app/order_execution/__init__.py +1 -0
- quant_core/app/order_execution/bar_matcher.py +55 -0
- quant_core/app/order_execution/constants.py +142 -0
- quant_core/app/order_execution/domain/__init__.py +45 -0
- quant_core/app/order_execution/domain/execution_batch.py +108 -0
- quant_core/app/order_execution/domain/order_entity.py +197 -0
- quant_core/app/order_execution/domain/order_event.py +87 -0
- quant_core/app/order_execution/domain/order_policy.py +29 -0
- quant_core/app/order_execution/domain/order_value.py +142 -0
- quant_core/app/order_execution/fee_model.py +60 -0
- quant_core/app/order_execution/interface/__init__.py +0 -0
- quant_core/app/order_execution/interface/order_account.py +10 -0
- quant_core/app/order_execution/interface/order_trading_rules.py +10 -0
- quant_core/app/order_execution/interface/public/__init__.py +0 -0
- quant_core/app/order_execution/interface/public/execution_account.py +53 -0
- quant_core/app/order_execution/interface/public/order_events.py +19 -0
- quant_core/app/order_execution/interface/public/order_execution.py +107 -0
- quant_core/app/order_execution/interface/public/order_runtime.py +30 -0
- quant_core/app/order_execution/interface/public/order_submission.py +17 -0
- quant_core/app/order_execution/order_event_bus.py +28 -0
- quant_core/app/order_execution/order_execution_dependency.py +48 -0
- quant_core/app/order_execution/order_submission_service.py +301 -0
- quant_core/app/order_execution/schema/__init__.py +0 -0
- quant_core/app/order_execution/schema/order_request_schema.py +88 -0
- quant_core/app/order_execution/simulation_broker.py +883 -0
- quant_core/app/order_execution/slippage_model.py +40 -0
- quant_core/app/order_execution/tradability_policy.py +174 -0
- quant_core/app/order_execution/validators.py +40 -0
- quant_core/app/portfolio/SPEC.md +69 -0
- quant_core/app/portfolio/__init__.py +0 -0
- quant_core/app/portfolio/domain/__init__.py +32 -0
- quant_core/app/portfolio/domain/entitlement_entity.py +45 -0
- quant_core/app/portfolio/domain/portfolio_entity.py +511 -0
- quant_core/app/portfolio/domain/portfolio_event.py +59 -0
- quant_core/app/portfolio/domain/portfolio_value.py +21 -0
- quant_core/app/portfolio/domain/position_entity.py +165 -0
- quant_core/app/portfolio/domain/reservation_entity.py +69 -0
- quant_core/app/portfolio/interface/__init__.py +0 -0
- quant_core/app/portfolio/interface/public/__init__.py +0 -0
- quant_core/app/portfolio/interface/public/portfolio.py +77 -0
- quant_core/app/portfolio/interface/public/simulation_account.py +16 -0
- quant_core/app/portfolio/ledger_schema.py +130 -0
- quant_core/app/portfolio/order_account_listener.py +36 -0
- quant_core/app/portfolio/portfolio_dependency.py +21 -0
- quant_core/app/portfolio/portfolio_schema.py +204 -0
- quant_core/app/portfolio/simulated_portfolio.py +427 -0
- quant_core/app/research/SPEC.md +57 -0
- quant_core/app/research/__init__.py +0 -0
- quant_core/app/research/adapter/__init__.py +0 -0
- quant_core/app/research/adapter/market_label_query.py +84 -0
- quant_core/app/research/interface/__init__.py +0 -0
- quant_core/app/research/interface/research_dataset.py +47 -0
- quant_core/app/research/interface/research_evaluation.py +19 -0
- quant_core/app/research/schema/__init__.py +0 -0
- quant_core/app/research/schema/comparison_schema.py +12 -0
- quant_core/app/research/schema/dataset_schema.py +112 -0
- quant_core/app/research/schema/research_schema.py +120 -0
- quant_core/app/research/service/__init__.py +0 -0
- quant_core/app/research/service/research_dataset_service.py +80 -0
- quant_core/app/research/service/research_evaluation_service.py +56 -0
- quant_core/app/research/service/research_service.py +171 -0
- quant_core/app/strategy/SPEC.md +215 -0
- quant_core/app/strategy/__init__.py +1 -0
- quant_core/app/strategy/constants.py +87 -0
- quant_core/app/strategy/exceptions.py +32 -0
- quant_core/app/strategy/interface/__init__.py +0 -0
- quant_core/app/strategy/interface/public/__init__.py +0 -0
- quant_core/app/strategy/interface/public/portfolio_construction.py +19 -0
- quant_core/app/strategy/interface/public/strategy.py +30 -0
- quant_core/app/strategy/interface/public/strategy_market_query.py +53 -0
- quant_core/app/strategy/interface/public/strategy_portfolio_reader.py +33 -0
- quant_core/app/strategy/interface/strategy_factor_reader.py +19 -0
- quant_core/app/strategy/interface/strategy_order_reader.py +14 -0
- quant_core/app/strategy/schema/__init__.py +0 -0
- quant_core/app/strategy/schema/portfolio_schema.py +28 -0
- quant_core/app/strategy/schema/portfolio_target.py +70 -0
- quant_core/app/strategy/schema/python_strategy_schema.py +94 -0
- quant_core/app/strategy/schema/screener_schema.py +51 -0
- quant_core/app/strategy/schema/signal_schema.py +33 -0
- quant_core/app/strategy/schema/strategy_publication_schema.py +32 -0
- quant_core/app/strategy/schema/strategy_schema.py +96 -0
- quant_core/app/strategy/service/__init__.py +0 -0
- quant_core/app/strategy/service/factor_top_n_strategy.py +103 -0
- quant_core/app/strategy/service/portfolio_construction_service.py +142 -0
- quant_core/app/strategy/service/python_strategy_service.py +65 -0
- quant_core/app/strategy/service/screener_service.py +77 -0
- quant_core/app/strategy/service/store_factor_reader.py +120 -0
- quant_core/app/strategy/service/strategy_market_view.py +120 -0
- quant_core/app/strategy/service/strategy_runtime_service.py +319 -0
- quant_core/app/strategy/service/strategy_scheduler.py +50 -0
- quant_core/app/strategy/strategies/__init__.py +7 -0
- quant_core/app/strategy/strategies/momentum_volume_breakout.py +157 -0
- quant_core/app/strategy/strategy_context.py +316 -0
- quant_core/app/strategy/strategy_dependency.py +101 -0
- quant_core/app/trading_runtime/SPEC.md +70 -0
- quant_core/app/trading_runtime/__init__.py +1 -0
- quant_core/app/trading_runtime/domain/__init__.py +0 -0
- quant_core/app/trading_runtime/replay/__init__.py +0 -0
- quant_core/app/trading_runtime/replay/daily_state_expand.py +49 -0
- quant_core/app/trading_runtime/replay/exchange_state_resolver.py +90 -0
- quant_core/app/trading_runtime/replay/market_runtime_service.py +573 -0
- quant_core/app/trading_runtime/replay/market_state_resolver.py +150 -0
- quant_core/app/trading_runtime/runtime_ports.py +64 -0
- quant_core/app/trading_runtime/runtime_schema.py +129 -0
- quant_core/app/trading_runtime/runtime_session.py +361 -0
- quant_core/app/trading_runtime/strategy_portfolio_adapter.py +58 -0
- quant_core/app/trading_runtime/trading_rule_book.py +37 -0
- quant_core/app/trading_runtime/trading_rule_query.py +12 -0
- quant_core/common/__init__.py +0 -0
- quant_core/common/exceptions/__init__.py +0 -0
- quant_core/common/exceptions/base.py +89 -0
- quant_core/common/local_run.py +45 -0
|
@@ -0,0 +1,1284 @@
|
|
|
1
|
+
"""静态 Python 配方,训练标签不属于特征集合。"""
|
|
2
|
+
# Derived from vn.py fa5206fe63836f3f8cd1ebd7168fbd19a5e2ff09.
|
|
3
|
+
# Copyright (c) 2015-present, Xiaoyou Chen. MIT; see app/factor/LICENSE.vnpy.
|
|
4
|
+
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
|
|
7
|
+
from quant_core.app.factor.computation.operators.time_series_operator import (
|
|
8
|
+
ts_abs,
|
|
9
|
+
ts_argmax,
|
|
10
|
+
ts_argmin,
|
|
11
|
+
ts_corr,
|
|
12
|
+
ts_delay,
|
|
13
|
+
ts_greater,
|
|
14
|
+
ts_less,
|
|
15
|
+
ts_log,
|
|
16
|
+
ts_max,
|
|
17
|
+
ts_mean,
|
|
18
|
+
ts_min,
|
|
19
|
+
ts_quantile,
|
|
20
|
+
ts_rank,
|
|
21
|
+
ts_resi,
|
|
22
|
+
ts_rsquare,
|
|
23
|
+
ts_slope,
|
|
24
|
+
ts_std,
|
|
25
|
+
ts_sum,
|
|
26
|
+
)
|
|
27
|
+
from quant_core.app.factor.computation.panel_expression import PanelExpression
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def alpha158_kmid(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
31
|
+
"""固定参考版本的 alpha158/kmid 特征。"""
|
|
32
|
+
close = fields["close"]
|
|
33
|
+
open = fields["open"]
|
|
34
|
+
return (close - open) / open
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def alpha158_klen(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
38
|
+
"""固定参考版本的 alpha158/klen 特征。"""
|
|
39
|
+
high = fields["high"]
|
|
40
|
+
low = fields["low"]
|
|
41
|
+
open = fields["open"]
|
|
42
|
+
return (high - low) / open
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def alpha158_kmid_2(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
46
|
+
"""固定参考版本的 alpha158/kmid_2 特征。"""
|
|
47
|
+
close = fields["close"]
|
|
48
|
+
high = fields["high"]
|
|
49
|
+
low = fields["low"]
|
|
50
|
+
open = fields["open"]
|
|
51
|
+
return (close - open) / (high - low + 1e-12)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def alpha158_kup(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
55
|
+
"""固定参考版本的 alpha158/kup 特征。"""
|
|
56
|
+
close = fields["close"]
|
|
57
|
+
high = fields["high"]
|
|
58
|
+
open = fields["open"]
|
|
59
|
+
return (high - ts_greater(open, close)) / open
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def alpha158_kup_2(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
63
|
+
"""固定参考版本的 alpha158/kup_2 特征。"""
|
|
64
|
+
close = fields["close"]
|
|
65
|
+
high = fields["high"]
|
|
66
|
+
low = fields["low"]
|
|
67
|
+
open = fields["open"]
|
|
68
|
+
return (high - ts_greater(open, close)) / (high - low + 1e-12)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def alpha158_klow(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
72
|
+
"""固定参考版本的 alpha158/klow 特征。"""
|
|
73
|
+
close = fields["close"]
|
|
74
|
+
low = fields["low"]
|
|
75
|
+
open = fields["open"]
|
|
76
|
+
return (ts_less(open, close) - low) / open
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def alpha158_klow_2(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
80
|
+
"""固定参考版本的 alpha158/klow_2 特征。"""
|
|
81
|
+
close = fields["close"]
|
|
82
|
+
high = fields["high"]
|
|
83
|
+
low = fields["low"]
|
|
84
|
+
open = fields["open"]
|
|
85
|
+
return (ts_less(open, close) - low) / (high - low + 1e-12)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def alpha158_ksft(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
89
|
+
"""固定参考版本的 alpha158/ksft 特征。"""
|
|
90
|
+
close = fields["close"]
|
|
91
|
+
high = fields["high"]
|
|
92
|
+
low = fields["low"]
|
|
93
|
+
open = fields["open"]
|
|
94
|
+
return (close * 2 - high - low) / open
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def alpha158_ksft_2(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
98
|
+
"""固定参考版本的 alpha158/ksft_2 特征。"""
|
|
99
|
+
close = fields["close"]
|
|
100
|
+
high = fields["high"]
|
|
101
|
+
low = fields["low"]
|
|
102
|
+
return (close * 2 - high - low) / (high - low + 1e-12)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def alpha158_open_0(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
106
|
+
"""固定参考版本的 alpha158/open_0 特征。"""
|
|
107
|
+
close = fields["close"]
|
|
108
|
+
open = fields["open"]
|
|
109
|
+
return open / close
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def alpha158_high_0(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
113
|
+
"""固定参考版本的 alpha158/high_0 特征。"""
|
|
114
|
+
close = fields["close"]
|
|
115
|
+
high = fields["high"]
|
|
116
|
+
return high / close
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def alpha158_low_0(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
120
|
+
"""固定参考版本的 alpha158/low_0 特征。"""
|
|
121
|
+
close = fields["close"]
|
|
122
|
+
low = fields["low"]
|
|
123
|
+
return low / close
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def alpha158_vwap_0(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
127
|
+
"""固定参考版本的 alpha158/vwap_0 特征。"""
|
|
128
|
+
close = fields["close"]
|
|
129
|
+
vwap = fields["vwap"]
|
|
130
|
+
return vwap / close
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def alpha158_roc_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
134
|
+
"""固定参考版本的 alpha158/roc_5 特征。"""
|
|
135
|
+
close = fields["close"]
|
|
136
|
+
return ts_delay(close, 5) / close
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def alpha158_roc_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
140
|
+
"""固定参考版本的 alpha158/roc_10 特征。"""
|
|
141
|
+
close = fields["close"]
|
|
142
|
+
return ts_delay(close, 10) / close
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def alpha158_roc_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
146
|
+
"""固定参考版本的 alpha158/roc_20 特征。"""
|
|
147
|
+
close = fields["close"]
|
|
148
|
+
return ts_delay(close, 20) / close
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def alpha158_roc_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
152
|
+
"""固定参考版本的 alpha158/roc_30 特征。"""
|
|
153
|
+
close = fields["close"]
|
|
154
|
+
return ts_delay(close, 30) / close
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def alpha158_roc_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
158
|
+
"""固定参考版本的 alpha158/roc_60 特征。"""
|
|
159
|
+
close = fields["close"]
|
|
160
|
+
return ts_delay(close, 60) / close
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def alpha158_ma_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
164
|
+
"""固定参考版本的 alpha158/ma_5 特征。"""
|
|
165
|
+
close = fields["close"]
|
|
166
|
+
return ts_mean(close, 5) / close
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def alpha158_ma_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
170
|
+
"""固定参考版本的 alpha158/ma_10 特征。"""
|
|
171
|
+
close = fields["close"]
|
|
172
|
+
return ts_mean(close, 10) / close
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def alpha158_ma_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
176
|
+
"""固定参考版本的 alpha158/ma_20 特征。"""
|
|
177
|
+
close = fields["close"]
|
|
178
|
+
return ts_mean(close, 20) / close
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def alpha158_ma_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
182
|
+
"""固定参考版本的 alpha158/ma_30 特征。"""
|
|
183
|
+
close = fields["close"]
|
|
184
|
+
return ts_mean(close, 30) / close
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def alpha158_ma_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
188
|
+
"""固定参考版本的 alpha158/ma_60 特征。"""
|
|
189
|
+
close = fields["close"]
|
|
190
|
+
return ts_mean(close, 60) / close
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def alpha158_std_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
194
|
+
"""固定参考版本的 alpha158/std_5 特征。"""
|
|
195
|
+
close = fields["close"]
|
|
196
|
+
return ts_std(close, 5) / close
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def alpha158_std_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
200
|
+
"""固定参考版本的 alpha158/std_10 特征。"""
|
|
201
|
+
close = fields["close"]
|
|
202
|
+
return ts_std(close, 10) / close
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def alpha158_std_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
206
|
+
"""固定参考版本的 alpha158/std_20 特征。"""
|
|
207
|
+
close = fields["close"]
|
|
208
|
+
return ts_std(close, 20) / close
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def alpha158_std_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
212
|
+
"""固定参考版本的 alpha158/std_30 特征。"""
|
|
213
|
+
close = fields["close"]
|
|
214
|
+
return ts_std(close, 30) / close
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def alpha158_std_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
218
|
+
"""固定参考版本的 alpha158/std_60 特征。"""
|
|
219
|
+
close = fields["close"]
|
|
220
|
+
return ts_std(close, 60) / close
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def alpha158_beta_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
224
|
+
"""固定参考版本的 alpha158/beta_5 特征。"""
|
|
225
|
+
close = fields["close"]
|
|
226
|
+
return ts_slope(close, 5) / close
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def alpha158_beta_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
230
|
+
"""固定参考版本的 alpha158/beta_10 特征。"""
|
|
231
|
+
close = fields["close"]
|
|
232
|
+
return ts_slope(close, 10) / close
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
def alpha158_beta_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
236
|
+
"""固定参考版本的 alpha158/beta_20 特征。"""
|
|
237
|
+
close = fields["close"]
|
|
238
|
+
return ts_slope(close, 20) / close
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def alpha158_beta_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
242
|
+
"""固定参考版本的 alpha158/beta_30 特征。"""
|
|
243
|
+
close = fields["close"]
|
|
244
|
+
return ts_slope(close, 30) / close
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def alpha158_beta_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
248
|
+
"""固定参考版本的 alpha158/beta_60 特征。"""
|
|
249
|
+
close = fields["close"]
|
|
250
|
+
return ts_slope(close, 60) / close
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
def alpha158_rsqr_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
254
|
+
"""固定参考版本的 alpha158/rsqr_5 特征。"""
|
|
255
|
+
close = fields["close"]
|
|
256
|
+
return ts_rsquare(close, 5)
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def alpha158_rsqr_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
260
|
+
"""固定参考版本的 alpha158/rsqr_10 特征。"""
|
|
261
|
+
close = fields["close"]
|
|
262
|
+
return ts_rsquare(close, 10)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def alpha158_rsqr_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
266
|
+
"""固定参考版本的 alpha158/rsqr_20 特征。"""
|
|
267
|
+
close = fields["close"]
|
|
268
|
+
return ts_rsquare(close, 20)
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def alpha158_rsqr_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
272
|
+
"""固定参考版本的 alpha158/rsqr_30 特征。"""
|
|
273
|
+
close = fields["close"]
|
|
274
|
+
return ts_rsquare(close, 30)
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def alpha158_rsqr_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
278
|
+
"""固定参考版本的 alpha158/rsqr_60 特征。"""
|
|
279
|
+
close = fields["close"]
|
|
280
|
+
return ts_rsquare(close, 60)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
def alpha158_resi_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
284
|
+
"""固定参考版本的 alpha158/resi_5 特征。"""
|
|
285
|
+
close = fields["close"]
|
|
286
|
+
return ts_resi(close, 5) / close
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
def alpha158_resi_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
290
|
+
"""固定参考版本的 alpha158/resi_10 特征。"""
|
|
291
|
+
close = fields["close"]
|
|
292
|
+
return ts_resi(close, 10) / close
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def alpha158_resi_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
296
|
+
"""固定参考版本的 alpha158/resi_20 特征。"""
|
|
297
|
+
close = fields["close"]
|
|
298
|
+
return ts_resi(close, 20) / close
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
def alpha158_resi_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
302
|
+
"""固定参考版本的 alpha158/resi_30 特征。"""
|
|
303
|
+
close = fields["close"]
|
|
304
|
+
return ts_resi(close, 30) / close
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
def alpha158_resi_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
308
|
+
"""固定参考版本的 alpha158/resi_60 特征。"""
|
|
309
|
+
close = fields["close"]
|
|
310
|
+
return ts_resi(close, 60) / close
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
def alpha158_max_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
314
|
+
"""固定参考版本的 alpha158/max_5 特征。"""
|
|
315
|
+
close = fields["close"]
|
|
316
|
+
high = fields["high"]
|
|
317
|
+
return ts_max(high, 5) / close
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
def alpha158_max_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
321
|
+
"""固定参考版本的 alpha158/max_10 特征。"""
|
|
322
|
+
close = fields["close"]
|
|
323
|
+
high = fields["high"]
|
|
324
|
+
return ts_max(high, 10) / close
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
def alpha158_max_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
328
|
+
"""固定参考版本的 alpha158/max_20 特征。"""
|
|
329
|
+
close = fields["close"]
|
|
330
|
+
high = fields["high"]
|
|
331
|
+
return ts_max(high, 20) / close
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
def alpha158_max_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
335
|
+
"""固定参考版本的 alpha158/max_30 特征。"""
|
|
336
|
+
close = fields["close"]
|
|
337
|
+
high = fields["high"]
|
|
338
|
+
return ts_max(high, 30) / close
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
def alpha158_max_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
342
|
+
"""固定参考版本的 alpha158/max_60 特征。"""
|
|
343
|
+
close = fields["close"]
|
|
344
|
+
high = fields["high"]
|
|
345
|
+
return ts_max(high, 60) / close
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
def alpha158_min_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
349
|
+
"""固定参考版本的 alpha158/min_5 特征。"""
|
|
350
|
+
close = fields["close"]
|
|
351
|
+
low = fields["low"]
|
|
352
|
+
return ts_min(low, 5) / close
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
def alpha158_min_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
356
|
+
"""固定参考版本的 alpha158/min_10 特征。"""
|
|
357
|
+
close = fields["close"]
|
|
358
|
+
low = fields["low"]
|
|
359
|
+
return ts_min(low, 10) / close
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
def alpha158_min_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
363
|
+
"""固定参考版本的 alpha158/min_20 特征。"""
|
|
364
|
+
close = fields["close"]
|
|
365
|
+
low = fields["low"]
|
|
366
|
+
return ts_min(low, 20) / close
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
def alpha158_min_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
370
|
+
"""固定参考版本的 alpha158/min_30 特征。"""
|
|
371
|
+
close = fields["close"]
|
|
372
|
+
low = fields["low"]
|
|
373
|
+
return ts_min(low, 30) / close
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
def alpha158_min_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
377
|
+
"""固定参考版本的 alpha158/min_60 特征。"""
|
|
378
|
+
close = fields["close"]
|
|
379
|
+
low = fields["low"]
|
|
380
|
+
return ts_min(low, 60) / close
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def alpha158_qtlu_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
384
|
+
"""固定参考版本的 alpha158/qtlu_5 特征。"""
|
|
385
|
+
close = fields["close"]
|
|
386
|
+
return ts_quantile(close, 5, 0.8) / close
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
def alpha158_qtlu_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
390
|
+
"""固定参考版本的 alpha158/qtlu_10 特征。"""
|
|
391
|
+
close = fields["close"]
|
|
392
|
+
return ts_quantile(close, 10, 0.8) / close
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
def alpha158_qtlu_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
396
|
+
"""固定参考版本的 alpha158/qtlu_20 特征。"""
|
|
397
|
+
close = fields["close"]
|
|
398
|
+
return ts_quantile(close, 20, 0.8) / close
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
def alpha158_qtlu_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
402
|
+
"""固定参考版本的 alpha158/qtlu_30 特征。"""
|
|
403
|
+
close = fields["close"]
|
|
404
|
+
return ts_quantile(close, 30, 0.8) / close
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
def alpha158_qtlu_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
408
|
+
"""固定参考版本的 alpha158/qtlu_60 特征。"""
|
|
409
|
+
close = fields["close"]
|
|
410
|
+
return ts_quantile(close, 60, 0.8) / close
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
def alpha158_qtld_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
414
|
+
"""固定参考版本的 alpha158/qtld_5 特征。"""
|
|
415
|
+
close = fields["close"]
|
|
416
|
+
return ts_quantile(close, 5, 0.2) / close
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
def alpha158_qtld_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
420
|
+
"""固定参考版本的 alpha158/qtld_10 特征。"""
|
|
421
|
+
close = fields["close"]
|
|
422
|
+
return ts_quantile(close, 10, 0.2) / close
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
def alpha158_qtld_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
426
|
+
"""固定参考版本的 alpha158/qtld_20 特征。"""
|
|
427
|
+
close = fields["close"]
|
|
428
|
+
return ts_quantile(close, 20, 0.2) / close
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
def alpha158_qtld_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
432
|
+
"""固定参考版本的 alpha158/qtld_30 特征。"""
|
|
433
|
+
close = fields["close"]
|
|
434
|
+
return ts_quantile(close, 30, 0.2) / close
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
def alpha158_qtld_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
438
|
+
"""固定参考版本的 alpha158/qtld_60 特征。"""
|
|
439
|
+
close = fields["close"]
|
|
440
|
+
return ts_quantile(close, 60, 0.2) / close
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
def alpha158_rank_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
444
|
+
"""固定参考版本的 alpha158/rank_5 特征。"""
|
|
445
|
+
close = fields["close"]
|
|
446
|
+
return ts_rank(close, 5)
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
def alpha158_rank_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
450
|
+
"""固定参考版本的 alpha158/rank_10 特征。"""
|
|
451
|
+
close = fields["close"]
|
|
452
|
+
return ts_rank(close, 10)
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
def alpha158_rank_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
456
|
+
"""固定参考版本的 alpha158/rank_20 特征。"""
|
|
457
|
+
close = fields["close"]
|
|
458
|
+
return ts_rank(close, 20)
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
def alpha158_rank_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
462
|
+
"""固定参考版本的 alpha158/rank_30 特征。"""
|
|
463
|
+
close = fields["close"]
|
|
464
|
+
return ts_rank(close, 30)
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
def alpha158_rank_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
468
|
+
"""固定参考版本的 alpha158/rank_60 特征。"""
|
|
469
|
+
close = fields["close"]
|
|
470
|
+
return ts_rank(close, 60)
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
def alpha158_rsv_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
474
|
+
"""固定参考版本的 alpha158/rsv_5 特征。"""
|
|
475
|
+
close = fields["close"]
|
|
476
|
+
high = fields["high"]
|
|
477
|
+
low = fields["low"]
|
|
478
|
+
return (close - ts_min(low, 5)) / (ts_max(high, 5) - ts_min(low, 5) + 1e-12)
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
def alpha158_rsv_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
482
|
+
"""固定参考版本的 alpha158/rsv_10 特征。"""
|
|
483
|
+
close = fields["close"]
|
|
484
|
+
high = fields["high"]
|
|
485
|
+
low = fields["low"]
|
|
486
|
+
return (close - ts_min(low, 10)) / (ts_max(high, 10) - ts_min(low, 10) + 1e-12)
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
def alpha158_rsv_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
490
|
+
"""固定参考版本的 alpha158/rsv_20 特征。"""
|
|
491
|
+
close = fields["close"]
|
|
492
|
+
high = fields["high"]
|
|
493
|
+
low = fields["low"]
|
|
494
|
+
return (close - ts_min(low, 20)) / (ts_max(high, 20) - ts_min(low, 20) + 1e-12)
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
def alpha158_rsv_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
498
|
+
"""固定参考版本的 alpha158/rsv_30 特征。"""
|
|
499
|
+
close = fields["close"]
|
|
500
|
+
high = fields["high"]
|
|
501
|
+
low = fields["low"]
|
|
502
|
+
return (close - ts_min(low, 30)) / (ts_max(high, 30) - ts_min(low, 30) + 1e-12)
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
def alpha158_rsv_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
506
|
+
"""固定参考版本的 alpha158/rsv_60 特征。"""
|
|
507
|
+
close = fields["close"]
|
|
508
|
+
high = fields["high"]
|
|
509
|
+
low = fields["low"]
|
|
510
|
+
return (close - ts_min(low, 60)) / (ts_max(high, 60) - ts_min(low, 60) + 1e-12)
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
def alpha158_imax_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
514
|
+
"""固定参考版本的 alpha158/imax_5 特征。"""
|
|
515
|
+
high = fields["high"]
|
|
516
|
+
return ts_argmax(high, 5) / 5
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
def alpha158_imax_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
520
|
+
"""固定参考版本的 alpha158/imax_10 特征。"""
|
|
521
|
+
high = fields["high"]
|
|
522
|
+
return ts_argmax(high, 10) / 10
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
def alpha158_imax_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
526
|
+
"""固定参考版本的 alpha158/imax_20 特征。"""
|
|
527
|
+
high = fields["high"]
|
|
528
|
+
return ts_argmax(high, 20) / 20
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
def alpha158_imax_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
532
|
+
"""固定参考版本的 alpha158/imax_30 特征。"""
|
|
533
|
+
high = fields["high"]
|
|
534
|
+
return ts_argmax(high, 30) / 30
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
def alpha158_imax_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
538
|
+
"""固定参考版本的 alpha158/imax_60 特征。"""
|
|
539
|
+
high = fields["high"]
|
|
540
|
+
return ts_argmax(high, 60) / 60
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
def alpha158_imin_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
544
|
+
"""固定参考版本的 alpha158/imin_5 特征。"""
|
|
545
|
+
low = fields["low"]
|
|
546
|
+
return ts_argmin(low, 5) / 5
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
def alpha158_imin_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
550
|
+
"""固定参考版本的 alpha158/imin_10 特征。"""
|
|
551
|
+
low = fields["low"]
|
|
552
|
+
return ts_argmin(low, 10) / 10
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
def alpha158_imin_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
556
|
+
"""固定参考版本的 alpha158/imin_20 特征。"""
|
|
557
|
+
low = fields["low"]
|
|
558
|
+
return ts_argmin(low, 20) / 20
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
def alpha158_imin_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
562
|
+
"""固定参考版本的 alpha158/imin_30 特征。"""
|
|
563
|
+
low = fields["low"]
|
|
564
|
+
return ts_argmin(low, 30) / 30
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
def alpha158_imin_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
568
|
+
"""固定参考版本的 alpha158/imin_60 特征。"""
|
|
569
|
+
low = fields["low"]
|
|
570
|
+
return ts_argmin(low, 60) / 60
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
def alpha158_imxd_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
574
|
+
"""固定参考版本的 alpha158/imxd_5 特征。"""
|
|
575
|
+
high = fields["high"]
|
|
576
|
+
low = fields["low"]
|
|
577
|
+
return (ts_argmax(high, 5) - ts_argmin(low, 5)) / 5
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
def alpha158_imxd_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
581
|
+
"""固定参考版本的 alpha158/imxd_10 特征。"""
|
|
582
|
+
high = fields["high"]
|
|
583
|
+
low = fields["low"]
|
|
584
|
+
return (ts_argmax(high, 10) - ts_argmin(low, 10)) / 10
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
def alpha158_imxd_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
588
|
+
"""固定参考版本的 alpha158/imxd_20 特征。"""
|
|
589
|
+
high = fields["high"]
|
|
590
|
+
low = fields["low"]
|
|
591
|
+
return (ts_argmax(high, 20) - ts_argmin(low, 20)) / 20
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
def alpha158_imxd_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
595
|
+
"""固定参考版本的 alpha158/imxd_30 特征。"""
|
|
596
|
+
high = fields["high"]
|
|
597
|
+
low = fields["low"]
|
|
598
|
+
return (ts_argmax(high, 30) - ts_argmin(low, 30)) / 30
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
def alpha158_imxd_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
602
|
+
"""固定参考版本的 alpha158/imxd_60 特征。"""
|
|
603
|
+
high = fields["high"]
|
|
604
|
+
low = fields["low"]
|
|
605
|
+
return (ts_argmax(high, 60) - ts_argmin(low, 60)) / 60
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
def alpha158_corr_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
609
|
+
"""固定参考版本的 alpha158/corr_5 特征。"""
|
|
610
|
+
close = fields["close"]
|
|
611
|
+
volume = fields["volume"]
|
|
612
|
+
return ts_corr(close, ts_log(volume + 1), 5)
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
def alpha158_corr_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
616
|
+
"""固定参考版本的 alpha158/corr_10 特征。"""
|
|
617
|
+
close = fields["close"]
|
|
618
|
+
volume = fields["volume"]
|
|
619
|
+
return ts_corr(close, ts_log(volume + 1), 10)
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
def alpha158_corr_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
623
|
+
"""固定参考版本的 alpha158/corr_20 特征。"""
|
|
624
|
+
close = fields["close"]
|
|
625
|
+
volume = fields["volume"]
|
|
626
|
+
return ts_corr(close, ts_log(volume + 1), 20)
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
def alpha158_corr_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
630
|
+
"""固定参考版本的 alpha158/corr_30 特征。"""
|
|
631
|
+
close = fields["close"]
|
|
632
|
+
volume = fields["volume"]
|
|
633
|
+
return ts_corr(close, ts_log(volume + 1), 30)
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
def alpha158_corr_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
637
|
+
"""固定参考版本的 alpha158/corr_60 特征。"""
|
|
638
|
+
close = fields["close"]
|
|
639
|
+
volume = fields["volume"]
|
|
640
|
+
return ts_corr(close, ts_log(volume + 1), 60)
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
def alpha158_cord_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
644
|
+
"""固定参考版本的 alpha158/cord_5 特征。"""
|
|
645
|
+
close = fields["close"]
|
|
646
|
+
volume = fields["volume"]
|
|
647
|
+
return ts_corr(close / ts_delay(close, 1), ts_log(volume / ts_delay(volume, 1) + 1), 5)
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
def alpha158_cord_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
651
|
+
"""固定参考版本的 alpha158/cord_10 特征。"""
|
|
652
|
+
close = fields["close"]
|
|
653
|
+
volume = fields["volume"]
|
|
654
|
+
return ts_corr(close / ts_delay(close, 1), ts_log(volume / ts_delay(volume, 1) + 1), 10)
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
def alpha158_cord_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
658
|
+
"""固定参考版本的 alpha158/cord_20 特征。"""
|
|
659
|
+
close = fields["close"]
|
|
660
|
+
volume = fields["volume"]
|
|
661
|
+
return ts_corr(close / ts_delay(close, 1), ts_log(volume / ts_delay(volume, 1) + 1), 20)
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
def alpha158_cord_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
665
|
+
"""固定参考版本的 alpha158/cord_30 特征。"""
|
|
666
|
+
close = fields["close"]
|
|
667
|
+
volume = fields["volume"]
|
|
668
|
+
return ts_corr(close / ts_delay(close, 1), ts_log(volume / ts_delay(volume, 1) + 1), 30)
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
def alpha158_cord_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
672
|
+
"""固定参考版本的 alpha158/cord_60 特征。"""
|
|
673
|
+
close = fields["close"]
|
|
674
|
+
volume = fields["volume"]
|
|
675
|
+
return ts_corr(close / ts_delay(close, 1), ts_log(volume / ts_delay(volume, 1) + 1), 60)
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
def alpha158_cntp_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
679
|
+
"""固定参考版本的 alpha158/cntp_5 特征。"""
|
|
680
|
+
close = fields["close"]
|
|
681
|
+
return ts_mean(close > ts_delay(close, 1), 5)
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
def alpha158_cntp_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
685
|
+
"""固定参考版本的 alpha158/cntp_10 特征。"""
|
|
686
|
+
close = fields["close"]
|
|
687
|
+
return ts_mean(close > ts_delay(close, 1), 10)
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
def alpha158_cntp_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
691
|
+
"""固定参考版本的 alpha158/cntp_20 特征。"""
|
|
692
|
+
close = fields["close"]
|
|
693
|
+
return ts_mean(close > ts_delay(close, 1), 20)
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
def alpha158_cntp_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
697
|
+
"""固定参考版本的 alpha158/cntp_30 特征。"""
|
|
698
|
+
close = fields["close"]
|
|
699
|
+
return ts_mean(close > ts_delay(close, 1), 30)
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
def alpha158_cntp_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
703
|
+
"""固定参考版本的 alpha158/cntp_60 特征。"""
|
|
704
|
+
close = fields["close"]
|
|
705
|
+
return ts_mean(close > ts_delay(close, 1), 60)
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
def alpha158_cntn_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
709
|
+
"""固定参考版本的 alpha158/cntn_5 特征。"""
|
|
710
|
+
close = fields["close"]
|
|
711
|
+
return ts_mean(close < ts_delay(close, 1), 5)
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
def alpha158_cntn_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
715
|
+
"""固定参考版本的 alpha158/cntn_10 特征。"""
|
|
716
|
+
close = fields["close"]
|
|
717
|
+
return ts_mean(close < ts_delay(close, 1), 10)
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
def alpha158_cntn_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
721
|
+
"""固定参考版本的 alpha158/cntn_20 特征。"""
|
|
722
|
+
close = fields["close"]
|
|
723
|
+
return ts_mean(close < ts_delay(close, 1), 20)
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
def alpha158_cntn_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
727
|
+
"""固定参考版本的 alpha158/cntn_30 特征。"""
|
|
728
|
+
close = fields["close"]
|
|
729
|
+
return ts_mean(close < ts_delay(close, 1), 30)
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
def alpha158_cntn_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
733
|
+
"""固定参考版本的 alpha158/cntn_60 特征。"""
|
|
734
|
+
close = fields["close"]
|
|
735
|
+
return ts_mean(close < ts_delay(close, 1), 60)
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
def alpha158_cntd_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
739
|
+
"""固定参考版本的 alpha158/cntd_5 特征。"""
|
|
740
|
+
close = fields["close"]
|
|
741
|
+
return ts_mean(close > ts_delay(close, 1), 5) - ts_mean(close < ts_delay(close, 1), 5)
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
def alpha158_cntd_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
745
|
+
"""固定参考版本的 alpha158/cntd_10 特征。"""
|
|
746
|
+
close = fields["close"]
|
|
747
|
+
return ts_mean(close > ts_delay(close, 1), 10) - ts_mean(close < ts_delay(close, 1), 10)
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
def alpha158_cntd_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
751
|
+
"""固定参考版本的 alpha158/cntd_20 特征。"""
|
|
752
|
+
close = fields["close"]
|
|
753
|
+
return ts_mean(close > ts_delay(close, 1), 20) - ts_mean(close < ts_delay(close, 1), 20)
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
def alpha158_cntd_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
757
|
+
"""固定参考版本的 alpha158/cntd_30 特征。"""
|
|
758
|
+
close = fields["close"]
|
|
759
|
+
return ts_mean(close > ts_delay(close, 1), 30) - ts_mean(close < ts_delay(close, 1), 30)
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
def alpha158_cntd_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
763
|
+
"""固定参考版本的 alpha158/cntd_60 特征。"""
|
|
764
|
+
close = fields["close"]
|
|
765
|
+
return ts_mean(close > ts_delay(close, 1), 60) - ts_mean(close < ts_delay(close, 1), 60)
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
def alpha158_sump_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
769
|
+
"""固定参考版本的 alpha158/sump_5 特征。"""
|
|
770
|
+
close = fields["close"]
|
|
771
|
+
return ts_sum(ts_greater(close - ts_delay(close, 1), 0), 5) / (
|
|
772
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 5) + 1e-12
|
|
773
|
+
)
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
def alpha158_sump_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
777
|
+
"""固定参考版本的 alpha158/sump_10 特征。"""
|
|
778
|
+
close = fields["close"]
|
|
779
|
+
return ts_sum(ts_greater(close - ts_delay(close, 1), 0), 10) / (
|
|
780
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 10) + 1e-12
|
|
781
|
+
)
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
def alpha158_sump_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
785
|
+
"""固定参考版本的 alpha158/sump_20 特征。"""
|
|
786
|
+
close = fields["close"]
|
|
787
|
+
return ts_sum(ts_greater(close - ts_delay(close, 1), 0), 20) / (
|
|
788
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 20) + 1e-12
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
def alpha158_sump_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
793
|
+
"""固定参考版本的 alpha158/sump_30 特征。"""
|
|
794
|
+
close = fields["close"]
|
|
795
|
+
return ts_sum(ts_greater(close - ts_delay(close, 1), 0), 30) / (
|
|
796
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 30) + 1e-12
|
|
797
|
+
)
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
def alpha158_sump_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
801
|
+
"""固定参考版本的 alpha158/sump_60 特征。"""
|
|
802
|
+
close = fields["close"]
|
|
803
|
+
return ts_sum(ts_greater(close - ts_delay(close, 1), 0), 60) / (
|
|
804
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 60) + 1e-12
|
|
805
|
+
)
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
def alpha158_sumn_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
809
|
+
"""固定参考版本的 alpha158/sumn_5 特征。"""
|
|
810
|
+
close = fields["close"]
|
|
811
|
+
return ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 5) / (
|
|
812
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 5) + 1e-12
|
|
813
|
+
)
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
def alpha158_sumn_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
817
|
+
"""固定参考版本的 alpha158/sumn_10 特征。"""
|
|
818
|
+
close = fields["close"]
|
|
819
|
+
return ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 10) / (
|
|
820
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 10) + 1e-12
|
|
821
|
+
)
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
def alpha158_sumn_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
825
|
+
"""固定参考版本的 alpha158/sumn_20 特征。"""
|
|
826
|
+
close = fields["close"]
|
|
827
|
+
return ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 20) / (
|
|
828
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 20) + 1e-12
|
|
829
|
+
)
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
def alpha158_sumn_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
833
|
+
"""固定参考版本的 alpha158/sumn_30 特征。"""
|
|
834
|
+
close = fields["close"]
|
|
835
|
+
return ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 30) / (
|
|
836
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 30) + 1e-12
|
|
837
|
+
)
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
def alpha158_sumn_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
841
|
+
"""固定参考版本的 alpha158/sumn_60 特征。"""
|
|
842
|
+
close = fields["close"]
|
|
843
|
+
return ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 60) / (
|
|
844
|
+
ts_sum(ts_abs(close - ts_delay(close, 1)), 60) + 1e-12
|
|
845
|
+
)
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
def alpha158_sumd_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
849
|
+
"""固定参考版本的 alpha158/sumd_5 特征。"""
|
|
850
|
+
close = fields["close"]
|
|
851
|
+
return (
|
|
852
|
+
ts_sum(ts_greater(close - ts_delay(close, 1), 0), 5)
|
|
853
|
+
- ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 5)
|
|
854
|
+
) / (ts_sum(ts_abs(close - ts_delay(close, 1)), 5) + 1e-12)
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
def alpha158_sumd_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
858
|
+
"""固定参考版本的 alpha158/sumd_10 特征。"""
|
|
859
|
+
close = fields["close"]
|
|
860
|
+
return (
|
|
861
|
+
ts_sum(ts_greater(close - ts_delay(close, 1), 0), 10)
|
|
862
|
+
- ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 10)
|
|
863
|
+
) / (ts_sum(ts_abs(close - ts_delay(close, 1)), 10) + 1e-12)
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
def alpha158_sumd_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
867
|
+
"""固定参考版本的 alpha158/sumd_20 特征。"""
|
|
868
|
+
close = fields["close"]
|
|
869
|
+
return (
|
|
870
|
+
ts_sum(ts_greater(close - ts_delay(close, 1), 0), 20)
|
|
871
|
+
- ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 20)
|
|
872
|
+
) / (ts_sum(ts_abs(close - ts_delay(close, 1)), 20) + 1e-12)
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
def alpha158_sumd_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
876
|
+
"""固定参考版本的 alpha158/sumd_30 特征。"""
|
|
877
|
+
close = fields["close"]
|
|
878
|
+
return (
|
|
879
|
+
ts_sum(ts_greater(close - ts_delay(close, 1), 0), 30)
|
|
880
|
+
- ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 30)
|
|
881
|
+
) / (ts_sum(ts_abs(close - ts_delay(close, 1)), 30) + 1e-12)
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
def alpha158_sumd_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
885
|
+
"""固定参考版本的 alpha158/sumd_60 特征。"""
|
|
886
|
+
close = fields["close"]
|
|
887
|
+
return (
|
|
888
|
+
ts_sum(ts_greater(close - ts_delay(close, 1), 0), 60)
|
|
889
|
+
- ts_sum(ts_greater(ts_delay(close, 1) - close, 0), 60)
|
|
890
|
+
) / (ts_sum(ts_abs(close - ts_delay(close, 1)), 60) + 1e-12)
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
def alpha158_vma_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
894
|
+
"""固定参考版本的 alpha158/vma_5 特征。"""
|
|
895
|
+
volume = fields["volume"]
|
|
896
|
+
return ts_mean(volume, 5) / (volume + 1e-12)
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
def alpha158_vma_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
900
|
+
"""固定参考版本的 alpha158/vma_10 特征。"""
|
|
901
|
+
volume = fields["volume"]
|
|
902
|
+
return ts_mean(volume, 10) / (volume + 1e-12)
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
def alpha158_vma_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
906
|
+
"""固定参考版本的 alpha158/vma_20 特征。"""
|
|
907
|
+
volume = fields["volume"]
|
|
908
|
+
return ts_mean(volume, 20) / (volume + 1e-12)
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
def alpha158_vma_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
912
|
+
"""固定参考版本的 alpha158/vma_30 特征。"""
|
|
913
|
+
volume = fields["volume"]
|
|
914
|
+
return ts_mean(volume, 30) / (volume + 1e-12)
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
def alpha158_vma_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
918
|
+
"""固定参考版本的 alpha158/vma_60 特征。"""
|
|
919
|
+
volume = fields["volume"]
|
|
920
|
+
return ts_mean(volume, 60) / (volume + 1e-12)
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
def alpha158_vstd_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
924
|
+
"""固定参考版本的 alpha158/vstd_5 特征。"""
|
|
925
|
+
volume = fields["volume"]
|
|
926
|
+
return ts_std(volume, 5) / (volume + 1e-12)
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
def alpha158_vstd_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
930
|
+
"""固定参考版本的 alpha158/vstd_10 特征。"""
|
|
931
|
+
volume = fields["volume"]
|
|
932
|
+
return ts_std(volume, 10) / (volume + 1e-12)
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
def alpha158_vstd_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
936
|
+
"""固定参考版本的 alpha158/vstd_20 特征。"""
|
|
937
|
+
volume = fields["volume"]
|
|
938
|
+
return ts_std(volume, 20) / (volume + 1e-12)
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
def alpha158_vstd_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
942
|
+
"""固定参考版本的 alpha158/vstd_30 特征。"""
|
|
943
|
+
volume = fields["volume"]
|
|
944
|
+
return ts_std(volume, 30) / (volume + 1e-12)
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
def alpha158_vstd_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
948
|
+
"""固定参考版本的 alpha158/vstd_60 特征。"""
|
|
949
|
+
volume = fields["volume"]
|
|
950
|
+
return ts_std(volume, 60) / (volume + 1e-12)
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
def alpha158_wvma_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
954
|
+
"""固定参考版本的 alpha158/wvma_5 特征。"""
|
|
955
|
+
close = fields["close"]
|
|
956
|
+
volume = fields["volume"]
|
|
957
|
+
return ts_std(ts_abs(close / ts_delay(close, 1) - 1) * volume, 5) / (
|
|
958
|
+
ts_mean(ts_abs(close / ts_delay(close, 1) - 1) * volume, 5) + 1e-12
|
|
959
|
+
)
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
def alpha158_wvma_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
963
|
+
"""固定参考版本的 alpha158/wvma_10 特征。"""
|
|
964
|
+
close = fields["close"]
|
|
965
|
+
volume = fields["volume"]
|
|
966
|
+
return ts_std(ts_abs(close / ts_delay(close, 1) - 1) * volume, 10) / (
|
|
967
|
+
ts_mean(ts_abs(close / ts_delay(close, 1) - 1) * volume, 10) + 1e-12
|
|
968
|
+
)
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
def alpha158_wvma_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
972
|
+
"""固定参考版本的 alpha158/wvma_20 特征。"""
|
|
973
|
+
close = fields["close"]
|
|
974
|
+
volume = fields["volume"]
|
|
975
|
+
return ts_std(ts_abs(close / ts_delay(close, 1) - 1) * volume, 20) / (
|
|
976
|
+
ts_mean(ts_abs(close / ts_delay(close, 1) - 1) * volume, 20) + 1e-12
|
|
977
|
+
)
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
def alpha158_wvma_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
981
|
+
"""固定参考版本的 alpha158/wvma_30 特征。"""
|
|
982
|
+
close = fields["close"]
|
|
983
|
+
volume = fields["volume"]
|
|
984
|
+
return ts_std(ts_abs(close / ts_delay(close, 1) - 1) * volume, 30) / (
|
|
985
|
+
ts_mean(ts_abs(close / ts_delay(close, 1) - 1) * volume, 30) + 1e-12
|
|
986
|
+
)
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
def alpha158_wvma_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
990
|
+
"""固定参考版本的 alpha158/wvma_60 特征。"""
|
|
991
|
+
close = fields["close"]
|
|
992
|
+
volume = fields["volume"]
|
|
993
|
+
return ts_std(ts_abs(close / ts_delay(close, 1) - 1) * volume, 60) / (
|
|
994
|
+
ts_mean(ts_abs(close / ts_delay(close, 1) - 1) * volume, 60) + 1e-12
|
|
995
|
+
)
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
def alpha158_vsump_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
999
|
+
"""固定参考版本的 alpha158/vsump_5 特征。"""
|
|
1000
|
+
volume = fields["volume"]
|
|
1001
|
+
return ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 5) / (
|
|
1002
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 5) + 1e-12
|
|
1003
|
+
)
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
def alpha158_vsump_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1007
|
+
"""固定参考版本的 alpha158/vsump_10 特征。"""
|
|
1008
|
+
volume = fields["volume"]
|
|
1009
|
+
return ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 10) / (
|
|
1010
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 10) + 1e-12
|
|
1011
|
+
)
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
def alpha158_vsump_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1015
|
+
"""固定参考版本的 alpha158/vsump_20 特征。"""
|
|
1016
|
+
volume = fields["volume"]
|
|
1017
|
+
return ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 20) / (
|
|
1018
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 20) + 1e-12
|
|
1019
|
+
)
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
def alpha158_vsump_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1023
|
+
"""固定参考版本的 alpha158/vsump_30 特征。"""
|
|
1024
|
+
volume = fields["volume"]
|
|
1025
|
+
return ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 30) / (
|
|
1026
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 30) + 1e-12
|
|
1027
|
+
)
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
def alpha158_vsump_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1031
|
+
"""固定参考版本的 alpha158/vsump_60 特征。"""
|
|
1032
|
+
volume = fields["volume"]
|
|
1033
|
+
return ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 60) / (
|
|
1034
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 60) + 1e-12
|
|
1035
|
+
)
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
def alpha158_vsumn_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1039
|
+
"""固定参考版本的 alpha158/vsumn_5 特征。"""
|
|
1040
|
+
volume = fields["volume"]
|
|
1041
|
+
return ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 5) / (
|
|
1042
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 5) + 1e-12
|
|
1043
|
+
)
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
def alpha158_vsumn_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1047
|
+
"""固定参考版本的 alpha158/vsumn_10 特征。"""
|
|
1048
|
+
volume = fields["volume"]
|
|
1049
|
+
return ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 10) / (
|
|
1050
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 10) + 1e-12
|
|
1051
|
+
)
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
def alpha158_vsumn_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1055
|
+
"""固定参考版本的 alpha158/vsumn_20 特征。"""
|
|
1056
|
+
volume = fields["volume"]
|
|
1057
|
+
return ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 20) / (
|
|
1058
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 20) + 1e-12
|
|
1059
|
+
)
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
def alpha158_vsumn_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1063
|
+
"""固定参考版本的 alpha158/vsumn_30 特征。"""
|
|
1064
|
+
volume = fields["volume"]
|
|
1065
|
+
return ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 30) / (
|
|
1066
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 30) + 1e-12
|
|
1067
|
+
)
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
def alpha158_vsumn_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1071
|
+
"""固定参考版本的 alpha158/vsumn_60 特征。"""
|
|
1072
|
+
volume = fields["volume"]
|
|
1073
|
+
return ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 60) / (
|
|
1074
|
+
ts_sum(ts_abs(volume - ts_delay(volume, 1)), 60) + 1e-12
|
|
1075
|
+
)
|
|
1076
|
+
|
|
1077
|
+
|
|
1078
|
+
def alpha158_vsumd_5(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1079
|
+
"""固定参考版本的 alpha158/vsumd_5 特征。"""
|
|
1080
|
+
volume = fields["volume"]
|
|
1081
|
+
return (
|
|
1082
|
+
ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 5)
|
|
1083
|
+
- ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 5)
|
|
1084
|
+
) / (ts_sum(ts_abs(volume - ts_delay(volume, 1)), 5) + 1e-12)
|
|
1085
|
+
|
|
1086
|
+
|
|
1087
|
+
def alpha158_vsumd_10(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1088
|
+
"""固定参考版本的 alpha158/vsumd_10 特征。"""
|
|
1089
|
+
volume = fields["volume"]
|
|
1090
|
+
return (
|
|
1091
|
+
ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 10)
|
|
1092
|
+
- ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 10)
|
|
1093
|
+
) / (ts_sum(ts_abs(volume - ts_delay(volume, 1)), 10) + 1e-12)
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
def alpha158_vsumd_20(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1097
|
+
"""固定参考版本的 alpha158/vsumd_20 特征。"""
|
|
1098
|
+
volume = fields["volume"]
|
|
1099
|
+
return (
|
|
1100
|
+
ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 20)
|
|
1101
|
+
- ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 20)
|
|
1102
|
+
) / (ts_sum(ts_abs(volume - ts_delay(volume, 1)), 20) + 1e-12)
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
def alpha158_vsumd_30(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1106
|
+
"""固定参考版本的 alpha158/vsumd_30 特征。"""
|
|
1107
|
+
volume = fields["volume"]
|
|
1108
|
+
return (
|
|
1109
|
+
ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 30)
|
|
1110
|
+
- ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 30)
|
|
1111
|
+
) / (ts_sum(ts_abs(volume - ts_delay(volume, 1)), 30) + 1e-12)
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
def alpha158_vsumd_60(fields: dict[str, PanelExpression]) -> PanelExpression:
|
|
1115
|
+
"""固定参考版本的 alpha158/vsumd_60 特征。"""
|
|
1116
|
+
volume = fields["volume"]
|
|
1117
|
+
return (
|
|
1118
|
+
ts_sum(ts_greater(volume - ts_delay(volume, 1), 0), 60)
|
|
1119
|
+
- ts_sum(ts_greater(ts_delay(volume, 1) - volume, 0), 60)
|
|
1120
|
+
) / (ts_sum(ts_abs(volume - ts_delay(volume, 1)), 60) + 1e-12)
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
ALPHA158_RECIPES: dict[
|
|
1124
|
+
str, tuple[Callable[[dict[str, PanelExpression]], PanelExpression], int, tuple[str, ...]]
|
|
1125
|
+
] = {
|
|
1126
|
+
"alpha158_kmid": (alpha158_kmid, 1, ("close", "open")),
|
|
1127
|
+
"alpha158_klen": (alpha158_klen, 1, ("high", "low", "open")),
|
|
1128
|
+
"alpha158_kmid_2": (alpha158_kmid_2, 1, ("close", "high", "low", "open")),
|
|
1129
|
+
"alpha158_kup": (alpha158_kup, 1, ("close", "high", "open")),
|
|
1130
|
+
"alpha158_kup_2": (alpha158_kup_2, 1, ("close", "high", "low", "open")),
|
|
1131
|
+
"alpha158_klow": (alpha158_klow, 1, ("close", "low", "open")),
|
|
1132
|
+
"alpha158_klow_2": (alpha158_klow_2, 1, ("close", "high", "low", "open")),
|
|
1133
|
+
"alpha158_ksft": (alpha158_ksft, 1, ("close", "high", "low", "open")),
|
|
1134
|
+
"alpha158_ksft_2": (alpha158_ksft_2, 1, ("close", "high", "low")),
|
|
1135
|
+
"alpha158_open_0": (alpha158_open_0, 1, ("close", "open")),
|
|
1136
|
+
"alpha158_high_0": (alpha158_high_0, 1, ("close", "high")),
|
|
1137
|
+
"alpha158_low_0": (alpha158_low_0, 1, ("close", "low")),
|
|
1138
|
+
"alpha158_vwap_0": (alpha158_vwap_0, 1, ("close", "vwap")),
|
|
1139
|
+
"alpha158_roc_5": (alpha158_roc_5, 6, ("close",)),
|
|
1140
|
+
"alpha158_roc_10": (alpha158_roc_10, 11, ("close",)),
|
|
1141
|
+
"alpha158_roc_20": (alpha158_roc_20, 21, ("close",)),
|
|
1142
|
+
"alpha158_roc_30": (alpha158_roc_30, 31, ("close",)),
|
|
1143
|
+
"alpha158_roc_60": (alpha158_roc_60, 61, ("close",)),
|
|
1144
|
+
"alpha158_ma_5": (alpha158_ma_5, 5, ("close",)),
|
|
1145
|
+
"alpha158_ma_10": (alpha158_ma_10, 10, ("close",)),
|
|
1146
|
+
"alpha158_ma_20": (alpha158_ma_20, 20, ("close",)),
|
|
1147
|
+
"alpha158_ma_30": (alpha158_ma_30, 30, ("close",)),
|
|
1148
|
+
"alpha158_ma_60": (alpha158_ma_60, 60, ("close",)),
|
|
1149
|
+
"alpha158_std_5": (alpha158_std_5, 5, ("close",)),
|
|
1150
|
+
"alpha158_std_10": (alpha158_std_10, 10, ("close",)),
|
|
1151
|
+
"alpha158_std_20": (alpha158_std_20, 20, ("close",)),
|
|
1152
|
+
"alpha158_std_30": (alpha158_std_30, 30, ("close",)),
|
|
1153
|
+
"alpha158_std_60": (alpha158_std_60, 60, ("close",)),
|
|
1154
|
+
"alpha158_beta_5": (alpha158_beta_5, 5, ("close",)),
|
|
1155
|
+
"alpha158_beta_10": (alpha158_beta_10, 10, ("close",)),
|
|
1156
|
+
"alpha158_beta_20": (alpha158_beta_20, 20, ("close",)),
|
|
1157
|
+
"alpha158_beta_30": (alpha158_beta_30, 30, ("close",)),
|
|
1158
|
+
"alpha158_beta_60": (alpha158_beta_60, 60, ("close",)),
|
|
1159
|
+
"alpha158_rsqr_5": (alpha158_rsqr_5, 5, ("close",)),
|
|
1160
|
+
"alpha158_rsqr_10": (alpha158_rsqr_10, 10, ("close",)),
|
|
1161
|
+
"alpha158_rsqr_20": (alpha158_rsqr_20, 20, ("close",)),
|
|
1162
|
+
"alpha158_rsqr_30": (alpha158_rsqr_30, 30, ("close",)),
|
|
1163
|
+
"alpha158_rsqr_60": (alpha158_rsqr_60, 60, ("close",)),
|
|
1164
|
+
"alpha158_resi_5": (alpha158_resi_5, 5, ("close",)),
|
|
1165
|
+
"alpha158_resi_10": (alpha158_resi_10, 10, ("close",)),
|
|
1166
|
+
"alpha158_resi_20": (alpha158_resi_20, 20, ("close",)),
|
|
1167
|
+
"alpha158_resi_30": (alpha158_resi_30, 30, ("close",)),
|
|
1168
|
+
"alpha158_resi_60": (alpha158_resi_60, 60, ("close",)),
|
|
1169
|
+
"alpha158_max_5": (alpha158_max_5, 5, ("close", "high")),
|
|
1170
|
+
"alpha158_max_10": (alpha158_max_10, 10, ("close", "high")),
|
|
1171
|
+
"alpha158_max_20": (alpha158_max_20, 20, ("close", "high")),
|
|
1172
|
+
"alpha158_max_30": (alpha158_max_30, 30, ("close", "high")),
|
|
1173
|
+
"alpha158_max_60": (alpha158_max_60, 60, ("close", "high")),
|
|
1174
|
+
"alpha158_min_5": (alpha158_min_5, 5, ("close", "low")),
|
|
1175
|
+
"alpha158_min_10": (alpha158_min_10, 10, ("close", "low")),
|
|
1176
|
+
"alpha158_min_20": (alpha158_min_20, 20, ("close", "low")),
|
|
1177
|
+
"alpha158_min_30": (alpha158_min_30, 30, ("close", "low")),
|
|
1178
|
+
"alpha158_min_60": (alpha158_min_60, 60, ("close", "low")),
|
|
1179
|
+
"alpha158_qtlu_5": (alpha158_qtlu_5, 5, ("close",)),
|
|
1180
|
+
"alpha158_qtlu_10": (alpha158_qtlu_10, 10, ("close",)),
|
|
1181
|
+
"alpha158_qtlu_20": (alpha158_qtlu_20, 20, ("close",)),
|
|
1182
|
+
"alpha158_qtlu_30": (alpha158_qtlu_30, 30, ("close",)),
|
|
1183
|
+
"alpha158_qtlu_60": (alpha158_qtlu_60, 60, ("close",)),
|
|
1184
|
+
"alpha158_qtld_5": (alpha158_qtld_5, 5, ("close",)),
|
|
1185
|
+
"alpha158_qtld_10": (alpha158_qtld_10, 10, ("close",)),
|
|
1186
|
+
"alpha158_qtld_20": (alpha158_qtld_20, 20, ("close",)),
|
|
1187
|
+
"alpha158_qtld_30": (alpha158_qtld_30, 30, ("close",)),
|
|
1188
|
+
"alpha158_qtld_60": (alpha158_qtld_60, 60, ("close",)),
|
|
1189
|
+
"alpha158_rank_5": (alpha158_rank_5, 5, ("close",)),
|
|
1190
|
+
"alpha158_rank_10": (alpha158_rank_10, 10, ("close",)),
|
|
1191
|
+
"alpha158_rank_20": (alpha158_rank_20, 20, ("close",)),
|
|
1192
|
+
"alpha158_rank_30": (alpha158_rank_30, 30, ("close",)),
|
|
1193
|
+
"alpha158_rank_60": (alpha158_rank_60, 60, ("close",)),
|
|
1194
|
+
"alpha158_rsv_5": (alpha158_rsv_5, 5, ("close", "high", "low")),
|
|
1195
|
+
"alpha158_rsv_10": (alpha158_rsv_10, 10, ("close", "high", "low")),
|
|
1196
|
+
"alpha158_rsv_20": (alpha158_rsv_20, 20, ("close", "high", "low")),
|
|
1197
|
+
"alpha158_rsv_30": (alpha158_rsv_30, 30, ("close", "high", "low")),
|
|
1198
|
+
"alpha158_rsv_60": (alpha158_rsv_60, 60, ("close", "high", "low")),
|
|
1199
|
+
"alpha158_imax_5": (alpha158_imax_5, 5, ("high",)),
|
|
1200
|
+
"alpha158_imax_10": (alpha158_imax_10, 10, ("high",)),
|
|
1201
|
+
"alpha158_imax_20": (alpha158_imax_20, 20, ("high",)),
|
|
1202
|
+
"alpha158_imax_30": (alpha158_imax_30, 30, ("high",)),
|
|
1203
|
+
"alpha158_imax_60": (alpha158_imax_60, 60, ("high",)),
|
|
1204
|
+
"alpha158_imin_5": (alpha158_imin_5, 5, ("low",)),
|
|
1205
|
+
"alpha158_imin_10": (alpha158_imin_10, 10, ("low",)),
|
|
1206
|
+
"alpha158_imin_20": (alpha158_imin_20, 20, ("low",)),
|
|
1207
|
+
"alpha158_imin_30": (alpha158_imin_30, 30, ("low",)),
|
|
1208
|
+
"alpha158_imin_60": (alpha158_imin_60, 60, ("low",)),
|
|
1209
|
+
"alpha158_imxd_5": (alpha158_imxd_5, 5, ("high", "low")),
|
|
1210
|
+
"alpha158_imxd_10": (alpha158_imxd_10, 10, ("high", "low")),
|
|
1211
|
+
"alpha158_imxd_20": (alpha158_imxd_20, 20, ("high", "low")),
|
|
1212
|
+
"alpha158_imxd_30": (alpha158_imxd_30, 30, ("high", "low")),
|
|
1213
|
+
"alpha158_imxd_60": (alpha158_imxd_60, 60, ("high", "low")),
|
|
1214
|
+
"alpha158_corr_5": (alpha158_corr_5, 5, ("close", "volume")),
|
|
1215
|
+
"alpha158_corr_10": (alpha158_corr_10, 10, ("close", "volume")),
|
|
1216
|
+
"alpha158_corr_20": (alpha158_corr_20, 20, ("close", "volume")),
|
|
1217
|
+
"alpha158_corr_30": (alpha158_corr_30, 30, ("close", "volume")),
|
|
1218
|
+
"alpha158_corr_60": (alpha158_corr_60, 60, ("close", "volume")),
|
|
1219
|
+
"alpha158_cord_5": (alpha158_cord_5, 6, ("close", "volume")),
|
|
1220
|
+
"alpha158_cord_10": (alpha158_cord_10, 11, ("close", "volume")),
|
|
1221
|
+
"alpha158_cord_20": (alpha158_cord_20, 21, ("close", "volume")),
|
|
1222
|
+
"alpha158_cord_30": (alpha158_cord_30, 31, ("close", "volume")),
|
|
1223
|
+
"alpha158_cord_60": (alpha158_cord_60, 61, ("close", "volume")),
|
|
1224
|
+
"alpha158_cntp_5": (alpha158_cntp_5, 6, ("close",)),
|
|
1225
|
+
"alpha158_cntp_10": (alpha158_cntp_10, 11, ("close",)),
|
|
1226
|
+
"alpha158_cntp_20": (alpha158_cntp_20, 21, ("close",)),
|
|
1227
|
+
"alpha158_cntp_30": (alpha158_cntp_30, 31, ("close",)),
|
|
1228
|
+
"alpha158_cntp_60": (alpha158_cntp_60, 61, ("close",)),
|
|
1229
|
+
"alpha158_cntn_5": (alpha158_cntn_5, 6, ("close",)),
|
|
1230
|
+
"alpha158_cntn_10": (alpha158_cntn_10, 11, ("close",)),
|
|
1231
|
+
"alpha158_cntn_20": (alpha158_cntn_20, 21, ("close",)),
|
|
1232
|
+
"alpha158_cntn_30": (alpha158_cntn_30, 31, ("close",)),
|
|
1233
|
+
"alpha158_cntn_60": (alpha158_cntn_60, 61, ("close",)),
|
|
1234
|
+
"alpha158_cntd_5": (alpha158_cntd_5, 6, ("close",)),
|
|
1235
|
+
"alpha158_cntd_10": (alpha158_cntd_10, 11, ("close",)),
|
|
1236
|
+
"alpha158_cntd_20": (alpha158_cntd_20, 21, ("close",)),
|
|
1237
|
+
"alpha158_cntd_30": (alpha158_cntd_30, 31, ("close",)),
|
|
1238
|
+
"alpha158_cntd_60": (alpha158_cntd_60, 61, ("close",)),
|
|
1239
|
+
"alpha158_sump_5": (alpha158_sump_5, 6, ("close",)),
|
|
1240
|
+
"alpha158_sump_10": (alpha158_sump_10, 11, ("close",)),
|
|
1241
|
+
"alpha158_sump_20": (alpha158_sump_20, 21, ("close",)),
|
|
1242
|
+
"alpha158_sump_30": (alpha158_sump_30, 31, ("close",)),
|
|
1243
|
+
"alpha158_sump_60": (alpha158_sump_60, 61, ("close",)),
|
|
1244
|
+
"alpha158_sumn_5": (alpha158_sumn_5, 6, ("close",)),
|
|
1245
|
+
"alpha158_sumn_10": (alpha158_sumn_10, 11, ("close",)),
|
|
1246
|
+
"alpha158_sumn_20": (alpha158_sumn_20, 21, ("close",)),
|
|
1247
|
+
"alpha158_sumn_30": (alpha158_sumn_30, 31, ("close",)),
|
|
1248
|
+
"alpha158_sumn_60": (alpha158_sumn_60, 61, ("close",)),
|
|
1249
|
+
"alpha158_sumd_5": (alpha158_sumd_5, 6, ("close",)),
|
|
1250
|
+
"alpha158_sumd_10": (alpha158_sumd_10, 11, ("close",)),
|
|
1251
|
+
"alpha158_sumd_20": (alpha158_sumd_20, 21, ("close",)),
|
|
1252
|
+
"alpha158_sumd_30": (alpha158_sumd_30, 31, ("close",)),
|
|
1253
|
+
"alpha158_sumd_60": (alpha158_sumd_60, 61, ("close",)),
|
|
1254
|
+
"alpha158_vma_5": (alpha158_vma_5, 5, ("volume",)),
|
|
1255
|
+
"alpha158_vma_10": (alpha158_vma_10, 10, ("volume",)),
|
|
1256
|
+
"alpha158_vma_20": (alpha158_vma_20, 20, ("volume",)),
|
|
1257
|
+
"alpha158_vma_30": (alpha158_vma_30, 30, ("volume",)),
|
|
1258
|
+
"alpha158_vma_60": (alpha158_vma_60, 60, ("volume",)),
|
|
1259
|
+
"alpha158_vstd_5": (alpha158_vstd_5, 5, ("volume",)),
|
|
1260
|
+
"alpha158_vstd_10": (alpha158_vstd_10, 10, ("volume",)),
|
|
1261
|
+
"alpha158_vstd_20": (alpha158_vstd_20, 20, ("volume",)),
|
|
1262
|
+
"alpha158_vstd_30": (alpha158_vstd_30, 30, ("volume",)),
|
|
1263
|
+
"alpha158_vstd_60": (alpha158_vstd_60, 60, ("volume",)),
|
|
1264
|
+
"alpha158_wvma_5": (alpha158_wvma_5, 6, ("close", "volume")),
|
|
1265
|
+
"alpha158_wvma_10": (alpha158_wvma_10, 11, ("close", "volume")),
|
|
1266
|
+
"alpha158_wvma_20": (alpha158_wvma_20, 21, ("close", "volume")),
|
|
1267
|
+
"alpha158_wvma_30": (alpha158_wvma_30, 31, ("close", "volume")),
|
|
1268
|
+
"alpha158_wvma_60": (alpha158_wvma_60, 61, ("close", "volume")),
|
|
1269
|
+
"alpha158_vsump_5": (alpha158_vsump_5, 6, ("volume",)),
|
|
1270
|
+
"alpha158_vsump_10": (alpha158_vsump_10, 11, ("volume",)),
|
|
1271
|
+
"alpha158_vsump_20": (alpha158_vsump_20, 21, ("volume",)),
|
|
1272
|
+
"alpha158_vsump_30": (alpha158_vsump_30, 31, ("volume",)),
|
|
1273
|
+
"alpha158_vsump_60": (alpha158_vsump_60, 61, ("volume",)),
|
|
1274
|
+
"alpha158_vsumn_5": (alpha158_vsumn_5, 6, ("volume",)),
|
|
1275
|
+
"alpha158_vsumn_10": (alpha158_vsumn_10, 11, ("volume",)),
|
|
1276
|
+
"alpha158_vsumn_20": (alpha158_vsumn_20, 21, ("volume",)),
|
|
1277
|
+
"alpha158_vsumn_30": (alpha158_vsumn_30, 31, ("volume",)),
|
|
1278
|
+
"alpha158_vsumn_60": (alpha158_vsumn_60, 61, ("volume",)),
|
|
1279
|
+
"alpha158_vsumd_5": (alpha158_vsumd_5, 6, ("volume",)),
|
|
1280
|
+
"alpha158_vsumd_10": (alpha158_vsumd_10, 11, ("volume",)),
|
|
1281
|
+
"alpha158_vsumd_20": (alpha158_vsumd_20, 21, ("volume",)),
|
|
1282
|
+
"alpha158_vsumd_30": (alpha158_vsumd_30, 31, ("volume",)),
|
|
1283
|
+
"alpha158_vsumd_60": (alpha158_vsumd_60, 61, ("volume",)),
|
|
1284
|
+
}
|