Products

Execution & Research

Execution & Research provides planning and scenario routes. It does not submit orders.

Live API

Available calculations and limits#

VWAP allocates whole shares using the observed minute-by-minute volume of one completed US equity session. Pass reference_date=YYYY-MM-DD, or omit it for the last completed session, and minutes_per_slice (1–60; default 30). The response names the session, observation time, minute coverage, and source snapshot hash. Every session minute must have an observed bar; missing evidence is not filled with an assumed curve. Holidays and early closes use the exchange calendar. The profile describes that historical session. It is not a forecast or a fill guarantee.

TWAP produces an arithmetic schedule from your quantity and duration. It does not prove that the order can execute at a given price or participation rate. Scenario projections calculate outcomes from supplied assumptions; they are not forecasts or verified trading outcomes.

Calibrated cost estimates and smart routing stay unavailable until timestamped market quotes, account fees, routing evidence, and calibrated fills are bound. Both routes return 503 capability_data_unavailable (body status is unavailable_data_pending, retryable is false), read no data, and consume no credits. VWAP returns a 503 whose status is unavailable_symbol_volume_curve without an empirical symbol volume curve; that body has no error field, and retrying helps only when its retryable is true. These unavailable outputs do not fulfill an execution-data request.

Access#

4 credits for a billable product call, Pro and up. Quarantined data_pending routes have a zero-credit policy.

Endpoints#

MethodPathDescription
GET/api/v3/execution/cost_estimate/{ticker}Unavailable until market, fee, and calibration inputs are bound
GET/api/v3/execution/twap_plan/{ticker}Arithmetic TWAP schedule (even slicing over N minutes)
GET/api/v3/execution/vwap_plan/{ticker}Historical volume-weighted allocation from a complete observed session
GET/api/v3/execution/smart_route/{ticker}Unavailable until venue-liquidity evidence is bound
POST/api/v3/research/scenario_simulatorDCF projection: bull/base/bear scenarios with math trail
GET/api/v3/research/correlation_mesh36-month correlation mesh: "what moves with X"

Examples#

Historical VWAP scenario:

Shell
1curl --fail-with-body --max-time 30 \2  -H "Authorization: Bearer $TENGU_API_KEY" \3  "https://firm.wealthnow.io/api/v3/execution/vwap_plan/AAPL?qty=100&minutes_per_slice=30"

Check status, reference_date, data_as_of, and observed_minutes before using the schedule. Positive child quantities sum exactly to total_qty. Incomplete or conflicting tape returns 503 and consumes no credits.

TWAP execution plan:

Shell
1curl -H "Authorization: Bearer $TENGU_API_KEY" \2  "https://firm.wealthnow.io/api/v3/execution/twap_plan/AAPL?qty=50000&minutes=120"
Python
1import os, requests2 3resp = requests.get(4    "https://firm.wealthnow.io/api/v3/execution/twap_plan/AAPL",5    params={"qty": 50000, "minutes": 120},6    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},7    timeout=30,8)9resp.raise_for_status()10data = resp.json()  # {"ok": true, "timestamp": ..., "ticker": "AAPL", "algorithm": "TWAP", "total_qty": 50000, "duration_min": 120, "n_slices": 60, "schedule": [...]}11print(data["schedule"][:3])  # First 3 time slices

Scenario simulation (DCF projection):

Shell
1curl -X POST -H "Authorization: Bearer $TENGU_API_KEY" \2  -H "Content-Type: application/json" \3  -d '{4    "ticker": "TSLA",5    "current": {6      "revenue_ttm": 95000000000,7      "eps_ttm": 2.10,8      "shares_outstanding": 3180000000,9      "current_price": 372.0410    },11    "horizon_quarters": 4,12    "scenarios": {13      "bull": {"revenue_growth_pct": 25, "net_margin_pct": 15, "exit_pe_multiple": 80},14      "base": {"revenue_growth_pct": 12, "net_margin_pct": 9, "exit_pe_multiple": 50},15      "bear": {"revenue_growth_pct": 0, "net_margin_pct": 5, "exit_pe_multiple": 25}16    },17    "scenario_probabilities": {"bull": 0.25, "base": 0.50, "bear": 0.25}18  }' \19  "https://firm.wealthnow.io/api/v3/research/scenario_simulator"
Python
1import os, requests2 3resp = requests.post(4    "https://firm.wealthnow.io/api/v3/research/scenario_simulator",5    json={6        "ticker": "TSLA",7        "current": {8            "revenue_ttm": 95_000_000_000,9            "eps_ttm": 2.10,10            "shares_outstanding": 3_180_000_000,11            "current_price": 372.04,12        },13        "horizon_quarters": 4,14        "scenarios": {15            "bull": {"revenue_growth_pct": 25, "net_margin_pct": 15, "exit_pe_multiple": 80},16            "base": {"revenue_growth_pct": 12, "net_margin_pct": 9, "exit_pe_multiple": 50},17            "bear": {"revenue_growth_pct": 0, "net_margin_pct": 5, "exit_pe_multiple": 25},18        },19        "scenario_probabilities": {"bull": 0.25, "base": 0.50, "bear": 0.25},20    },21    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},22    timeout=30,23)24resp.raise_for_status()25data = resp.json()26# Response: {"ok": true, "timestamp": ..., "ticker": "TSLA", "current": {...}, "horizon_quarters": 4, "results": {"bull": {...}, "base": {...}, "bear": {...}}, "summary": {"expected_value_price": ..., "skew": "bullish"}}27print(data["results"]["bull"]["projected_price"])28print(data["summary"]["expected_value_price"])