\"algo-sc-newsvendor\"

SkillAI & models

This skill lets your AI find the best order quantity when you only get one chance to order and demand is uncertain. Once added, ask a question like 'how much should I order for this season' and your AI will recommend a quantity for perishable goods, seasonal products, or one-time purchases.

Available today. Use it from your connected AI after setup.

After adding the skill, describe your situation — for example a seasonal item where demand is uncertain — and ask how much to order. Your AI will return a recommended quantity for that single ordering decision.

Then ask your AI: use the \"algo-sc-newsvendor\" skill

What your AI can do with it

  • Recommend the best quantity to order when you can only order once
  • Work out how much to order when demand is uncertain
  • Advise on perishable goods and seasonal products
  • Guide one-time purchase decisions
  • Answer everyday questions like 'how much to order for this season'

What this skill tells your AI

The instructions your AI receives, as published by charlieviettq/awesome-agent-skill in .claude/skills/algo-sc-newsvendor/SKILL.md and read by ahel’s review.

Overview

The newsvendor model determines optimal order quantity for a single selling period with uncertain demand. Balances overage cost (Co = cost - salvage) against underage cost (Cu = price - cost). Optimal Q* satisfies: P(D ≤ Q*) = Cu / (Cu + Co). Known as the critical ratio solution.

When to Use

Trigger conditions:

  • One-time or seasonal purchasing decisions (fashion, holiday goods, event tickets)
  • Perishable products with no restocking opportunity
  • Setting initial stocking levels before demand is observed

When NOT to use:

  • For continuous replenishment with stable demand (use EOQ)
  • When backorders are acceptable and demand carries over (multi-period models)

Algorithm

IRON LAW: The Critical Ratio Determines Optimal Service Level
Q* = F⁻¹(Cu / (Cu + Co)) where F⁻¹ is the inverse demand CDF.
If margin is high relative to cost (Cu >> Co), order MORE (high service level).
If margin is low relative to excess cost (Co >> Cu), order LESS (low service level).
The optimal solution almost NEVER equals expected demand.

Phase 1: Input Validation

Define: unit cost (c), selling price (p), salvage value (v), demand distribution (mean μ, std σ). Compute: Cu = p - c, Co = c - v. Gate: p > c > v (profitable with positive overage cost), demand distribution estimated.

Phase 2: Core Algorithm

  1. Critical ratio: CR = Cu / (Cu + Co) = (p - c) / (p - v)
  2. If demand ~ Normal(μ, σ): Q* = μ + z(CR) × σ where z(CR) = inverse normal CDF at CR
  3. Expected profit = Cu × E[min(Q,D)] - Co × E[max(Q-D, 0)]
  4. Expected units sold = μ - σ × L(z) where L(z) is the standard loss function

Phase 3: Verification

Check: Q* > 0, CR between 0 and 1, Q* is above or below μ depending on whether CR > or < 0.5. Gate: Q* directionally correct relative to mean demand.

Phase 4: Output

Return optimal order quantity with profit analysis.

Output Format

{
  "optimal_quantity": 130,
  "critical_ratio": 0.71,
  "expected_profit": 2800,
  "expected_leftover": 15,
  "expected_stockout_probability": 0.29,
  "metadata": {"price": 50, "cost": 20, "salvage": 5, "demand_mean": 100, "demand_std": 30}
}

Examples

Sample I/O

Input: p=$50, c=$20, v=$5, D~Normal(100, 30) Expected: Cu=30, Co=15, CR=30/45=0.667, z=0.43, Q*=100+0.43×30=113 units.

Edge Cases

InputExpectedWhy
v = 0 (total loss)Lower Q*, conservativeHigh overage cost pushes order down
p >> c (high margin)Q* well above meanWorth risking excess to avoid lost sales
σ = 0 (certain demand)Q* = μ exactlyNo uncertainty, order exactly demand

Gotchas

  • Distribution choice matters: Normal allows negative demand. For low-mean items, use Poisson or truncated normal. For high CV, use lognormal.
  • Demand estimation: The hardest part is estimating μ and σ. Use historical data, expert judgment, or Bayesian updating from early sales signals.
  • Risk aversion: The newsvendor model is risk-neutral. Risk-averse decision makers systematically under-order relative to Q*. Adjust for behavioral bias.
  • Multi-product constraints: With a shared budget constraint across products, solve the constrained newsvendor (Lagrangian relaxation).
  • Salvage value assumption: Assumes all excess can be salvaged at v. If disposal has a cost (v < 0), the model still works but Q* drops further.

Scripts

ScriptDescriptionUsage
scripts/newsvendor.pyCompute newsvendor optimal quantity, expected profit, and fill ratepython scripts/newsvendor.py --help

Run python scripts/newsvendor.py --verify to execute built-in sanity tests.

References

  • For multi-product constrained newsvendor, see references/constrained-newsvendor.md
  • For demand distribution fitting, see references/demand-fitting.md

Signals

GitHub stars
26
Forks
9
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
algo-sc-newsvendor
Source
github.com/charlieviettq/awesome-agent-skill