{"uid":"cap_n86WPe5HjFplAErGB9-Ia","slug":"stockwaves-portfolio-optimizer-0a021777","name":"StockWaves Portfolio Optimizer","description":"Stateless portfolio optimizer — bring your own signals, get risk-constrained weights. POST {assets:[{symbol,target,confidence?,vol?,regime?}], config?} → optimized portfolio targets via inverse-vol weighting, confidence/conviction scaling, same-family correlation penalty, gross/net + per-symbol caps, regime haircut. Pure compute, no account data.","url":"https://stockwaves.net/api/portfolio/optimize","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","required":["symbol","target"],"properties":{"vol":{"type":"number"},"regime":{"type":"string"},"symbol":{"type":"string"},"target":{"type":"number"},"confidence":{"type":"number"}}}},"config":{"type":"object"}}},"responseSchema":null,"example":{"request":{"assets":[{"vol":0.15,"regime":"trend","symbol":"SPY","target":0.5,"confidence":0.8},{"vol":0.18,"regime":"trend","symbol":"QQQ","target":0.3,"confidence":0.7},{"vol":0.2,"regime":"chop","symbol":"IWM","target":-0.2,"confidence":0.6}],"config":{"net_limit":0.8,"vol_power":0.5,"gross_limit":1,"decision_power":1,"per_symbol_cap":0.5,"confidence_power":1,"min_trade_target":0.05,"correlation_penalty_enabled":true}},"response":{"summary":{"mode":"vol_targeted","post_net":0.6868352266376686,"decision_net":0.6000000000000001,"gross_budget":1,"symbol_count":3,"decision_gross":1,"portfolio_gross":0.8677914735219527,"surviving_symbol_count":3},"targets":{"IWM":-0.09047812344214204,"QQQ":0.27731335007981067,"SPY":0.5},"by_symbol":{"IWM":{"vol_used":0.2,"base_target":-0.2,"symbol_family":"us_equity_index_etf","portfolio_mode":"vol_targeted","confidence_used":0.6,"portfolio_target":-0.09047812344214204,"regime_multiplier":0.52,"allocation_rescale":0.45239061721071017,"correlation_penalty":0.9,"ranked_conviction_boost":1,"portfolio_score_after_penalty":-0.12557757761638821},"QQQ":{"vol_used":0.18,"base_target":0.3,"symbol_family":"us_equity_index_etf","portfolio_mode":"vol_targeted","confidence_used":0.7,"portfolio_target":0.27731335007981067,"regime_multiplier":0.8,"allocation_rescale":0.924377833599369,"correlation_penalty":0.9,"ranked_conviction_boost":1.08,"portfolio_score_after_penalty":0.35638181771802},"SPY":{"vol_used":0.15,"base_target":0.5,"symbol_family":"us_equity_index_etf","portfolio_mode":"vol_targeted","confidence_used":0.8,"portfolio_target":0.5,"regime_multiplier":0.8,"allocation_rescale":1,"correlation_penalty":0.9,"ranked_conviction_boost":1.18,"portfolio_score_after_penalty":0.7436128024718242}},"applied_config":{"net_limit":0.8,"vol_power":0.5,"gross_limit":1,"decision_power":1,"per_symbol_cap":0.5,"confidence_power":1,"min_trade_target":0.05,"correlation_penalty_enabled":true}}},"exampleRequest":{"assets":[{"vol":0.15,"regime":"trend","symbol":"SPY","target":0.5,"confidence":0.8},{"vol":0.18,"regime":"trend","symbol":"QQQ","target":0.3,"confidence":0.7},{"vol":0.2,"regime":"chop","symbol":"IWM","target":-0.2,"confidence":0.6}],"config":{"net_limit":0.8,"vol_power":0.5,"gross_limit":1,"decision_power":1,"per_symbol_cap":0.5,"confidence_power":1,"min_trade_target":0.05,"correlation_penalty_enabled":true}},"tags":["x402"],"displayCostAmount":"0.05","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.05/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.05","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.05","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_7_gHC6747o3uXnoIXnYyJ","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.05","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Optimizes a multi-asset portfolio by computing target position weights from per-asset signal strength, confidence, volatility, and regime inputs","exampleAgentPrompt":"Optimize my portfolio: I'm long SPY with a strong signal of 0.8 and 70% confidence in a trend regime, neutral on QQQ at 0.1 with 50% confidence in a quiet regime, and short GLD at -0.6 with 80% confidence — cap each position at 40% of gross, enforce a gross limit of 1.0, and enable the correlation penalty.","exampleUseCases":null,"resultDescription":"Returns optimized portfolio weights or allocations for each submitted asset symbol, respecting gross/net exposure limits, per-symbol caps, and optional adjustments for volatility, confidence, and regime. The output translates raw directional signals into actionable position sizes ready for execution.","failureModes":["Missing required 'assets' array returns 400 validation error","'target' values outside [-1,1] range may be rejected or clamped","Assets array exceeding 50 items returns validation error","Payment failure via x402/USDC returns 402 Payment Required","Malformed config keys ignored silently or return 400","Empty assets array returns validation error"],"whenToPreferThis":"Use this endpoint when you have a set of directional signals (alpha) across multiple assets and need to translate them into optimized position weights respecting risk constraints like gross/net exposure limits, per-symbol caps, and volatility adjustments. Ideal for quant agents running signal-to-portfolio pipelines across equities, crypto, or macro instruments, especially when regime metadata and confidence scores are available to improve sizing quality.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T12:42:13.280Z","isFirstParty":false}