Platform comparison · reviewed October 10, 2026

NexusTrade vs QuantPad: saved trading rules or a Python research workspace?

Inspect a real NexusTrade strategy, compare QuantPad’s documented Python and market-data workspace, and choose by the artifact and workflow you need.

As of 2026-10-10

Choose NexusTrade for a saved portfolio; QuantPad for research code

NexusTrade is the stronger fit when the output should be an inspectable portfolio with rules you can test, observe in paper trading and manage through platform tools. Aurora works with those portfolio objects. The actual Google recipe below shows the product artifact: two rule cards, conditions, allocation units and JSON.

QuantPad, at quantpad.ai, describes an AI research and coding workspace with Python execution and included historical market data. It is a good fit when the desired output is code, a data investigation or analysis of a trade log. That is a different artifact from a saved NexusTrade portfolio, even when both start with a natural-language request.

Worked task: inspect a Google trend rule

In NexusTrade, open the exact Google library link below. Review its 50/200-day average comparisons, cooldowns and sizing. Ask Aurora to explain or revise those saved rules, then inspect the portfolio before submitting a historical test. The screenshot is from the actual app; it does not show a completed run.

For a QuantPad investigation, use the prompt below to request a Python artifact that calculates the same daily moving-average states. Require the data source, adjustment convention and warmup rows in the output. This is a proposed research request based on the documented workspace, not a run we executed in QuantPad. A signal series alone is not an equivalent order simulation.

Research GOOG daily SMA(50) and SMA(200) for January 1, 2020 through December 31, 2024. Use the documented historical-data access available to this account. Save Python code and identify source, date coverage, adjustment convention and warmup. Return the dates where SMA(50) >= SMA(200) and <= SMA(200). Explain equality and missing-data behavior. Do not claim this reproduces trading returns or send orders.

Compare the artifact you will keep

Maintain a trading candidateSaved portfolio conditions and actionsPython/research artifact; inspect output and dependencies
Inspect a built-in ruleActual library cards and strategy JSON belowAI code and historical-data analysis
Use an existing AI clientNexusTrade MCP and SDK toolsQuantPad documents MCP access
Study trade logsPortfolio histories and stored test resultsTrade-log analysis, Monte Carlo and regime analysis
Instrument coverageCheck supported platform asset and broker capabilitiesDocuments futures, equities, options and L2 historical data; check the particular coverage

Cost and evidence checks

QuantPad’s public subscription route did not expose a complete price table in this review. Its homepage describes included usage, top-ups and model-provider costs; we have not observed an invoice or account allowance. NexusTrade plan pricing and research usage also depend on the selected workload. Check current checkout terms before treating either as cheaper.

QuantPad labels its homepage interactive previews illustrative and its included feeds historical. We have not signed in, executed its data queries or verified native live brokerage deployment. This comparison therefore makes no claim that its preview is a real run, that it supports a NexusTrade strategy import, or that either platform has better returns.

What would make this a matched experiment

Keep the same GOOG history, adjustment convention, dates and warmup. Translate the cooldowns, position state and allocation units into code before comparing orders. Preserve the saved NexusTrade rules and the Python artifact. Compare individual trades and failures before reading aggregate metrics. Until both have completed under matched assumptions, a performance ranking would be unsupported.

Inspect an actual NexusTrade strategy

  1. Buy 100% of the available cash in GOOG whenever GOOG's 50-day average price is at or above its 200-day average price and days since the last filled buy order of GOOG is above 14 and days since the last filled buy order of GOOG is above 3.

    Buy GOOG 50 Day GOOG SMA ≥ 200 Day GOOG SMA and # of Days Since the Last Filled Buy Order of GOOG > Constant 14 and # of Days Since the Last Filled Buy Order of GOOG > Constant 3

  2. Sell 100% of the portfolio worth of GOOG whenever GOOG's 50-day average price is at or below its 200-day average price and days since the last filled buy order of GOOG is above 14 and days since the last filled sell order of GOOG is above 3.

    Sell 100% GOOG 50 Day GOOG SMA ≤ 200 Day GOOG SMA and # of Days Since the Last Filled Buy Order of GOOG > Constant 14 and # of Days Since the Last Filled Sell Order of GOOG > Constant 3

NexusTrade library preview showing the actual Google moving-average buy and sell rule cards
Actual library preview captured October 10, 2026. Both saved rule cards are visible. This is a configuration example, not a backtest result.

What the saved rules mean

The buy rule checks whether the 50-day moving average is at least the 200-day average, with more than 14 days since the last buy and an additional more-than-3-day buy check. The sell rule checks the inverse state, with more than 14 days since the last buy and more than 3 days since the last sell. These are state checks with cooldowns. They do not require a new crossing event.

The JSON below retains the library conditions and actions while omitting editor forms, generated identifiers and timestamps. It is a semantic export for inspection, not a saved customer portfolio.

The buy spends 100% of buying power; the sell uses 100% of portfolio value. Equality meets both moving-average comparisons. There is no explicit zero-position entry guard. Review those details before changing the recipe or translating it to another engine.

JSON
View complete record
[
  {
    "name": "Buy 100% of the available cash in GOOG whenever GOOG's 50-day average price is at or above its 200-day average price and days since the last filled buy order of GOOG is above 14 and days since the last filled buy order of GOOG is above 3.",
    "userId": null,
    "active": true,
    "condition": {
      "name": "50 Day GOOG SMA ≥ 200 Day GOOG SMA and # of Days Since the Last Filled Buy Order of GOOG > Constant 14 and # of Days Since the Last Filled Buy Order of GOOG > Constant 3",
      "type": "And",
      "description": "All conditions must be true",
      "example": "If Apple's price is up today but down for the week.",
      "conditions": [
        {
          "lhs": {
            "compound": false,
            "targetAsset": {
              "name": "GOOG",
              "type": "Stock",
              "symbol": "GOOG"
            },
            "targetAssets": [],
            "window": {
              "length": 50,
              "interval": "Day"
            },
            "type": "SimpleMovingAverage",
            "name": "50 Day GOOG SMA"
          },
          "rhs": {
            "compound": false,
            "targetAsset": {
              "name": "GOOG",
              "type": "Stock",
              "symbol": "GOOG"
            },
            "targetAssets": [],
            "window": {
              "length": 200,
              "interval": "Day"
            },
            "type": "SimpleMovingAverage",
            "name": "200 Day GOOG SMA"
          },
          "name": "50 Day GOOG SMA ≥ 200 Day GOOG SMA",
          "comparison": "greaterThanOrEqual",
          "type": "Base",
          "description": "Left-Hand indicator (comparator) Right-Hand Indicator",
          "example": "If the Rate of Change of Apple's price is > the Value 0."
        },
        {
          "lhs": {
            "compound": false,
            "targetAssets": [
              {
                "name": "GOOG",
                "type": "Stock",
                "symbol": "GOOG"
              }
            ],
            "side": "Buy",
            "type": "DaysSinceOrder",
            "orderStatus": "Filled",
            "name": "# of Days Since the Last Filled Buy Order of GOOG"
          },
          "rhs": {
            "compound": false,
            "targetAssets": [],
            "value": 14,
            "type": "Value",
            "name": "Constant 14"
          },
          "name": "# of Days Since the Last Filled Buy Order of GOOG > Constant 14",
          "comparison": "greaterThan",
          "type": "Base",
          "description": "Left-Hand indicator (comparator) Right-Hand Indicator",
          "example": "If the Rate of Change of Apple's price is > the Value 0."
        },
        {
          "lhs": {
            "compound": false,
            "targetAssets": [
              {
                "name": "GOOG",
                "type": "Stock",
                "symbol": "GOOG"
              }
            ],
            "side": "Buy",
            "type": "DaysSinceOrder",
            "orderStatus": "Filled",
            "name": "# of Days Since the Last Filled Buy Order of GOOG"
          },
          "rhs": {
            "compound": false,
            "targetAssets": [],
            "value": 3,
            "type": "Value",
            "name": "Constant 3"
          },
          "name": "# of Days Since the Last Filled Buy Order of GOOG > Constant 3",
          "comparison": "greaterThan",
          "type": "Base",
          "description": "Left-Hand indicator (comparator) Right-Hand Indicator",
          "example": "If the Rate of Change of Apple's price is > the Value 0."
        }
      ]
    },
    "action": {
      "type": "Buy",
      "targetAsset": {
        "name": "GOOG",
        "type": "Stock",
        "symbol": "GOOG"
      },
      "amount": {
        "type": "percent of buying power",
        "amount": 100
      }
    },
    "orderExecution": {
      "type": "Market"
    },
    "automaticOrderApproval": false
  },
  {
    "name": "Sell 100% of the portfolio worth of GOOG whenever GOOG's 50-day average price is at or below its 200-day average price and days since the last filled buy order of GOOG is above 14 and days since the last filled sell order of GOOG is above 3.",
    "userId": null,
    "active": true,
    "condition": {
      "name": "50 Day GOOG SMA ≤ 200 Day GOOG SMA and # of Days Since the Last Filled Buy Order of GOOG > Constant 14 and # of Days Since the Last Filled Sell Order of GOOG > Constant 3",
      "type": "And",
      "description": "All conditions must be true",
      "example": "If Apple's price is up today but down for the week.",
      "conditions": [
        {
          "lhs": {
            "compound": false,
            "targetAsset": {
              "name": "GOOG",
              "type": "Stock",
              "symbol": "GOOG"
            },
            "targetAssets": [],
            "window": {
              "length": 50,
              "interval": "Day"
            },
            "type": "SimpleMovingAverage",
            "name": "50 Day GOOG SMA"
          },
          "rhs": {
            "compound": false,
            "targetAsset": {
              "name": "GOOG",
              "type": "Stock",
              "symbol": "GOOG"
            },
            "targetAssets": [],
            "window": {
              "length": 200,
              "interval": "Day"
            },
            "type": "SimpleMovingAverage",
            "name": "200 Day GOOG SMA"
          },
          "name": "50 Day GOOG SMA ≤ 200 Day GOOG SMA",
          "comparison": "lessThanOrEqual",
          "type": "Base",
          "description": "Left-Hand indicator (comparator) Right-Hand Indicator",
          "example": "If the Rate of Change of Apple's price is > the Value 0."
        },
        {
          "lhs": {
            "compound": false,
            "targetAssets": [
              {
                "name": "GOOG",
                "type": "Stock",
                "symbol": "GOOG"
              }
            ],
            "side": "Buy",
            "type": "DaysSinceOrder",
            "orderStatus": "Filled",
            "name": "# of Days Since the Last Filled Buy Order of GOOG"
          },
          "rhs": {
            "compound": false,
            "targetAssets": [],
            "value": 14,
            "type": "Value",
            "name": "Constant 14"
          },
          "name": "# of Days Since the Last Filled Buy Order of GOOG > Constant 14",
          "comparison": "greaterThan",
          "type": "Base",
          "description": "Left-Hand indicator (comparator) Right-Hand Indicator",
          "example": "If the Rate of Change of Apple's price is > the Value 0."
        },
        {
          "lhs": {
            "compound": false,
            "targetAssets": [
              {
                "name": "GOOG",
                "type": "Stock",
                "symbol": "GOOG"
              }
            ],
            "side": "Sell",
            "type": "DaysSinceOrder",
            "orderStatus": "Filled",
            "name": "# of Days Since the Last Filled Sell Order of GOOG"
          },
          "rhs": {
            "compound": false,
            "targetAssets": [],
            "value": 3,
            "type": "Value",
            "name": "Constant 3"
          },
          "name": "# of Days Since the Last Filled Sell Order of GOOG > Constant 3",
          "comparison": "greaterThan",
          "type": "Base",
          "description": "Left-Hand indicator (comparator) Right-Hand Indicator",
          "example": "If the Rate of Change of Apple's price is > the Value 0."
        }
      ]
    },
    "action": {
      "type": "Sell",
      "targetAsset": {
        "name": "GOOG",
        "type": "Stock",
        "symbol": "GOOG"
      },
      "amount": {
        "type": "percent of portfolio",
        "amount": 100
      }
    },
    "orderExecution": {
      "type": "Market"
    },
    "automaticOrderApproval": false
  }
]

Continue exploring