Skip to content
Development
Skill

/algo-sc-newsvendor

\"Solve the newsvendor problem for single-period ordering decisions under uncertain demand. Use this skill when the user needs to determine optimal order quantity for perishable goods, seasonal products, or one-time purchase decisions — even if they say 'how much to order for

From plugin
awesome-agent-skill
27200 skills4 commands

Claude Code

$ npx -y skills add charlieviettq/awesome-agent-skill --skill algo-sc-newsvendor --agent claude-code

SKILL.md

algo-sc-newsvendor.SKILL.md
name: "\"algo-sc-newsvendor\""
description: "\"Solve the newsvendor problem for single-period ordering decisions under uncertain demand. Use this skill when the user needs to determine optimal order quantity for perishable goods, seasonal products, or one-time purchase decisions — even if they say 'how much to order for this season', 'perishable inventory', or 'single-period ordering'.\"."
allowed-tools: Bash, Read, Write, Edit, Glob, Grep

Newsvendor Model

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

| Input | Expected | Why | |-------|----------|-----| | v = 0 (total loss) | Lower Q*, conservative | High overage cost pushes order down | | p >> c (high margin) | Q* well above mean | Worth risking excess to avoid lost sales | | σ = 0 (certain demand) | Q* = μ exactly | No 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

| Script | Description | Usage | |--------|-------------|-------| | `scripts/newsvendor.py` | Compute newsvendor optimal quantity, expected profit, and fill rate | `python 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`
Read more
@charlieviettq
Ships withawesome-agent-skill

Curated skill pack for LLM agents in engineer and science workflow (Cursor & Claude ready).

Stars on GitHub

Momentum

stars in total
27
Star history of charlieviettq/awesome-agent-skill on GitHub, a chart by star-history.com

Other skills on awesome-agent-skill.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about algo-sc-newsvendor.

Which coding agents can use algo-sc-newsvendor?
algo-sc-newsvendor installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.