{
  "portfolios": [
    {
      "name": "BTC MVRV+NVT组合策略",
      "code": "crypto_btc_mvrv_nvt",
      "description": "MVRV主导+NVT过滤策略：MVRV作为主信号识别底部，NVT过滤极端情况避免误买入，卖出时双重保护",
      "strategy_definition": {
        "market_indicators": {
          "indicators": [
            {
              "code": "BTC_MVRV_ZSCORE"
            },
            {
              "code": "BTC_NVT"
            }
          ],
          "transformers": [
            {
              "name": "mvrv_raw",
              "type": "IdentityTransformer",
              "params": {
                "indicator": "BTC_MVRV_ZSCORE",
                "field": "Close"
              }
            },
            {
              "name": "nvt_raw",
              "type": "IdentityTransformer",
              "params": {
                "indicator": "BTC_NVT",
                "field": "Close"
              }
            },
            {
              "name": "nvt_percentile",
              "type": "PercentileRankTransformer",
              "params": {
                "indicator": "BTC_NVT",
                "lookback": 252,
                "field": "Close"
              }
            }
          ]
        },
        "trade_strategy": {
          "indicators": [
            {
              "id": "mvrv_buy_threshold",
              "type": "Constant",
              "params": {
                "value": 1.0
              }
            },
            {
              "id": "mvrv_sell_threshold",
              "type": "Constant",
              "params": {
                "value": 3.5
              }
            },
            {
              "id": "nvt_filter_threshold",
              "type": "Constant",
              "params": {
                "value": 80
              }
            },
            {
              "id": "nvt_extreme_high",
              "type": "Constant",
              "params": {
                "value": 90
              }
            }
          ],
          "signals": [
            {
              "id": "mvrv_undervalued",
              "type": "LessThan",
              "inputs": [
                { "market": "BTC_MVRV_ZSCORE", "transformer": "mvrv_raw" },
                { "ref": "mvrv_buy_threshold" }
              ]
            },
            {
              "id": "mvrv_overvalued",
              "type": "GreaterThan",
              "inputs": [
                { "market": "BTC_MVRV_ZSCORE", "transformer": "mvrv_raw" },
                { "ref": "mvrv_sell_threshold" }
              ]
            },
            {
              "id": "nvt_not_extreme",
              "type": "LessThan",
              "inputs": [
                { "market": "BTC_NVT", "transformer": "nvt_percentile" },
                { "ref": "nvt_filter_threshold" }
              ]
            },
            {
              "id": "nvt_extreme_high_signal",
              "type": "GreaterThan",
              "inputs": [
                { "market": "BTC_NVT", "transformer": "nvt_percentile" },
                { "ref": "nvt_extreme_high" }
              ]
            },
            {
              "id": "buy_signal_combined",
              "type": "And",
              "inputs": [
                { "ref": "mvrv_undervalued" },
                { "ref": "nvt_not_extreme" }
              ]
            },
            {
              "id": "sell_signal_combined",
              "type": "Or",
              "inputs": [
                { "ref": "mvrv_overvalued" },
                { "ref": "nvt_extreme_high_signal" }
              ]
            }
          ],
          "outputs": {
            "buy_signal": "buy_signal_combined",
            "sell_signal": "sell_signal_combined",
            "indicators": [
              { "id": "mvrv_undervalued", "output_name": "mvrv_buy" },
              { "id": "mvrv_overvalued", "output_name": "mvrv_sell" },
              { "id": "nvt_not_extreme", "output_name": "nvt_filter" },
              { "id": "nvt_extreme_high_signal", "output_name": "nvt_sell" },
              { "id": "buy_signal_combined", "output_name": "combined_buy" },
              { "id": "sell_signal_combined", "output_name": "combined_sell" }
            ],
            "market_indicators": [
              {
                "market": "BTC_MVRV_ZSCORE",
                "transformer": "mvrv_raw",
                "output_name": "mvrv_zscore"
              },
              {
                "market": "BTC_NVT",
                "transformer": "nvt_raw",
                "output_name": "nvt_signal"
              },
              {
                "market": "BTC_NVT",
                "transformer": "nvt_percentile",
                "output_name": "nvt_percentile"
              }
            ]
          }
        },
        "capital_strategy": {
          "name": "PercentCapitalStrategy",
          "params": {
            "initial_capital": 100000,
            "percents": 95
          }
        }
      },
      "symbols": [{ "symbol": "BTC", "name": "Bitcoin" }],
      "start_date": "2018-01-01",
      "currency": "USD",
      "market": "Crypto",
      "commission": 0.001,
      "update_time": "04:00"
    }
  ]
}
