patterns

Current setups on a ticker

Returns the setups the last nightly run sees on one ticker, any ticker the nightly covers: family and direction, the two lines as dated endpoints, the trigger rule and price, stop and target, and the family and ticker track records. An empty setups list means nothing is forming; available false means the nightly has no current book for the symbol. The ticker does not need to be tracked. Setups and their ids change nightly, so do not cache them across sessions.

get/tickers/{symbol}/patterns

Request

  • Base URL: https://api.tradingpal.io/api/v1
  • URL: https://api.tradingpal.io/api/v1/tickers/{symbol}/patterns
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://api.tradingpal.io/oauth/authorize, token URL https://api.tradingpal.io/oauth/token, scopes: patterns)

Path parameters

symbolstring required

Exchange symbol, upper case (BRK.B, not BRK-B). Lower case is accepted and upper-cased.

Headers

X-TradingPal-Clientstring

Optional name of the agent or script making the call. It is recorded in the account's usage log so the user can see which client made which calls; the User-Agent is recorded when it is absent.

Response

OK

api_version'v1' required

The contract version, always v1. Field names in v1 do not change, and v1 stays available at least 12 months after a v2 ships.

as_of_sessionstring date nullable required

The last trading session the data describes, as an ISO date. Setups change nightly, so say it when presenting data and do not cache setups across days. Null on routes that do not read a dated artifact (account, tickers, history, families, universe and the demo index).

data_versionstring nullable

Identifier of the stored artifact the answer came from: the candidate-book generation for patterns, the sealed manifest for family records. Null when the route reads no versioned artifact.

disclaimer'Educational breakout-pattern analysis from TradingPal, not investment advice. Past results do not guarantee future outcomes.' required

The educational-use disclaimer, constant on every response. Repeat it when presenting a setup as something the user might act on.

symbolstring required

The symbol asked for, upper-cased.

availableboolean required

True when the nightly has a current candidate book for the symbol. False when the symbol is excluded from pattern analysis or no current book exists; setups is then empty.

reasonstring nullable

Why available is false, when the reason is known: not_covered means the symbol is excluded from pattern analysis. Absent when available is true, and when the nightly simply has no current book for the symbol.

demoboolean

True on the demo routes. Absent on the keyed route.

nextstring nullable

On the demo routes, a sentence saying where to get a key for other tickers. Absent on the keyed route.

Example response

{
  "api_version": "v1",
  "as_of_session": "2026-09-25",
  "symbol": "NVDA",
  "available": true,
  "setups": [
    {
      "setup_id": "NVDA:D:falling_wedge:1",
      "lineage_id": "lineage-1",
      "page_url": "https://www.tradingpal.io/screener/falling-wedge?interval=D&focus=NVDA&p=aB3",
      "symbol": "NVDA",
      "interval": "D",
      "family": "falling_wedge",
      "family_label": "Falling wedge",
      "pattern_type": "falling_wedge",
      "direction": "bullish",
      "status": "forming",
      "pattern_start": "2026-08-08",
      "pattern_end": "2026-09-07",
      "as_of_session": "2026-09-25",
      "last_close": 101.5,
      "price_scale": "log",
      "lines": {
        "upper": {
          "start": {
            "date": "2026-08-08",
            "price": 110
          },
          "end": {
            "date": "2026-09-07",
            "price": 104
          },
          "touch_count": 3,
          "touches": [
            {
              "date": "2026-08-08",
              "price": 111.2
            }
          ]
        },
        "lower": {
          "start": {
            "date": "2026-08-08",
            "price": 90
          },
          "end": {
            "date": "2026-09-07",
            "price": 98
          },
          "touch_count": 2,
          "touches": []
        }
      },
      "trigger_rule": "A daily close above the upper line; the trigger price moves with the line.",
      "plans": [
        {
          "direction": "bullish",
          "trigger_price": 105.25,
          "stop_price": 96,
          "target_price": 120
        }
      ],
      "track_record": {
        "family": {
          "scope": "family",
          "family": "falling_wedge",
          "symbol": null,
          "win_rate_pct": 54,
          "sample_size": 1287,
          "wins": 695,
          "losses": 592,
          "avg_win_pct": 8.1,
          "avg_loss_pct": -4.2,
          "median_win_pct": 6.3,
          "avg_trade_pct": 2.4,
          "avg_r": 0.41,
          "expected_r": 0.41,
          "profit_factor": 1.61,
          "avg_hold_bars": 11.2,
          "backtest_range": [
            "2006-09-25",
            "2026-09-25"
          ],
          "measured": "Every detector-confirmed breakout … open trades are excluded.",
          "summary": "Falling wedge: 1,287 resolved trades from 2006-09-25 to 2026-09-25; 54% reached the target, average win +8.1%, average loss -4.2%, median win +6.3%."
        },
        "ticker": null
      }
    }
  ],
  "stock_facts": {
    "as_of": "Facts as of the Sep 25 close.",
    "sections": [
      {
        "title": "Price",
        "rows": [
          {
            "label": "Last",
            "value": "$101.50",
            "change": "+0.40%",
            "change_tone": "up"
          },
          {
            "label": "Below 52-week high",
            "value": "6.5%"
          }
        ]
      },
      {
        "title": "Performance",
        "rows": [
          {
            "label": "1W",
            "value": "+6.2%",
            "tone": "up"
          },
          {
            "label": "1M",
            "value": "-3.5%",
            "tone": "down"
          }
        ]
      },
      {
        "title": "Momentum",
        "rows": [
          {
            "label": "vs EMA8",
            "value": "+1.2%"
          },
          {
            "label": "EMA8 vs EMA21",
            "value": "+2.5%"
          },
          {
            "label": "RSI (14)",
            "value": "59"
          }
        ]
      },
      {
        "title": "Volume and volatility",
        "rows": [
          {
            "label": "Relative volume",
            "value": "72nd percentile · last 3 months"
          },
          {
            "label": "Avg volume (20d)",
            "value": "2.5M · $381M/day"
          }
        ]
      },
      {
        "title": "Company",
        "rows": [
          {
            "label": "Market cap",
            "value": "$3.2T"
          },
          {
            "label": "Exchange · Country",
            "value": "Nasdaq · US"
          },
          {
            "label": "Type",
            "value": "Stock"
          }
        ]
      }
    ]
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.