VecViz
VecViz generates valuation, risk, and timing insights from charts and narrative.
Что умеет
- Vecviz Read: Everything known about ONE ticker: VNA target price, channels, VecEvents, V-Score, and a digest of which price-probability bands exist. START HERE for any single-ticker question -- it is
- Vecviz Universe: Screen or batch-read the whole universe at the latest model date. TWO uses. (1) DISCOVERY: rank every ticker on one metric to find candidates. (2) BATCH READ: pass a comma-separated '
- Diversifiers: Top-ranked tickers that would most DIVERSIFY an exposure to a given one -- the call for 'what should I own alongside NVDA'. Two stages: it correlates the subject against every covered ti
Какие данные видит
Нужен ли аккаунт
Нужен API-ключ из настроек сервиса
VecViz generates valuation, risk, and timing insights from charts and narrative. These tools allow you to scenario test and update the valuation estimates, and explore the rest at both the ticker and portfolio level.
VecViz (https://vecviz.com) publishes daily model output for > 700 US tickers: VNA target prices, probability-weighted price bands, a six-horizon V-Score, VecEvents, channel geometry, correlation, risk history, model portfolios and option fair value estimates.
Start with vecviz_read — one ticker, self-sufficient: target, channels, VecEvents, V-Score and which price-probability bands exist. vecviz_catalog (free) lists what is covered.
Two inputs, reconciled
The model runs on two independent legs, and the VNA target price is where they're reconciled:
- Price channels — long-term price history distilled into anchored by major tops and bottoms distilled from long-term price history. Our Vector Set channels mark out support and resistance that we can quantify, and provide a basis for several chart shape metrics. Our ML is trained to predict price volatiltiy scaled in terms of support and resistance traversed.
- Narrative — VecEvents, an LLM-generated read on the qualitative story behind a name.
vecevent_matrixreturns each VecEvent's contribution to the VNA target, per Vector Set.
A price move needs an event that explains it; an event needs a channel to be priced against. Neither leg alone is the model.
What makes it different
Most finance MCP servers wrap quotes and fundamentals. This one exposes the model itself, so an agent can audit a number instead of quoting it:
- Why a target is what it is —
vecevent_matrix, per Vector Set. - What it's built on —
vector_set_anchors. - What it becomes if you disagree —
vna_scenariore-prices the target under a changed or added VecEvent.vecevent_matrix_reviewedcomposes several changes at once and reports whether the blend ties out to the sum of the parts. - Whether a price is reachable —
price_likelihoodanswers "could NVDA reach 250" from five angles: the forecast bands and when each reaches it, which Vector Sets already imply it, how many new VecEvents it would take, what the implied option is worth, and whether the V-Score agrees.
The narrative layer is LLM-generated — treat it accordingly
VecEvents are produced by an LLM, not pulled live from a feed. That means they inherit that model's hallucination risk, and they're bounded by its training window — the narrative can miss anything more recent than the source model's cutoff, or characterize an event wrong. The VNA target reflects VecEvent characterizations as published at the model date. If you know something the model date doesn't — an earnings print, guidance, a filing, a changed narrative — don't assume the baseline carries it, and don't lean on your own training data either, which may be just as stale. Apply it explicitly: vna_scenario for one change, vecevent_matrix_reviewed to compose several. You supply the judgement; every number comes back computed, so render it rather than recompute it.
Correlation, risk and portfolios
correlate— pairwise correlation across 2-40 tickers by three methods: Pearson (trailing 252-day returns), VecEvent (narrative similarity) and Fingerprint (long-term chart-shape metric correspondence). Two tickers with no method named returns all three, which is the honest way to see them disagree.diversifiers— what would most diversify an exposure, ranked on expected upside per unit of downside rather than low correlation alone, which regularly selects the worst name in the universe.portfolio— VecViz model portfolios by strategy, max weight and target volatility, or analysis of weights you supply. Omit the strategy and four variants come back deliberately: they're different readings of the same universe, and one alone reads as "the answer."risk_history— how a ticker's upside and downside bounds have moved, and where today sits in its own range, so you can say "90th percentile of its own history" instead of quoting a bare number.model_review(free) — the published track record: realised bound breaks by ticker, breakage rates, return by cohort, per-variant portfolio performance. The only place "has VecViz been right about this name lately" can be answered.
Also here
Screen 788 tickers or 98 industries on one metric (vecviz_universe); chart how any metric has moved and get a PNG URL back (metric_history); price an option off the model's own band structure (option_fair_value, which cannot say cheap or rich — there is no market IV source here); and read the method behind any of it (methodology).
Calls are priced per request, so cost is knowable before you spend it. vecviz_catalog, methodology and model_review are free. A subscription includes 50,000 units. One unit per ticker query, 10 per sector query, 25 per portfolio query.
Outputs are quantitative research, not forecasts or investment advice.
Auth
An API key starting with vv_.
- Free — ten tickers (AAPL, GLD, JPM, MRK, MSFT, SPY, TLT, TSLA, WMT, XOM), one click at https://agents-vecviz.fly.dev/try, no card.
- Full access — the whole 788-ticker universe, $39/month, cancel anytime: https://vecviz.com/signup/
How to Connect to Claude, Gemini, etc. from Smithery
- Click "Add to toolbox" and pick the namespace you want the connection to live under.
- Click "Set up" on the VecViz entry that appears in your Toolbox, and paste in your vv_ key. The connection stays inactive until you do this.
- Click "Install" and choose your client from the list.
Smithery gives you a URL of the form https://mcp.smithery.ai/your-namespace. In Claude.ai (desktop or mobile), go to Settings > Connectors, click Add custom connector, and paste it in.
For Claude Code, Smithery will likely give you something like "claude mcp add --transport http your-namespace "https://mcp.smithery.ai/your-namespace"
For Gemini CLI, Smithery will likely give you directions to use the following at the command prompt: gemini mcp add --transport http your-namespace "https://mcp.smithery.ai/your-namespace"
Список инструментов сервера (24)
Технические названия из tools/list. Нужны только разработчикам.
| vecviz_read | Everything known about ONE ticker: VNA target price, channels, VecEvents, V-Score, and a digest of which price-probability bands exist. START HERE for any single-ticker question -- it is self-sufficient. 'v_score' carries its own scale (-12..+12); a null means not published for this ticker, not neutral. Costs 1 unit. For SEVERAL tickers use vecviz_universe. |
| vecviz_universe | Screen or batch-read the whole universe at the latest model date. TWO uses. (1) DISCOVERY: rank every ticker on one metric to find candidates. (2) BATCH READ: pass a comma-separated 'tickers' list to get the same fields vecviz_read returns, for up to 1000 named tickers in one call. Costs 1 unit per ticker named -- the SAME rate as vecviz_read, so batching saves round trips, not quota -- or a flat 10 for a whole sector or industry -- so asking for a sector is far cheaper than naming its members. Sorting by 'var' puts the worst downside first; every other key sorts best-first. |
| diversifiers | Top-ranked tickers that would most DIVERSIFY an exposure to a given one -- the call for 'what should I own alongside NVDA'. Two stages: it correlates the subject against every covered ticker on all three published methods and takes a WEIGHTED average -- 40% VecEvent, 40% Pearson, 20% Fingerprint, because Fingerprint's dispersion is 3-5x the others and an equal mean would select on it alone -- then keeps the lowest quintile; then ranks that pool on expected upside per unit of downside, tilted by the V-Score. A high rank therefore means least correlated AND well positioned, not least correlated alone, which is regularly the worst name in the universe. Each row carries sector, industry, EUB, trailing 252-day return and the EqLiq liquidity decile. At least half the list is held at EqLiq 5+, displacing the LOWEST-scoring illiquid names first; the score itself still ignores liquidity. Costs 10 units, priced as a universe screen. |
| metric_history | How one VV-Data-Table metric has MOVED OVER TIME -- the call for 'chart SPY's V-Score', 'has NVDA's upside bound been widening', 'show me semis vs the rest on V-Score since January'. Every other tool here answers at the latest model date only; this one returns the whole published series, its summary statistics (mean, extremes with their dates, where the latest reading sits in its OWN history, longest positive and negative runs) and a signed PNG chart URL you can embed directly in markdown. Name a second entity to add the per-date RATIO of A to B -- a ticker, a sector, or 'rest' for the whole universe except A. Levels are raw; the ratio is computed on shifted values so it cannot go negative, so on V-Score and VNA_PctUpside ratio is deliberately NOT a/b and 'ratio_basis' says which applies. Costs 1 unit per NAMED TICKER (so 1 for a single name, 2 for a pair), or a flat 10 when either side is a sector or 'rest', because that scans the whole file. |
| price_likelihood | What VecViz says about the likelihood of a PRICE for a ticker -- the one call for 'could NVDA reach 250' or 'what would take SPY to 600'. Five readings: the forecast bands and the date each reaches the price; which Vector Sets already imply it -- BOTH the per-set VNA basis price, which comes from the centre line alone, AND the full nine-line channel with each VecLevel's model-date and forward-projected price, so a price no basis reaches but every channel contains is reported as such; the tops and bottoms each set is anchored on, and its own forward horizon; how many brand-new VecEvents it would take and of what bias and trend, plus which existing ones would have to be re-characterised and the fewest changes that close the gap; the model-implied value of the put or call the direction implies, struck on the price itself; and whether the V-Score agrees, and at which horizons most emphatically. Composes existing tools rather than adding a model, so it cannot disagree with them. Costs 1 unit. Use 'sections' to skip work -- 'vecevents' is the expensive one. |
| metric_context | WHY a ticker's number is what it is -- the call for 'how could NVDA's 99D be -45%' or 'why is SPY's EUB so narrow'. Resolves the metric, horizon and value at the latest model date (checking any figure the reader quoted, sign forgiven), then positions it eight ways: its percentile in the ticker's OWN history; percentile rank, z-score and extremes within its SECTOR, its INDUSTRY and the whole universe; the Sigma model's reading of the same bound with the ratio, the difference and why the two models differ; the thirteen V-Score criteria beside their bullish and bearish historical analogues, plus the raw chart-shape columns against peers; both V-Score scales; whether the VNA target corresponds, which Vector Set channel is centred on the price the return implies, its anchoring tops and bottoms, its standalone target and the VecEvents that carry it; the VecEvent catalogue against the universe; and trailing return and liquidity. Note 95D/99D name the 95th/99th-percentile DOWNSIDE return, never a number of days. Composes existing tools rather than adding a model, so it cannot disagree with them. Costs 1 unit; 'sections' narrows the work and 'vna' is the expensive one. |
| vector_set_anchors | The historical tops and bottoms each Vector Set is drawn over: date, price, and whether each was a top or a bottom, in chronological order. This is what a channel is BUILT ON, which is the missing half of any answer about where a Vector Set's target came from. Read-only and recomputes nothing. Costs 1 unit. |
| vecviz_catalog | What you can ask about: tickers, sectors, industries, per-dataset coverage, and the precomputed portfolio variants. FREE. Call this before naming tickers -- an unknown symbol is refused rather than silently dropped, and names are added and removed between refreshes. |
| vecevent_matrix | WHY a ticker's VNA target price is what it is: the contribution of each VecEvent across each Vector Set. Read-only and recomputes nothing. Costs 1 unit. |
| vecevent_matrix_reviewed | COMPOSE several VecEvent changes at once and get the whole reviewed picture back. vna_scenario prices ONE change against the untouched baseline and does not compose, so summing its results by hand is unverified arithmetic; this applies every override and new event together and returns the reviewed contribution matrix, the featured Vector Sets, the per-channel geometry, the post-review target, and a tie_out saying whether the blend matches the sum of the individual impacts. You supply the judgement; every number is computed here -- render them verbatim rather than recomputing a target, a contribution or a core width. Costs 1 unit. |
| vna_scenario | What a ticker's VNA target price becomes under a different VecEvent picture -- either RE-CHARACTERISE an event it already has (a new bias: Bullish/Bearish/Neutral, and/or a new trend: Intensifying/Steady/Waning -- the trend alone can move the target materially) or ADD an event it does not yet carry. Name an event the ticker already has and it is CHANGED; name one it does not and the event is ADDED, mirroring the footprint of the event starting closest to a year ago. You do not choose -- the response reports which happened under 'mode'. Event names must be EXACT; take them from vecviz_read. Costs 1 unit. |
| vecviz_report | Is a value unusual -- for THIS name, or for the market? Eight VV Data Table metrics (V-Score, VNA Ret, EUB/95U/99U, EDB/95D/99D), each with its current value AND a z-score saying how unusual it is. Name a ticker for its own history plus a cross-sectional z-score against every other name today; omit the ticker for the All Ticker Average across the universe. Returns a ready-formatted `table` alongside the structured metrics -- show the table rather than summarising a few rows. NOT the daily performance report -- that is model_review. Costs 1 unit. |
| vecviz_filter | Which names clear SEVERAL thresholds AT ONCE -- the call for 'run the bullish screen'. Not the same question as vecviz_universe, which ranks the universe on ONE metric: the top of a V-Score sort says nothing about whether those names also cleared an upside test. Say the screen EITHER by naming a fixed `mode` -- five exist, each with its measured evidence in the response: above the universe's median forward return in the back-test, 'bullish', 'downside_edge' and 'asymmetric_upside'; below it, the avoid-lists 'stale_upside' and 'downtrend_skew'. A named mode means the same thing on every call -- OR by passing explicit floors (v_score_min, vna_upside_min, eub_ret_min, edb_ret_min, d99_ret_min, sratio_99u_min). Passing both is refused rather than resolved. The negative floors read as 'no worse than': edb_ret_min=-0.06 keeps names whose expected downside is above -6%. sector, industry, exclude_sector, exclude_industry and min_eq_liq are scope rather than criteria and combine with either form. Survivors are ranked by `rank_score` = 99D_Ret / EqLiq, DESCENDING: liquidity-adjusted tail risk, and the score is negative, so descending puts the mildest tail first. The criteria select on upside and the ranking orders on downside, so the top of the list is the safest way to take the trade rather than the biggest one. 35 rows by default, each carrying the score, the two fields it is built from, and EUB_Ret / EDB_Ret beside them. The response states the thresholds it applied and how many rows each one left standing, so an empty screen says which criterion emptied it. Costs 10 units, priced as a universe screen, whatever the mode. |
| ppf | Price-probability forecast bands by horizon, and optionally the date each band reaches a target price. Ten bands at six horizons. Pass target_price to answer 'when could X reach Y'. Costs 1 unit. |
| risk_history | How a ticker's downside and upside bounds have moved over time, plus where the current value sits in its own history -- so you can say 'this is the 90th percentile of its own range', not a bare number. Costs 1 unit. |
| correlate | Pairwise correlations among 2-40 tickers. 'pearson' is ordinary trailing 252-day return correlation and is what most callers mean; 'vecevent' compares response to the same event backdrop; 'fingerprint' compares VecViz shape. With exactly two tickers and no method, all three come back together. Costs 1 unit per ticker. |
| portfolio | Analyse a portfolio you supply, or look up VecViz model portfolios by strategy, max weight and target volatility. 'optimize' is a LOOKUP over precomputed variants, not an optimiser -- 'is_optimisation' is false. OMIT strategy and FOUR portfolios come back (MVO_VVVe, MVO_VVVf, MVO_VVT and MVO_TTT), which is usually what you want: they are different readings of the same universe, and one alone reads as 'the answer'. A target_vol between the published 10%/15%/20% grid points is INTERPOLATED between the two nearest, below 10% is blended with cash, and above 20% is refused -- anything interpolated sets 'interpolated': true and says so, because a blend of two optimal portfolios is not itself optimal. Costs 25 units per portfolio returned, so the four-portfolio default is 100; for your own weights, 1 per holding with a floor of 25. |
| hrp_weights | HOW TO HOLD a candidate set of up to 40 tickers -- the call after a screen: 'weight these names by hierarchical risk parity'. Six variants and two averages. The tree comes from one of VecViz's three correlations -- VecEvent (Ve), fingerprint (Vf) or trailing 252-day Pearson (T) -- turned into a distance, clustered by Ward linkage and quasi-diagonalised; weight is then split at each fork in inverse proportion to each half's mean downside bound, either the Vector Model's 21-day 99D_Ret (V) or the Sigma model's mirrored Sigma_95U_Ret (T). average_V and average_T are the mean weights across each measure's three variants, with every name's spread beside it. Expected return is deliberately NOT an input -- the screen already selected on it -- and NO cap or volatility target is accepted: HRP inverts no covariance and needs neither. Publishes the goal, the method, the leaf order, every split with the risk on each side, and a diagnostic expected volatility per variant on one scale. Not `portfolio`, which reads weights you supply or looks up VecViz's published portfolios over the whole universe -- this builds weights for YOUR list. Costs 1 unit per ticker named. |
| option_fair_value | What VecViz thinks an option is worth, from the PPF band structure. There is no market implied-volatility source here, so it CANNOT say whether an option is cheap or rich -- only what the model implies. Costs 1 unit. |
| model_review | How VecViz actually performed -- the published track record, one section at a time. Realized 99% bound breaks by ticker, breakage rates, average return by cohort, top and bottom movers, per-variant portfolio performance, and the current outlook. FREE. The NARRATIVE track record -- 'what did the daily report say' -- as opposed to accuracy_context, which is the per-ticker calibration numbers over every model date since 2022. Pass section='list' for the contents; 'full' is ~17,500 tokens. |
| accuracy_context | HOW MUCH TO TRUST a VecViz bound for a ticker, from its record -- the call for 'how often has MU's 99% downside bound been wrong', 'what happened to names whose bound looked like this', or 'does V-Score work'. Every model date since 2022-01-31 with realised outcomes, all out-of-sample. Three layers in order: PLACEMENT (where the ticker sits today on each bound/sigma ratio and whether it is an outlier), the TICKER's own breakage against the bound's 1% or 5% promise beside its Sigma twin and what followed its model dates, the COHORT of every ticker-date that sat in the same band (breakage, forward returns as mean AND median AND hit rate, by year; thin samples nulled, concentrated cohorts flagged, a >=10 band's zero breakage labelled uninformative), and the UNIVERSE (pooled breakage by year, the calibrated 1.0-1.5 reference band, the cross-sectional V-Score IC). Plus 'signal', 'recent' (the last year) and 'extremes' (raw tail rows). provenance carries the bundle date, the sample-period table and the disclosure as fields -- attach them. OMIT the ticker for the universe scope. Not model_review (the narrative daily report) and not metric_context (where a number sits today rather than how it has performed). Costs 1 unit; 'sections' narrows the work. |
| methodology | What a VecViz number means and how it is derived. FREE. Read this before presenting a figure to a user; 'citation' is a one-line attribution safe to quote verbatim. Omit topic to list all topics. |
| usage | The caller's tier, quota consumed, quota remaining, period reset, and the published rate card. FREE. |
| report_feedback | Report a wrong number, a confusing response, or a missing capability. FREE. Use this when a VecViz answer looks incorrect rather than silently working around it. |