kwant

Quant intelligence over MCP: backtest, signals, screens, scores & portfolios for US & TSX stocks.

我該用這個嗎

品質與安全性

A
說明品質
99%
結構描述完整度
78%
命名品質
93%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~4,566Token(工具定義)
~1.3 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.57%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "kwant": {
      "url": "https://kwant.sh/mcp"
    }
  }
}

遠端端點

https://kwant.sh/mcpstreamable-http

它能做什麼

工具清單

工具(16)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢get_price_history(ticker, interval, range)

Get historical OHLCV price bars for a ticker. US symbols are bare (AAPL, MSFT); TSX symbols use the Yahoo .TO form (RY.TO) or the TSX:RY form. interval is one of 1m,5m,15m,30m,1h,1d,1wk,1mo (default 1d); range is one of 5d,1mo,3mo,6mo,1y,2y,5y,max (default 1y). Returns an envelope whose values contains interval, range, currency, count, and bars (records with an ISO timestamp plus open, high, low, close, volume). (paid: $0.0050/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    },
    "interval": {
      "type": "string",
      "enum": [
        "1m",
        "5m",
        "15m",
        "30m",
        "1h",
        "1d",
        "1wk",
        "1mo"
      ]
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    }
  },
  "required": [
    "ticker"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡get_quote(ticker)

Get the latest available quote for a ticker. US symbols are bare (AAPL); TSX symbols use the Yahoo .TO form (RY.TO) or the TSX:RY form. Returns an envelope whose values holds the quote fields (price, currency, previous_close, change, change_percent, volume, market_state, asof as an ISO string). (paid: $0.0050/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    }
  },
  "required": [
    "ticker"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_fundamentals(ticker)

Get fundamental data for a ticker (profile + key ratios). US symbols are bare (AAPL); TSX symbols use the Yahoo .TO form (RY.TO) or the TSX:RY form. Returns an envelope whose values holds available fundamentals: name, exchange, currency, sector, industry, market_cap, pe_ratio, forward_pe, eps, dividend_yield, beta, fifty_two_week_high, fifty_two_week_low, asof. Fields not covered by the provider are null. (paid: $0.0050/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    }
  },
  "required": [
    "ticker"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡compute_indicator(ticker, indicator, params, length, window, ...)

Compute a technical indicator (RSI, MACD, SMA, EMA, BBANDS, ATR, ADX, STOCH) over a ticker's price history. Returns the warmup-aligned series plus the latest values and a one-line summary. Tune the window with `length` (SMA/EMA/RSI/ATR/ADX/BBANDS), `fast`/`slow`/`signal` (MACD), `std` (BBANDS), or `k`/`d`/`smooth_k` (STOCH) — pass them either as top-level fields OR nested under `params`; both work. `window` and `period` are accepted as aliases for `length`. NOTE: for a long window like SMA(200) you MUST set length=200 (the default is 20). The response echoes the effective params it used, and the summary shows the window, e.g. `SMA(200)`. Ensure `range` spans at least `length` bars (e.g. range=2y for SMA(200)) or the series is all-warmup NaN. (paid: $0.0050/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    },
    "indicator": {
      "type": "string",
      "enum": [
        "RSI",
        "MACD",
        "SMA",
        "EMA",
        "BBANDS",
        "ATR",
        "ADX",
        "STOCH"
      ]
    },
    "params": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "length": {
      "type": [
        "number",
        "string"
      ]
    },
    "window": {
      "type": [
        "number",
        "string"
      ]
    },
    "period": {
      "type": [
        "number",
        "string"
      ]
    },
    "fast": {
      "type": [
        "number",
        "string"
      ]
    },
    "slow": {
      "type": [
        "number",
        "string"
      ]
    },
    "signal": {
      "type": [
        "number",
        "string"
      ]
    },
    "std": {
      "type": [
        "number",
        "string"
      ]
    },
    "k": {
      "type": [
        "number",
        "string"
      ]
    },
    "d": {
      "type": [
        "number",
        "string"
      ]
    },
    "smooth_k": {
      "type": [
        "number",
        "string"
      ]
    },
    "interval": {
      "type": "string",
      "enum": [
        "1m",
        "5m",
        "15m",
        "30m",
        "1h",
        "1d",
        "1wk",
        "1mo"
      ],
      "default": "1d"
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ],
      "default": "1y"
    }
  },
  "required": [
    "ticker",
    "indicator"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢detect_signals(ticker, signals, lookback, interval, range)

Detect classic technical-analysis signals on a ticker's price history. Each requested signal is evaluated and reported as triggered/not-triggered with a date and human-readable detail under signal_summary. Signals (omit `signals` to check all six): golden_cross = SMA(50) crosses above SMA(200) within `lookback`; death_cross = SMA(50) crosses below SMA(200); macd_cross = MACD line crosses above its signal line (bullish); rsi_oversold = RSI(14) below 30 at the latest bar; rsi_overbought = RSI(14) above 70 at the latest bar; breakout = latest close exceeds the highest high of the prior 20 bars. A signal needing more history than is available is returned not-triggered with an insufficient-history detail and a warning — it never fails the call. (paid: $0.0050/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    },
    "signals": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "golden_cross",
          "death_cross",
          "rsi_oversold",
          "rsi_overbought",
          "macd_cross",
          "breakout"
        ]
      }
    },
    "lookback": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "interval": {
      "type": "string",
      "enum": [
        "1m",
        "5m",
        "15m",
        "30m",
        "1h",
        "1d",
        "1wk",
        "1mo"
      ]
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    }
  },
  "required": [
    "ticker"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compute_stats(ticker, metrics, range, risk_free_rate, benchmark)

Compute quantitative statistics (volatility, sharpe, max_drawdown, returns, beta, correlation) over a ticker's daily price history. Omit `metrics` to default to volatility/sharpe/max_drawdown/returns. `beta` and `correlation` require a `benchmark` ticker; `risk_free_rate` is used only by the Sharpe ratio. (paid: $0.0050/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    },
    "metrics": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "volatility",
              "sharpe",
              "max_drawdown",
              "beta",
              "returns",
              "correlation"
            ]
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ],
      "default": "1y"
    },
    "risk_free_rate": {
      "type": "number",
      "default": 0
    },
    "benchmark": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "ticker"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare_tickers(tickers, metric, range)

Rank two or more tickers against each other by a single metric (total_return, volatility, sharpe, max_drawdown, last_price). Symbols that cannot be resolved (or lack enough history) are skipped and noted in `warnings` rather than failing the call. Returns a ranked list of {ticker, value, rank, currency} (rank 1 = best). (paid: $0.0050/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "metric": {
      "type": "string",
      "enum": [
        "total_return",
        "volatility",
        "sharpe",
        "max_drawdown",
        "last_price"
      ],
      "default": "total_return"
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ],
      "default": "1y"
    }
  },
  "required": [
    "tickers"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪screen(universe, filters, range, max_tickers, sort_by)

Screen a stock universe for tickers matching quantitative filters (logical AND). Fields: price, rsi, sma_50, sma_200, volatility, sharpe, max_drawdown, total_return, dollar_volume, garman_klass_vol. Ops: lt, lte, gt, gte. (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "universe": {
      "type": "string",
      "enum": [
        "SP500",
        "TSX"
      ]
    },
    "filters": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "enum": [
              "price",
              "rsi",
              "sma_50",
              "sma_200",
              "volatility",
              "sharpe",
              "max_drawdown",
              "total_return",
              "dollar_volume",
              "garman_klass_vol"
            ]
          },
          "op": {
            "type": "string",
            "enum": [
              "lt",
              "lte",
              "gt",
              "gte"
            ]
          },
          "value": {
            "type": "number"
          }
        },
        "required": [
          "field",
          "op",
          "value"
        ],
        "additionalProperties": false
      }
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ],
      "default": "1y"
    },
    "max_tickers": {
      "type": "integer",
      "default": 100
    },
    "sort_by": {
      "anyOf": [
        {
          "$ref": "#/properties/filters/items/properties/field"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "universe",
    "filters"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪backtest(ticker, strategy, range, params)

Backtest a simple long-only technical strategy on daily price history. Strategies: sma_cross (golden/death cross of SMA 50/200), rsi_reversion (enter RSI<30, exit RSI>70), macd_cross (MACD line vs signal). No-lookahead: signals act on the next bar's close. Returns trades + performance metrics. (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string"
    },
    "strategy": {
      "type": "string",
      "enum": [
        "sma_cross",
        "rsi_reversion",
        "macd_cross"
      ]
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    },
    "params": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "ticker",
    "strategy"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪screen_with_scores(universe, signal, range, top_n, max_tickers)

Rank a stock universe by a continuous cross-sectional signal score (rank 1 = highest z-score). Signals: jt_momentum, mean_reversion, rsi_filtered_momentum, trend_quality. Scores are relative to the scanned set. (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "universe": {
      "type": "string",
      "enum": [
        "SP500",
        "TSX"
      ]
    },
    "signal": {
      "type": "string",
      "enum": [
        "jt_momentum",
        "mean_reversion",
        "rsi_filtered_momentum",
        "trend_quality"
      ],
      "default": "jt_momentum"
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ],
      "default": "2y"
    },
    "top_n": {
      "type": "integer",
      "default": 50
    },
    "max_tickers": {
      "type": "integer",
      "default": 100
    }
  },
  "required": [
    "universe"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compute_universe_scores(universe, tickers, signal, range, top_n)

Score and rank a universe of tickers by a cross-sectional signal. Resolves either a named universe (SP500, TSX) or an explicit tickers override, bulk-fetches daily price history over range, computes a raw per-ticker score for the chosen signal, then converts those raw scores into cross-sectional z-scores and ranks them across the universe (rank 1 = highest z-score). Signals (Jegadeesh–Titman momentum is 12-month minus 1-month return on month-end resampled closes): jt_momentum (that JT 12-1 momentum), mean_reversion (negative trailing 1-month monthly return), rsi_filtered_momentum (JT momentum, names with a 14-day simple RSI > 70 excluded before z-scoring), trend_quality (JT momentum, names trading at or below their 200-day SMA excluded). Tickers with too little history or that fail to fetch are dropped and reported in warnings. range is the lookback (5d,1mo,3mo,6mo,1y,2y,5y,max; default 2y); top_n truncates the ranked output. values holds universe, signal, range, scored, and results (a list of {ticker, raw, zscore, rank} ordered by rank). (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "universe": {
      "type": "string",
      "enum": [
        "SP500",
        "TSX"
      ]
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "signal": {
      "type": "string",
      "enum": [
        "jt_momentum",
        "mean_reversion",
        "rsi_filtered_momentum",
        "trend_quality"
      ]
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    },
    "top_n": {
      "type": "integer",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢build_monthly_universe(universe, tickers, range, resample, top_n)

Rank a universe of tickers by monthly dollar volume with trailing returns. Resolves either a named universe (SP500, TSX) or an explicit tickers override, bulk-fetches daily OHLCV over range, resamples each to monthly bars (open=first, high=max, low=min, close=last, volume=sum), and per ticker computes trailing returns over 1/3/6/12 periods plus the latest monthly dollar volume (close * volume). Tickers are ranked by latest dollar volume (descending) and the top top_n are returned. Tickers that fail to fetch or lack enough monthly history are skipped and noted in warnings. range is the lookback (5d,1mo,3mo,6mo,1y,2y,5y,max; default 2y); use a multi-year window so the 12-month horizon is well-defined. values holds range, as_of (latest monthly date, YYYY-MM-DD), count, and results — a ranked list of {ticker, dollar_volume, returns: {1m,3m,6m,12m}, rank} where any horizon longer than the available history is null. (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "universe": {
      "type": "string",
      "enum": [
        "SP500",
        "TSX"
      ]
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    },
    "resample": {
      "type": "string",
      "enum": [
        "M",
        "Q"
      ]
    },
    "top_n": {
      "type": "integer",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢construct_portfolio(scores, method, top_n, range)

Turn a {ticker: score} mapping into long-only portfolio weights. Selects names and assigns non-negative weights that sum to 1.0 using the chosen method: top_n_weighted (weight by clipped score), equal_weight, risk_parity (inverse-volatility), concentrated_vol (highest-vol from a top-score pool), or sharpe_optimized (max-Sharpe long-only). The last three fetch daily history over range (5d,1mo,3mo,6mo,1y,2y,5y,max) and convert it to returns; tickers that fail to fetch are dropped with a warning. Returns the standard envelope; values holds method, top_n, a weights map, and n_holdings. (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "scores": {
      "type": "object",
      "additionalProperties": {
        "type": "number"
      }
    },
    "method": {
      "type": "string",
      "enum": [
        "top_n_weighted",
        "equal_weight",
        "risk_parity",
        "concentrated_vol",
        "sharpe_optimized"
      ]
    },
    "top_n": {
      "type": "integer"
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    }
  },
  "required": [
    "scores"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪run_portfolio_backtest(tickers, signal, method, range, rebalance, ...)

Backtest a rebalanced, multi-ticker, long-only quant portfolio. Fetches daily history for every ticker over range, then runs a walk-forward simulation: at each period-end rebalance the chosen signal (jt_momentum, mean_reversion, rsi_filtered_momentum, trend_quality) scores each name using only data up to that date, and method turns those scores into long-only weights. Returns gross and net (after cost) performance. rebalance is M (monthly) or Q (quarterly); cost_bps is round-trip cost on turnover; benchmark drives the hit-rate metric and (with crash_filter) a regime filter holding cash when the benchmark trailing-12m return is negative. Returns the standard envelope; values holds equity_curve, rebalances, metrics, holdings and the echoed parameters. (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "signal": {
      "type": "string",
      "enum": [
        "jt_momentum",
        "mean_reversion",
        "rsi_filtered_momentum",
        "trend_quality"
      ]
    },
    "method": {
      "type": "string",
      "enum": [
        "top_n_weighted",
        "equal_weight",
        "risk_parity",
        "concentrated_vol",
        "sharpe_optimized"
      ]
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    },
    "rebalance": {
      "type": "string",
      "enum": [
        "M",
        "Q"
      ]
    },
    "top_n": {
      "type": "integer"
    },
    "cost_bps": {
      "type": "number"
    },
    "benchmark": {
      "type": [
        "string",
        "null"
      ]
    },
    "crash_filter": {
      "type": "boolean"
    }
  },
  "required": [
    "tickers"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compute_portfolio_stats(weights, range, risk_free_rate)

Compute portfolio-level statistics for a weighted basket of tickers. Given a {ticker: weight} mapping, fetches each ticker's daily history over range and returns the portfolio-level (not per-ticker) volatility, sharpe, max_drawdown and total_return of the weighted basket. weights need NOT sum to 1 (normalized internally). Tickers that cannot be fetched are dropped, a note is added to warnings, and the remaining weights are renormalized. risk_free_rate is an annual rate used only by Sharpe. Returns the standard envelope; values holds range, the normalized weights used, and the stats dict. (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "weights": {
      "type": "object",
      "additionalProperties": {
        "type": "number"
      }
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    },
    "risk_free_rate": {
      "type": "number"
    }
  },
  "required": [
    "weights"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compute_correlation_matrix(tickers, range)

Compute the pairwise return-correlation matrix for a list of tickers. Fetches each ticker's daily history over range, converts it to daily returns, and computes the pairwise Pearson correlation (aligned on shared dates). Requires at least two tickers; tickers that cannot be fetched are dropped and noted in warnings (at least two must survive). Returns the standard envelope; values holds range, the tickers used, and matrix — a nested dict {rowTicker: {colTicker: correlation}} with a 1.0 diagonal. (paid: $0.0100/call)

輸入結構描述

{
  "type": "object",
  "properties": {
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "range": {
      "type": "string",
      "enum": [
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "max"
      ]
    }
  },
  "required": [
    "tickers"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

建議的提示詞

retrieve_data
Get details about [item] from kwant
預期的工具: get_price_history
fetch_info
Fetch [information type] using kwant
預期的工具: get_price_history

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本16 個工具
已驗證未記錄版本16 個工具