{ "strategy_id": "benchmark-native-factor-overlay", "strategy_version_id": "1.0.0", "user_id": "2d84120b-567a-417e-b6a4-6ffedceb132f", "runtime": { "start_date": "2025-09-08", "end_date": "2025-09-12", "frequency": "1d", "source_table": "strategy_factory_source_lake.daily_source_rows_v1", "signal_symbol": "000300.SH", "benchmark_symbol": "000300.SH", "initial_cash": 10000000.0, "backtestDataBundleId": "bt_bundle_85825809f940ce489825", "backtestDataBundleHash": "c83203674aa4ba23eed0bbc043c2a53f13bcbc37f45c395b3fb8d560a4d14991" }, "execution": { "matchingType": "current_bar_close", "rebalanceCashMode": "sell_then_buy", "sellThenBuyDelaySlippageRate": 0, "slippageModel": "price_ratio", "slippageValue": 0.002, "commissionRate": 0.0001, "minimumCommission": 0.0, "stampTaxRateBeforeChange": 0.001, "stampTaxRateAfterChange": 0.0005, "stampTaxChangeDate": "2023-08-28", "volumeLimit": true, "liquidityLimit": false, "volumePercent": 0.25, "riskPolicy": { "allowMarketOrders": true, "blacklistEnabled": true, "blacklistedSymbols": [], "commissionRate": 0.0001, "forbidSameDayRebuyAfterSell": false, "liquidityLimitEnabled": false, "liveTradingEnabled": false, "maxOrderNotional": 100000000, "maxOrderQuantity": 1000000, "maxSymbolPosition": 10000000, "minimumCommission": 0, "rejectBjseBuy": true, "rejectBjseSelection": false, "rejectInactiveBuy": true, "rejectInactiveSelection": false, "rejectInactiveSell": true, "rejectKcbBuy": false, "rejectKcbSelection": false, "rejectLowerLimitSelection": false, "rejectLowerLimitSell": true, "rejectNewListingBuy": true, "rejectNewListingSelection": false, "rejectOneYuanBuy": true, "rejectOneYuanSelection": false, "rejectPausedBuy": true, "rejectPausedSelection": false, "rejectPausedSell": true, "rejectStBuy": true, "rejectStSelection": false, "rejectStarStBuy": true, "rejectStarStSelection": false, "rejectUpperLimitBuy": true, "rejectUpperLimitSelection": false, "respectAllowBuySell": true, "stampTaxChangeDate": "2023-08-28", "stampTaxRateAfterChange": 0.0005, "stampTaxRateBeforeChange": 0.001, "volumeLimitEnabled": true, "volumePercent": 0.25 } }, "strategy_source": { "source_type": "platform-strategy", "language": "engine-script", "parser": "omniquant-engine-script-v2", "source_code": "strategy(\"许总_组合_backtest\") {\n mode(\"rotation\")\n market(\"CN_A\")\n benchmark(\"000300.SH\")\n signal(\"000300.SH\")\n rebalance.every_days(1).at([\"09:30\"])\n universe.include([\"688116.SH\", \"603200.SH\", \"300395.SZ\", \"600732.SH\", \"000063.SZ\", \"002625.SZ\", \"300811.SZ\", \"002851.SZ\", \"000988.SZ\", \"002281.SZ\", \"300205.SZ\", \"002239.SZ\", \"600079.SH\", \"600276.SH\", \"600909.SH\", \"002169.SZ\", \"603156.SH\", \"002654.SZ\", \"000999.SZ\", \"601066.SH\", \"603345.SH\", \"000333.SZ\", \"603726.SH\", \"688012.SH\"])\n selection.limit(24)\n selection.candidate_limit(24)\n selection.market_cap_band(field=\"close\", lower=0, upper=1000000000000)\n filter.stock_expr((close > 0)) && (ths_up_days_stock >= 1)\n ordering.rank_expr((((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) || ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) || (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") || ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") || symbol == \"688012.SH\")))) ? (((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) ? ((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) ? (((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") ? ((symbol == \"688116.SH\" || symbol == \"603200.SH\") ? (symbol == \"688116.SH\" ? (0) : (1)) : (2)) : ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") ? (symbol == \"600732.SH\" ? (3) : (4)) : (5))) : (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") ? ((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") ? (symbol == \"300811.SZ\" ? (6) : (7)) : (8)) : ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") ? (symbol == \"002281.SZ\" ? (9) : (10)) : (11)))) : ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) ? (((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") ? ((symbol == \"600079.SH\" || symbol == \"600276.SH\") ? (symbol == \"600079.SH\" ? (12) : (13)) : (14)) : ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") ? (symbol == \"002169.SZ\" ? (15) : (16)) : (17))) : (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") ? ((symbol == \"000999.SZ\" || symbol == \"601066.SH\") ? (symbol == \"000999.SZ\" ? (18) : (19)) : (20)) : ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") ? (symbol == \"000333.SZ\" ? (21) : (22)) : (23))))) : 24, \"asc\")\n risk.index_exposure(max(0.0, 0.9000000000 - 0.0000 / max(total_equity, 1.0)))\n allocation.buy_scale((((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) || ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) || (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") || ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") || symbol == \"688012.SH\")))) ? (((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || (symbol == \"300395.SZ\" || symbol == \"600732.SH\")) || ((symbol == \"000063.SZ\" || symbol == \"002625.SZ\") || (symbol == \"300811.SZ\" || symbol == \"002851.SZ\"))) || (((symbol == \"000988.SZ\" || symbol == \"002281.SZ\") || (symbol == \"300205.SZ\" || symbol == \"002239.SZ\")) || ((symbol == \"600079.SH\" || symbol == \"600276.SH\") || (symbol == \"600909.SH\" || symbol == \"002169.SZ\")))) ? (1.0008000000) : (0.9984000000)) : 0.0)\n risk.stop_loss(holding_return <= -0.0800000000)\n risk.take_profit(holding_return >= 0.1600000000)\n risk.reference_price_mode(\"position_average_entry_price\")\n trading.daily_top_up(true)\n trading.daily_position_target_adjust(true)\n trading.target_portfolio_daily(true)\n trading.rebalance_existing_positions(true)\n trading.hold_until_exit(true)\n trading.retry_empty_rebalance(true)\n trading.release_slot_on_exit_signal(true)\n trading.redistribute_target_weights_after_exit(true)\n trading.reenter_exited_targets(true)\n execution.matching_type(\"current_bar_close\")\n}" }, "strategy_spec": { "benchmark": { "fallbackInstrumentId": "000300.SH", "instrumentId": "000300.SH", "note": "必须使用真实指数链路;若 000852.SH 不可用,应直接报错而不是退化到其他标的。" }, "engineConfig": { "benchmarkSymbol": "000300.SH", "commissionRate": 0.0001, "dividendReinvestment": false, "dynamicRange": { "baseCapFloor": 7, "baseIndexLevel": 2000, "capSpan": 1000000000000, "xs": 0.008 }, "frequency": "1d", "indexThrottle": { "defensiveExposure": 0.5, "fullExposure": 1, "longDays": 10, "rsiRate": 1.0001, "shortDays": 5 }, "liquidityLimit": false, "matchingType": "current_bar_close", "minimumCommission": 0.0, "rankLimit": 24, "rebalanceCashMode": "sell_then_buy", "rebalanceSchedule": { "frequency": "daily", "time": "09:30" }, "refreshRate": 1, "riskPolicy": { "allowMarketOrders": true, "blacklistEnabled": true, "blacklistedSymbols": [], "commissionRate": 0.0001, "forbidSameDayRebuyAfterSell": false, "liquidityLimitEnabled": false, "liveTradingEnabled": false, "maxOrderNotional": 100000000, "maxOrderQuantity": 1000000, "maxSymbolPosition": 10000000, "minimumCommission": 0, "rejectBjseBuy": true, "rejectBjseSelection": false, "rejectInactiveBuy": true, "rejectInactiveSelection": false, "rejectInactiveSell": true, "rejectKcbBuy": false, "rejectKcbSelection": false, "rejectLowerLimitSelection": false, "rejectLowerLimitSell": true, "rejectNewListingBuy": true, "rejectNewListingSelection": false, "rejectOneYuanBuy": true, "rejectOneYuanSelection": false, "rejectPausedBuy": true, "rejectPausedSelection": false, "rejectPausedSell": true, "rejectStBuy": true, "rejectStSelection": false, "rejectStarStBuy": true, "rejectStarStSelection": false, "rejectUpperLimitBuy": true, "rejectUpperLimitSelection": false, "respectAllowBuySell": true, "stampTaxChangeDate": "2023-08-28", "stampTaxRateAfterChange": 0.0005, "stampTaxRateBeforeChange": 0.001, "volumeLimitEnabled": true, "volumePercent": 0.25 }, "rsiRate": 1.0001, "sellThenBuyDelaySlippageRate": 0, "signalSymbol": "000300.SH", "skipWindows": [], "slippageModel": "price_ratio", "slippageValue": 0.002, "stampTaxChangeDate": "2023-08-28", "stampTaxRateAfterChange": 0.0005, "stampTaxRateBeforeChange": 0.001, "stockMaFilter": { "longDays": 20, "midDays": 10, "rsiRate": 1.0001, "shortDays": 5, "volumeLongDays": 60, "volumeShortDays": 5 }, "stopLossMultiplier": 0.93, "strictValueBudget": true, "takeProfitMultiplier": 1.07, "templateId": "许总_组合_backtest", "volumeLimit": true, "volumePercent": 0.25 }, "execution": { "commissionRate": 0.0001, "executionGranularity": "daily_or_minute_bar", "extractor": "omniquant-engine-script-v2", "frequency": "1d", "liquidityLimit": false, "matchingType": "current_bar_close", "minimumCommission": 0.0, "priceSource": "current_bar_close_or_next_bar_open_or_minute_bar", "rebalanceCashMode": "sell_then_buy", "riskPolicy": { "allowMarketOrders": true, "blacklistEnabled": true, "blacklistedSymbols": [], "commissionRate": 0.0001, "forbidSameDayRebuyAfterSell": false, "liquidityLimitEnabled": false, "liveTradingEnabled": false, "maxOrderNotional": 100000000, "maxOrderQuantity": 1000000, "maxSymbolPosition": 10000000, "minimumCommission": 0, "rejectBjseBuy": true, "rejectBjseSelection": false, "rejectInactiveBuy": true, "rejectInactiveSelection": false, "rejectInactiveSell": true, "rejectKcbBuy": false, "rejectKcbSelection": false, "rejectLowerLimitSelection": false, "rejectLowerLimitSell": true, "rejectNewListingBuy": true, "rejectNewListingSelection": false, "rejectOneYuanBuy": true, "rejectOneYuanSelection": false, "rejectPausedBuy": true, "rejectPausedSelection": false, "rejectPausedSell": true, "rejectStBuy": true, "rejectStSelection": false, "rejectStarStBuy": true, "rejectStarStSelection": false, "rejectUpperLimitBuy": true, "rejectUpperLimitSelection": false, "respectAllowBuySell": true, "stampTaxChangeDate": "2023-08-28", "stampTaxRateAfterChange": 0.0005, "stampTaxRateBeforeChange": 0.001, "volumeLimitEnabled": true, "volumePercent": 0.25 }, "selectionGranularity": "strategy_factory_source_lake.daily_source_rows_v1", "sellThenBuyDelaySlippageRate": 0, "slippageModel": "price_ratio", "slippageValue": 0.002, "sourceKind": "platform-strategy", "sourceLanguage": "engine-script", "stampTaxChangeDate": "2023-08-28", "stampTaxRateAfterChange": 0.0005, "stampTaxRateBeforeChange": 0.001, "strictValueBudget": true, "volumeLimit": true, "volumePercent": 0.25 }, "factorRefs": [ "close", "ths_up_days_stock" ], "factorValueBindings": [], "market": "CN_A", "metadata": { "backtestDataBundle": { "sourceTable": "strategy_factory_source_lake.daily_source_rows_v1", "backtestDataBundleId": "bt_bundle_85825809f940ce489825", "backtestDataBundleHash": "c83203674aa4ba23eed0bbc043c2a53f13bcbc37f45c395b3fb8d560a4d14991" }, "backtestDataBundleHash": "c83203674aa4ba23eed0bbc043c2a53f13bcbc37f45c395b3fb8d560a4d14991", "backtestDataBundleId": "bt_bundle_85825809f940ce489825", "sourceTable": "strategy_factory_source_lake.daily_source_rows_v1", "strategyExecutionContract": { "commissionRate": "0.0001", "dynamicSlippageImpact": "0", "dynamicSlippageMax": "0", "dynamicSlippageVolatility": "0", "frequency": "1d", "hash": "fnv1a-66a4a68e", "liquidityLimitEnabled": false, "matchingType": "current_bar_close", "minimumCommission": "0", "rebalanceCashMode": "sell_then_buy", "riskPolicy": { "allowMarketOrders": true, "blacklistEnabled": true, "blacklistedSymbols": [], "commissionRate": 0.0001, "forbidSameDayRebuyAfterSell": false, "liquidityLimitEnabled": false, "liveTradingEnabled": false, "maxOrderNotional": 100000000, "maxOrderQuantity": 1000000, "maxSymbolPosition": 10000000, "minimumCommission": 0, "rejectBjseBuy": true, "rejectBjseSelection": false, "rejectInactiveBuy": true, "rejectInactiveSelection": false, "rejectInactiveSell": true, "rejectKcbBuy": false, "rejectKcbSelection": false, "rejectLowerLimitSelection": false, "rejectLowerLimitSell": true, "rejectNewListingBuy": true, "rejectNewListingSelection": false, "rejectOneYuanBuy": true, "rejectOneYuanSelection": false, "rejectPausedBuy": true, "rejectPausedSelection": false, "rejectPausedSell": true, "rejectStBuy": true, "rejectStSelection": false, "rejectStarStBuy": true, "rejectStarStSelection": false, "rejectUpperLimitBuy": true, "rejectUpperLimitSelection": false, "respectAllowBuySell": true, "stampTaxChangeDate": "2023-08-28", "stampTaxRateAfterChange": 0.0005, "stampTaxRateBeforeChange": 0.001, "volumeLimitEnabled": true, "volumePercent": 0.25 }, "sellThenBuyDelaySlippageRate": "0", "slippageMode": "fixed", "slippageRate": "0.002", "stampTaxChangeDate": "2023-08-28", "stampTaxRateAfterChange": "0.0005", "stampTaxRateBeforeChange": "0.001", "version": "fidc-strategy-execution-v1", "volumeLimitEnabled": true, "volumePercent": "0.25" }, "strategyExecutionContractHash": "fnv1a-66a4a68e", "strategyExecutionContractVersion": "fidc-strategy-execution-v1", "strategyRiskPolicyVersion": "fidc-risk-policy-v2" }, "mode": "rotation", "rebalance": { "dailyApproximation": "日线回测按 matching_type 撮合;分钟线回测按交易时刻分钟价格撮合", "frequencyDays": 1, "schedule": { "frequency": "daily", "time": "09:30" }, "tradeTimes": [ "09:30" ] }, "risk": { "indexThrottleExpr": "max(0.0, 0.9000000000 - 0.0000 / max(total_equity, 1.0))", "stopLossExpr": "holding_return <= -0.0800000000", "stopTakeReferencePriceMode": "position_average_entry_price", "takeProfitExpr": "holding_return >= 0.1600000000" }, "runtimeExpressions": { "allocation": { "buyScaleExpr": "(((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) || ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) || (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") || ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") || symbol == \"688012.SH\")))) ? (((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || (symbol == \"300395.SZ\" || symbol == \"600732.SH\")) || ((symbol == \"000063.SZ\" || symbol == \"002625.SZ\") || (symbol == \"300811.SZ\" || symbol == \"002851.SZ\"))) || (((symbol == \"000988.SZ\" || symbol == \"002281.SZ\") || (symbol == \"300205.SZ\" || symbol == \"002239.SZ\")) || ((symbol == \"600079.SH\" || symbol == \"600276.SH\") || (symbol == \"600909.SH\" || symbol == \"002169.SZ\")))) ? (1.0008000000) : (0.9984000000)) : 0.0" }, "ordering": { "rankBy": "market_cap", "rankExpr": "(((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) || ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) || (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") || ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") || symbol == \"688012.SH\")))) ? (((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) ? ((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) ? (((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") ? ((symbol == \"688116.SH\" || symbol == \"603200.SH\") ? (symbol == \"688116.SH\" ? (0) : (1)) : (2)) : ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") ? (symbol == \"600732.SH\" ? (3) : (4)) : (5))) : (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") ? ((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") ? (symbol == \"300811.SZ\" ? (6) : (7)) : (8)) : ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") ? (symbol == \"002281.SZ\" ? (9) : (10)) : (11)))) : ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) ? (((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") ? ((symbol == \"600079.SH\" || symbol == \"600276.SH\") ? (symbol == \"600079.SH\" ? (12) : (13)) : (14)) : ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") ? (symbol == \"002169.SZ\" ? (15) : (16)) : (17))) : (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") ? ((symbol == \"000999.SZ\" || symbol == \"601066.SH\") ? (symbol == \"000999.SZ\" ? (18) : (19)) : (20)) : ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") ? (symbol == \"000333.SZ\" ? (21) : (22)) : (23))))) : 24", "rankOrder": "asc" }, "prelude": "", "risk": { "exposureExpr": "max(0.0, 0.9000000000 - 0.0000 / max(total_equity, 1.0))", "stopLossExpr": "holding_return <= -0.0800000000", "stopTakeReferencePriceMode": "position_average_entry_price", "takeProfitExpr": "holding_return >= 0.1600000000" }, "schedule": { "frequency": "daily", "time": "09:30" }, "selection": { "candidateLimitExpr": "24", "limitExpr": "24", "marketCapField": "close", "marketCapLowerExpr": "0", "marketCapUpperExpr": "1000000000000", "stockFilterExpr": "((close > 0)) && (ths_up_days_stock >= 1)" }, "trading": { "actions": [], "dailyPositionTargetAdjust": true, "dailyTopUp": true, "holdUntilExit": true, "rebalanceExistingPositions": true, "redistributeTargetWeightsAfterExit": true, "reenterExitedTargets": true, "releaseSlotOnExitSignal": true, "retryEmptyRebalance": true, "rotationEnabled": true, "stage": "on_day", "subscriptionGuardRequired": false, "targetPortfolioDaily": true } }, "seasonality": { "skipWindows": [] }, "selectors": [ { "field": "market_cap", "lowerExpr": "0", "mapping": "close -> strategy_factory_source_lake.runtime_fields.close", "type": "dynamicRange", "upperExpr": "1000000000000" }, { "expr": "((close > 0)) && (ths_up_days_stock >= 1)", "type": "filter" }, { "limitExpr": "24", "orderBy": [ "market_cap asc" ], "type": "rank" } ], "signalSymbol": "000300.SH", "sourceCode": "strategy(\"许总_组合_backtest\") {\n mode(\"rotation\")\n market(\"CN_A\")\n benchmark(\"000300.SH\")\n signal(\"000300.SH\")\n rebalance.every_days(1).at([\"09:30\"])\n universe.include([\"688116.SH\", \"603200.SH\", \"300395.SZ\", \"600732.SH\", \"000063.SZ\", \"002625.SZ\", \"300811.SZ\", \"002851.SZ\", \"000988.SZ\", \"002281.SZ\", \"300205.SZ\", \"002239.SZ\", \"600079.SH\", \"600276.SH\", \"600909.SH\", \"002169.SZ\", \"603156.SH\", \"002654.SZ\", \"000999.SZ\", \"601066.SH\", \"603345.SH\", \"000333.SZ\", \"603726.SH\", \"688012.SH\"])\n selection.limit(24)\n selection.candidate_limit(24)\n selection.market_cap_band(field=\"close\", lower=0, upper=1000000000000)\n filter.stock_expr((close > 0)) && (ths_up_days_stock >= 1)\n ordering.rank_expr((((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) || ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) || (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") || ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") || symbol == \"688012.SH\")))) ? (((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) ? ((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) ? (((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") ? ((symbol == \"688116.SH\" || symbol == \"603200.SH\") ? (symbol == \"688116.SH\" ? (0) : (1)) : (2)) : ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") ? (symbol == \"600732.SH\" ? (3) : (4)) : (5))) : (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") ? ((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") ? (symbol == \"300811.SZ\" ? (6) : (7)) : (8)) : ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") ? (symbol == \"002281.SZ\" ? (9) : (10)) : (11)))) : ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) ? (((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") ? ((symbol == \"600079.SH\" || symbol == \"600276.SH\") ? (symbol == \"600079.SH\" ? (12) : (13)) : (14)) : ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") ? (symbol == \"002169.SZ\" ? (15) : (16)) : (17))) : (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") ? ((symbol == \"000999.SZ\" || symbol == \"601066.SH\") ? (symbol == \"000999.SZ\" ? (18) : (19)) : (20)) : ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") ? (symbol == \"000333.SZ\" ? (21) : (22)) : (23))))) : 24, \"asc\")\n risk.index_exposure(max(0.0, 0.9000000000 - 0.0000 / max(total_equity, 1.0)))\n allocation.buy_scale((((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || symbol == \"300395.SZ\") || ((symbol == \"600732.SH\" || symbol == \"000063.SZ\") || symbol == \"002625.SZ\")) || (((symbol == \"300811.SZ\" || symbol == \"002851.SZ\") || symbol == \"000988.SZ\") || ((symbol == \"002281.SZ\" || symbol == \"300205.SZ\") || symbol == \"002239.SZ\"))) || ((((symbol == \"600079.SH\" || symbol == \"600276.SH\") || symbol == \"600909.SH\") || ((symbol == \"002169.SZ\" || symbol == \"603156.SH\") || symbol == \"002654.SZ\")) || (((symbol == \"000999.SZ\" || symbol == \"601066.SH\") || symbol == \"603345.SH\") || ((symbol == \"000333.SZ\" || symbol == \"603726.SH\") || symbol == \"688012.SH\")))) ? (((((symbol == \"688116.SH\" || symbol == \"603200.SH\") || (symbol == \"300395.SZ\" || symbol == \"600732.SH\")) || ((symbol == \"000063.SZ\" || symbol == \"002625.SZ\") || (symbol == \"300811.SZ\" || symbol == \"002851.SZ\"))) || (((symbol == \"000988.SZ\" || symbol == \"002281.SZ\") || (symbol == \"300205.SZ\" || symbol == \"002239.SZ\")) || ((symbol == \"600079.SH\" || symbol == \"600276.SH\") || (symbol == \"600909.SH\" || symbol == \"002169.SZ\")))) ? (1.0008000000) : (0.9984000000)) : 0.0)\n risk.stop_loss(holding_return <= -0.0800000000)\n risk.take_profit(holding_return >= 0.1600000000)\n risk.reference_price_mode(\"position_average_entry_price\")\n trading.daily_top_up(true)\n trading.daily_position_target_adjust(true)\n trading.target_portfolio_daily(true)\n trading.rebalance_existing_positions(true)\n trading.hold_until_exit(true)\n trading.retry_empty_rebalance(true)\n trading.release_slot_on_exit_signal(true)\n trading.redistribute_target_weights_after_exit(true)\n trading.reenter_exited_targets(true)\n execution.matching_type(\"current_bar_close\")\n}", "strategyId": "许总_组合_backtest", "universe": { "exclude": [], "implementationNotes": [ "ST、停牌、退市、新股、科创、一元、涨跌停、同日卖出禁买、成交量和费用由 riskPolicy / RiskLimits 统一执行", "上市日期与退市日期取自 instrument 结构化字段,不再使用股票名称做 ST/退市判断", "盘中 current_price / last_price 由策略交易时刻批量 tick 查询驱动" ], "include": [ "688116.SH", "603200.SH", "300395.SZ", "600732.SH", "000063.SZ", "002625.SZ", "300811.SZ", "002851.SZ", "000988.SZ", "002281.SZ", "300205.SZ", "002239.SZ", "600079.SH", "600276.SH", "600909.SH", "002169.SZ", "603156.SH", "002654.SZ", "000999.SZ", "601066.SH", "603345.SH", "000333.SZ", "603726.SH", "688012.SH" ] }, "version": "1.0.0", "stockPoolFactorContract": { "schemaVersion": 1, "entryLogic": "all", "exitLogic": "any", "conditions": [ { "factorRef": "up_days_stock", "label": "连涨天数", "role": "selection", "registryRole": "selection_feature", "roleRegistrySha256": "1d0b307c168feda08d5fbe20f0e88964230553f8ceb2017b66aec48dbd5a5b57", "roleEvidence": { "role": "selection_feature", "polarity": "trend_persistence_positive", "signalShape": "state", "holdingStates": [ "flat" ], "requiredConfirmations": [], "cooldownTradingDays": 0, "windowTradingDays": 1, "recommendedParameters": { "inputUnit": "days", "minimum": 0 } }, "operator": ">=", "threshold": 1, "semantic": { "ref": "up_days_stock", "label": "连涨天数", "status": "available", "queryable": true, "source": "strategy-factory-source-lake:indicator", "schema": "strategy-factory.value-semantics/v1", "valueType": "integer", "semanticType": "count", "comparisonGroup": "count", "storageUnit": "days", "inputUnit": "days", "inputScale": 1.0, "allowedOperators": [ ">", ">=", "<", "<=", "==", "!=", "between", "in" ], "nullable": true, "declared": true, "metadataStatus": "declared", "semanticProvenance": "explicit_manifest", "businessSemanticDeclared": true, "minimum": 0, "backtestBinding": { "field": "ths_up_days_stock", "sourceDataset": "indicators_up_days_stock" }, "tradingRoles": [ { "role": "selection_feature", "polarity": "trend_persistence_positive", "signalShape": "state", "holdingStates": [ "flat" ], "requiredConfirmations": [], "cooldownTradingDays": 0, "windowTradingDays": 1, "recommendedParameters": { "inputUnit": "days", "minimum": 0 } } ], "tradingRoleTradable": true, "tradingRoleEvidenceStatus": "source_lake_registered_indicator", "tradingRoleRegistrySha256": "1d0b307c168feda08d5fbe20f0e88964230553f8ceb2017b66aec48dbd5a5b57" } } ] } } }