Redstone Markets
Performance, risk, comparisons, backtests and screening for US stocks and ETFs, with charts.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"redstone": {
"url": "https://redstonemarkets.com/api/mcp"
}
}
}远程端点
https://redstonemarkets.com/api/mcpstreamable-http它能做什么
工具清单
工具(4)
🟢get_security_metrics(ticker)
Use this when the user asks how a single US stock or ETF has performed or how risky it is: YTD, 1-year and 5-year annualized returns, max drawdown, Sharpe, Sortino, beta and alpha, with a 1Y/5Y chart. End-of-day data for US large and mid caps, major foreign stocks and US ETFs. Not for intraday quotes, news, earnings, fundamentals or price targets.
输入模式
{
"type": "object",
"properties": {
"ticker": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "US ticker symbol, e.g. AAPL, VOO or BRK.B"
}
},
"required": [
"ticker"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"asOf": {
"description": "Market date (YYYY-MM-DD) of the latest close behind every number",
"type": [
"string",
"null"
]
},
"security": {
"type": "object",
"properties": {
"return1dPct": {
"type": [
"number",
"null"
]
},
"returnYtdPct": {
"type": [
"number",
"null"
]
},
"return1yPct": {
"type": [
"number",
"null"
]
},
"return5yAnnualizedPct": {
"type": [
"number",
"null"
]
},
"maxDrawdown1yPct": {
"description": "Worst peak-to-trough fall over the past year (negative)",
"type": [
"number",
"null"
]
},
"sharpe1y": {
"type": [
"number",
"null"
]
},
"sortino1y": {
"type": [
"number",
"null"
]
},
"beta1y": {
"description": "Versus SPY, from daily returns over the past year",
"type": [
"number",
"null"
]
},
"alpha1yPct": {
"description": "Annualized, versus SPY",
"type": [
"number",
"null"
]
},
"ticker": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"stock",
"etf"
]
},
"sector": {
"description": "GICS sector for stocks, category for ETFs",
"type": [
"string",
"null"
]
},
"price": {
"description": "Latest close in USD",
"type": [
"number",
"null"
]
},
"url": {
"type": "string",
"description": "Redstone page for this security"
}
},
"required": [
"return1dPct",
"returnYtdPct",
"return1yPct",
"return5yAnnualizedPct",
"maxDrawdown1yPct",
"sharpe1y",
"sortino1y",
"beta1y",
"alpha1yPct",
"ticker",
"name",
"type",
"sector",
"price",
"url"
],
"additionalProperties": false
},
"comparisons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"additionalProperties": false
},
"description": "Popular Redstone comparisons for this ticker"
},
"url": {
"type": "string"
}
},
"required": [
"asOf",
"security",
"comparisons",
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢compare_securities(tickers)
Use this when the user wants to compare 2 to 5 US stocks or ETFs side by side (e.g. "VOO vs QQQ", "SCHD or VYM?"): returns, drawdown, Sharpe, beta and how correlated they are, with an overlaid 1Y/5Y chart. End-of-day data for US large and mid caps, major foreign stocks and US ETFs. Not for intraday quotes or recommendations on what to buy.
输入模式
{
"type": "object",
"properties": {
"tickers": {
"minItems": 2,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "US ticker symbol, e.g. AAPL, VOO or BRK.B"
},
"description": "Tickers to compare, in the order the user named them"
}
},
"required": [
"tickers"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"asOf": {
"description": "Market date (YYYY-MM-DD) of the latest close behind every number",
"type": [
"string",
"null"
]
},
"securities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"return1dPct": {
"type": [
"number",
"null"
]
},
"returnYtdPct": {
"type": [
"number",
"null"
]
},
"return1yPct": {
"type": [
"number",
"null"
]
},
"return5yAnnualizedPct": {
"type": [
"number",
"null"
]
},
"maxDrawdown1yPct": {
"description": "Worst peak-to-trough fall over the past year (negative)",
"type": [
"number",
"null"
]
},
"sharpe1y": {
"type": [
"number",
"null"
]
},
"sortino1y": {
"type": [
"number",
"null"
]
},
"beta1y": {
"description": "Versus SPY, from daily returns over the past year",
"type": [
"number",
"null"
]
},
"alpha1yPct": {
"description": "Annualized, versus SPY",
"type": [
"number",
"null"
]
},
"ticker": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"stock",
"etf"
]
},
"sector": {
"description": "GICS sector for stocks, category for ETFs",
"type": [
"string",
"null"
]
},
"price": {
"description": "Latest close in USD",
"type": [
"number",
"null"
]
},
"url": {
"type": "string",
"description": "Redstone page for this security"
}
},
"required": [
"return1dPct",
"returnYtdPct",
"return1yPct",
"return5yAnnualizedPct",
"maxDrawdown1yPct",
"sharpe1y",
"sortino1y",
"beta1y",
"alpha1yPct",
"ticker",
"name",
"type",
"sector",
"price",
"url"
],
"additionalProperties": false
}
},
"correlation": {
"type": "object",
"properties": {
"tickers": {
"type": "array",
"items": {
"type": "string"
}
},
"matrix": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": [
"number",
"null"
]
}
},
"description": "Pearson correlation of daily returns over the past year, in the order of `tickers`"
},
"matrix5y": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": [
"number",
"null"
]
}
},
"description": "Pearson correlation of weekly returns over the past five years, in the order of `tickers`; null where a ticker has less history. One year can be far from the usual relationship, so mention both when they differ much"
}
},
"required": [
"tickers",
"matrix",
"matrix5y"
],
"additionalProperties": false
},
"url": {
"description": "Redstone compare page (pairs only)",
"type": [
"string",
"null"
]
}
},
"required": [
"asOf",
"securities",
"correlation",
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢backtest_portfolio(positions)
Use this when the user describes a portfolio of US stocks and ETFs with weights (e.g. "60% VTI, 40% BND", "equal parts AAPL, MSFT, NVDA") and wants to know how it would have done or how risky it is: returns over YTD, 1 year and 5 years (rebalanced quarterly), max drawdown, Sharpe, beta vs SPY and the correlation between holdings, charted against SPY. 2 to 20 holdings. Not for live brokerage accounts, trading or allocation advice.
输入模式
{
"type": "object",
"properties": {
"positions": {
"minItems": 2,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"ticker": {
"type": "string",
"minLength": 1,
"maxLength": 12,
"description": "US ticker symbol, e.g. AAPL, VOO or BRK.B"
},
"weight": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Relative weight, e.g. 60 for 60%. Weights are rescaled to sum to 100%, so equal weights can all be 1"
}
},
"required": [
"ticker",
"weight"
]
}
}
},
"required": [
"positions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"asOf": {
"description": "Market date (YYYY-MM-DD) of the latest close behind every number",
"type": [
"string",
"null"
]
},
"portfolio": {
"type": "object",
"properties": {
"return1dPct": {
"type": [
"number",
"null"
]
},
"returnYtdPct": {
"type": [
"number",
"null"
]
},
"return1yPct": {
"type": [
"number",
"null"
]
},
"return5yAnnualizedPct": {
"type": [
"number",
"null"
]
},
"maxDrawdown1yPct": {
"description": "Worst peak-to-trough fall over the past year (negative)",
"type": [
"number",
"null"
]
},
"sharpe1y": {
"type": [
"number",
"null"
]
},
"sortino1y": {
"type": [
"number",
"null"
]
},
"beta1y": {
"description": "Versus SPY, from daily returns over the past year",
"type": [
"number",
"null"
]
},
"alpha1yPct": {
"description": "Annualized, versus SPY",
"type": [
"number",
"null"
]
}
},
"required": [
"return1dPct",
"returnYtdPct",
"return1yPct",
"return5yAnnualizedPct",
"maxDrawdown1yPct",
"sharpe1y",
"sortino1y",
"beta1y",
"alpha1yPct"
],
"additionalProperties": false,
"description": "Backtest of the weights, rebalanced back to them every quarter"
},
"holdings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"return1dPct": {
"type": [
"number",
"null"
]
},
"returnYtdPct": {
"type": [
"number",
"null"
]
},
"return1yPct": {
"type": [
"number",
"null"
]
},
"return5yAnnualizedPct": {
"type": [
"number",
"null"
]
},
"maxDrawdown1yPct": {
"description": "Worst peak-to-trough fall over the past year (negative)",
"type": [
"number",
"null"
]
},
"sharpe1y": {
"type": [
"number",
"null"
]
},
"sortino1y": {
"type": [
"number",
"null"
]
},
"beta1y": {
"description": "Versus SPY, from daily returns over the past year",
"type": [
"number",
"null"
]
},
"alpha1yPct": {
"description": "Annualized, versus SPY",
"type": [
"number",
"null"
]
},
"ticker": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"stock",
"etf"
]
},
"sector": {
"description": "GICS sector for stocks, category for ETFs",
"type": [
"string",
"null"
]
},
"price": {
"description": "Latest close in USD",
"type": [
"number",
"null"
]
},
"url": {
"type": "string",
"description": "Redstone page for this security"
},
"weightPct": {
"type": [
"number",
"null"
]
}
},
"required": [
"return1dPct",
"returnYtdPct",
"return1yPct",
"return5yAnnualizedPct",
"maxDrawdown1yPct",
"sharpe1y",
"sortino1y",
"beta1y",
"alpha1yPct",
"ticker",
"name",
"type",
"sector",
"price",
"url",
"weightPct"
],
"additionalProperties": false
}
},
"benchmark": {
"anyOf": [
{
"type": "object",
"properties": {
"return1dPct": {
"type": [
"number",
"null"
]
},
"returnYtdPct": {
"type": [
"number",
"null"
]
},
"return1yPct": {
"type": [
"number",
"null"
]
},
"return5yAnnualizedPct": {
"type": [
"number",
"null"
]
},
"maxDrawdown1yPct": {
"description": "Worst peak-to-trough fall over the past year (negative)",
"type": [
"number",
"null"
]
},
"sharpe1y": {
"type": [
"number",
"null"
]
},
"sortino1y": {
"type": [
"number",
"null"
]
},
"beta1y": {
"description": "Versus SPY, from daily returns over the past year",
"type": [
"number",
"null"
]
},
"alpha1yPct": {
"description": "Annualized, versus SPY",
"type": [
"number",
"null"
]
},
"ticker": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"stock",
"etf"
]
},
"sector": {
"description": "GICS sector for stocks, category for ETFs",
"type": [
"string",
"null"
]
},
"price": {
"description": "Latest close in USD",
"type": [
"number",
"null"
]
},
"url": {
"type": "string",
"description": "Redstone page for this security"
}
},
"required": [
"return1dPct",
"returnYtdPct",
"return1yPct",
"return5yAnnualizedPct",
"maxDrawdown1yPct",
"sharpe1y",
"sortino1y",
"beta1y",
"alpha1yPct",
"ticker",
"name",
"type",
"sector",
"price",
"url"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "SPY, for comparison"
},
"correlation": {
"type": "object",
"properties": {
"tickers": {
"type": "array",
"items": {
"type": "string"
}
},
"matrix": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": [
"number",
"null"
]
}
},
"description": "Pearson correlation of daily returns over the past year, in the order of `tickers`"
},
"matrix5y": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": [
"number",
"null"
]
}
},
"description": "Pearson correlation of weekly returns over the past five years, in the order of `tickers`; null where a ticker has less history. One year can be far from the usual relationship, so mention both when they differ much"
}
},
"required": [
"tickers",
"matrix",
"matrix5y"
],
"additionalProperties": false
},
"url": {
"type": "string",
"description": "Where to build and save this portfolio on Redstone"
}
},
"required": [
"asOf",
"portfolio",
"holdings",
"benchmark",
"correlation",
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢screen_securities(type, sector, sortBy, order, filters, ...)
Use this when the user wants a ranked list of US stocks or ETFs by a performance or risk metric, optionally within a sector or ETF category (e.g. "lowest volatility dividend ETFs", "highest Sharpe tech stocks this year", "energy stocks with the smallest drawdown"). Covers about 1,100 US-listed stocks and about 480 US ETFs, end-of-day. Not for fundamentals (P/E, revenue), news or buy recommendations.
输入模式
{
"type": "object",
"properties": {
"type": {
"default": "all",
"description": "Limit to stocks, ETFs, or both",
"type": "string",
"enum": [
"stock",
"etf",
"all"
]
},
"sector": {
"description": "Case-insensitive match on a stock's GICS sector (e.g. Information Technology, Health Care, Energy, Financials) or an ETF's category (e.g. Dividend, Bonds, Treasury, Large Cap Growth, Emerging Markets, Gold)",
"type": "string",
"maxLength": 40
},
"sortBy": {
"default": "return1yPct",
"description": "Metric to rank by. For lowest risk, sort maxDrawdown1yPct descending (closest to 0) or beta1y ascending",
"type": "string",
"enum": [
"return1dPct",
"returnYtdPct",
"return1yPct",
"return5yAnnualizedPct",
"maxDrawdown1yPct",
"sharpe1y",
"sortino1y",
"beta1y",
"alpha1yPct"
]
},
"order": {
"default": "desc",
"type": "string",
"enum": [
"desc",
"asc"
]
},
"filters": {
"description": "Optional bounds in each metric's own units, e.g. {metric: 'beta1y', max: 1}. maxDrawdown1yPct is negative, so a drawdown smaller than 20% is {metric: 'maxDrawdown1yPct', min: -20}",
"maxItems": 5,
"type": "array",
"items": {
"type": "object",
"properties": {
"metric": {
"type": "string",
"enum": [
"return1dPct",
"returnYtdPct",
"return1yPct",
"return5yAnnualizedPct",
"maxDrawdown1yPct",
"sharpe1y",
"sortino1y",
"beta1y",
"alpha1yPct"
]
},
"min": {
"type": "number"
},
"max": {
"type": "number"
}
},
"required": [
"metric"
]
}
},
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"asOf": {
"description": "Market date (YYYY-MM-DD) of the latest close behind every number",
"type": [
"string",
"null"
]
},
"totalMatches": {
"type": "number"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"return1dPct": {
"type": [
"number",
"null"
]
},
"returnYtdPct": {
"type": [
"number",
"null"
]
},
"return1yPct": {
"type": [
"number",
"null"
]
},
"return5yAnnualizedPct": {
"type": [
"number",
"null"
]
},
"maxDrawdown1yPct": {
"description": "Worst peak-to-trough fall over the past year (negative)",
"type": [
"number",
"null"
]
},
"sharpe1y": {
"type": [
"number",
"null"
]
},
"sortino1y": {
"type": [
"number",
"null"
]
},
"beta1y": {
"description": "Versus SPY, from daily returns over the past year",
"type": [
"number",
"null"
]
},
"alpha1yPct": {
"description": "Annualized, versus SPY",
"type": [
"number",
"null"
]
},
"ticker": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"stock",
"etf"
]
},
"sector": {
"description": "GICS sector for stocks, category for ETFs",
"type": [
"string",
"null"
]
},
"price": {
"description": "Latest close in USD",
"type": [
"number",
"null"
]
},
"url": {
"type": "string",
"description": "Redstone page for this security"
}
},
"required": [
"return1dPct",
"returnYtdPct",
"return1yPct",
"return5yAnnualizedPct",
"maxDrawdown1yPct",
"sharpe1y",
"sortino1y",
"beta1y",
"alpha1yPct",
"ticker",
"name",
"type",
"sector",
"price",
"url"
],
"additionalProperties": false
}
},
"url": {
"type": "string",
"description": "Redstone screener with every column and filter"
}
},
"required": [
"asOf",
"totalMatches",
"results",
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}社区
证据