再注文点(サプライチェーン)
再注文点とは、SKU の在庫水準のうち、補充発注が必要になったことを示す閾値です。再注文点は古典的には、リード需要と安全在庫の合計として捉えられます。より本質的には、再注文点は将来需要に対する分位点予測です。最適な再注文点の計算には、通常、リードタイム、サービスレベル、そして需要予測が関わります。小売業や製造業の多くでは、ネイティブな分位点予測を用いることで再注文点の品質が大きく向上します。
再注文点は在庫最適化だけでなく、在庫運用の自動化においても重要な概念です。実際、多くの ERP や在庫管理ソフトウェアでは、各 SKU に再注文点を設定し、在庫管理の一部を自動化しています。
需要の分位点推定
在庫管理であまり理解されていない点のひとつは、再注文点が、リードタイムに等しい期間の需要に対する 分位点予測 を表していることです。つまり再注文点とは、τ% の信頼度、すなわち望ましいサービスレベルのもとで、需要がそれを超えないと見込まれる在庫数量です。需要がこの閾値を超えると、1-τ の頻度でしか起きない事象として、欠品が発生します。
ネイティブ分位点と外挿分位点
分位点予測モデルは実装が難しいため、多くの予測ソフトウェアは 平均値 予測しか提供しません。しかし前述のとおり、再注文点は本質的に分位点需要予測です。そのため、ネイティブな分位点モデルがない場合の最も一般的な回避策は、平均予測を分位点予測として外挿することです。
この外挿は通常、予測誤差が 正規分布 に従うという仮定に基づきます。安全在庫に関するガイドでは、通常の 平均値 予測をどのように分位点予測へ変換するかを詳しく説明しています。ただし実務では、誤差が正規分布に従うという仮定は弱いものです。実際、正規分布には次のような問題があります。
- ゼロへの収束が 速すぎる ため、小売業や製造業で観測される実測分布よりも急速に減衰します。
- 完全に 滑らか ですが、需要は 整数 単位で変化します。この滑らかさの悪影響は、断続需要で特に大きくなります。
- 高いサービスレベル には適しません(実務上は 90% 超)。中央値の 50% から離れるほど、正規 近似の精度は低下します。
どのような場合にネイティブ分位点を選ぶべきか
計算負荷は増えるものの、在庫最適化の観点では、ネイティブ 分位点は次のような場合に大きな利点をもたらします。
- サービスレベルが 90% を超える場合。
- 需要が断続的で、期間あたり(集計単位が日・週・月のいずれであれ)販売数量が 3 単位未満である場合。
- 一度に 1 単位超を購入する顧客、つまりバルク注文が、販売数量の 30% 超を占める場合。
実務では、これら 3 条件のいずれか 1 つでも満たされると、再注文点の誤差(後述)が 20% 超改善されることが一般的です。この改善の大半は、平均 予測を 分位点 予測へ変換する外挿工程が、計算全体の最も弱い部分になるためです。
ピンボール損失による再注文点精度
再注文点は分位点予測そのものなので、この予測の精度は ピンボール損失関数 を用いて評価できます。
この考え方により、現在の運用と代替在庫戦略のベンチマークが可能になります。代替戦略が総誤差を減らすなら、その戦略は会社にとって より良い ということです。
ここで 精度 という言葉を、そもそも予測プロセスが存在しないかもしれない文脈で使うのは、少し奇妙に思えるかもしれません。ポイントは、目標在庫水準それ自体が暗黙の 分位点 需要予測を表していることです。ピンボール損失関数を使えば、そうした暗黙の予測の品質を評価できます。
ダウンロード: reorder-point-accuracy.xlsx
上記の Microsoft Excel シートは、ピンボール損失を用いて再注文点の精度を評価する方法を示しています。シートには複数の 入力 列があります。
- 製品名: 可読性のための列です。
- サービスレベル: 欠品を起こさない望ましい確率です。
- リードタイム: 補充オペレーションを完了するまでの遅延です。
- 再注文点: 補充を引き起こす閾値で、しばしば Min と呼ばれます。再注文点は、その 精度が検証される 値です。
- 日 N: その日に販売された数量です。このシートのレイアウトは、Excel の OFFSET 関数を用いて リード需要 を計算しやすいよう設計されています。
次に、シートには 2 つの 出力 列があります。
- Lead demand: Day 1 の開始から Day N の終了までの総需要を表します(N は日数で表したリードタイムに等しい)。ここでは、リードタイムを引数として可変日数の合計を作るために OFFSET 関数を使います。
- Pinball loss: 再注文点の 精度 を表します。この値はリード需要、再注文点、サービスレベルに依存します。Excel では、過大予測と過小予測を区別するために IF 関数を使用します。
分析の整合性を保つには、再注文点、サービスレベル、リードタイムといった入力設定を同じ時点で取得する必要があります。このシートの前提では、その時点は Day 0 の終わり、または Day 1 の開始直前です。そこから先に発生した販売データを用いて、これらの設定を検証します。
最後に、各 SKU ごとにピンボール損失が算出されたら、シート右下でそれらの合計を計算します。再注文点を算出する 2 つの手法を比較する場合、総ピンボール損失がより低い手法の方が優れています。
ピンボール損失に関する質問と回答
このピンボール損失は少し怪しく見えます。Lokad の相対的な性能を良く見せるために作った指標ではないのですか。
ピンボール損失関数は数十年前から知られています。再注文点を、ある確率(サービスレベル)で需要をカバーする値として定義すべきだという仮説に同意するなら、標準的な統計学は、分位点推定量の評価に用いるべき関数がピンボール損失であることを示しています。この問題に関する初期の研究は 1970 年代後半にさかのぼりますが、最近の文献としては Koenker, Roger (2005) Quantile Regression, Cambridge University Press. を参照してください。
単一 SKU に対して、ピンボール損失で再注文点の品質をどう評価できるのですか。
単一 SKU の再注文点の品質は、単一時点だけを見ても評価できません。サービスレベルが 50% に極めて近い場合を除けば、ピンボール損失には強い分散があります。そのため、単一 SKU を見る場合には、複数十回分の異なる日付にわたって損失を平均しないと信頼できる推定になりません。ただし実務では、多くの日付で平均するより、多くの SKU にわたって平均することを推奨します。200 SKU を超えるデータセットであれば、1 時点だけを使ったベンチマークでも、ピンボール損失は一般にかなり安定した指標になります。
ピンボール損失は非常に高いサービスレベルに強く反応します。そうなると在庫が非常に大きくなってしまうのではないですか。
在庫管理の現実として、99.9% のサービスレベルを達成するには膨大な在庫が必要です。実際、99.9% とは 3 年間で 1 日以上の品切れを許容しないという意味です。古典的な安全在庫の数式では、非常に高いサービスレベルを使っても巨大な在庫は生じません。しかし、数式の中で非常に高いサービスレベルを使っても、実務上は同等のサービスレベルにはなりません。要するに、ソフトウェアに 99.9% と入力しても、実際に観測されるサービスレベルは 98% を超えないかもしれません。この状況は、需要が正規分布に従うという仮定によって引き起こされます。古典的な安全在庫の数式で使われるこの仮定は誤っており、誤った安心感を生みます。一方、分位点は高いサービスレベルに対してはるかに強く反応します。つまり、より大きな在庫になります。しかし、それは現実をより正確に反映しているだけです。非常に高いサービスレベルは非常に高い在庫を伴います。100% のサービスレベルは得られないため、妥協が必要です。
サンプルシートでは日次データを使っていますが、週次データではどうですか。
もしリードタイムが長く、日単位ではなく週単位で表現できるのであれば、週単位に集計した過去データを使ってもよく、近似としては十分でしょう。しかし、平均的なリードタイムが 3 週間未満であれば、週次丸めによる誤差は非常に大きくなる可能性があります。そのような場合は、日次集計データを使うべきです。日次データはデータ量が多いため、Excel シート上での取り扱いはやや面倒になります。しかし実務では、ピンボール損失を Excel シート内で計算するのは、概念実証の目的を除けば本来想定されていません。本当に重要なのは、在庫最適化システムに日次データを入力することです。
誤解: 再注文点は大口でまれな発注を招く
再注文点に依存すること自体は、在庫管理の質について 何も 意味しません。実際、再注文点は継続的に変更できるため(通常はソフトウェア自動化によって)、どのような在庫戦略でも、時間とともに変化するアドホックな再注文点の値として表現できます。
大口でまれな発注が見られるのは、再注文点を動的に更新していない企業です。しかし、問題は再注文点そのものにあるのではなく、それらを定期的に更新するソフトウェア自動化が欠けている点にあります。
異なるリードタイムを持つ複数サプライヤー
再注文点と比較すべき在庫数量は、通常、手元在庫 と 発注済み在庫 の合計です。実際、発注を行う際には、すでに到着途中の在庫も見込む必要があります。
同一 SKU を異なるリードタイムで納入する 複数のサプライヤー に同じ発注を出せる場合、この状況は複雑になります(通常は価格も異なります)。この場合、遠方 サプライヤーに先に出したバックオーダーよりも、近隣 サプライヤーに後から出したバックオーダーの方が先に届く可能性があります。
2 サプライヤーの状況 をより正確にモデル化するには、各 SKU に 第 2 の再注文点 を導入する必要があります。第 1 の再注文点は 遠方 サプライヤーからの補充を引き起こし(そのサプライヤーの方が安いと仮定)、第 2 の再注文点は近隣サプライヤーからの調達を引き起こします。
近隣サプライヤーの方がリードタイムが短いため、第 2 の再注文点は第 1 より低くなります。直感的には、品切れが起きる可能性が高く、遠方 サプライヤーに発注してもすでに間に合わないときにだけ、近隣サプライヤーへ発注するということです。
Lokad からの注意点
分位点予測は、小売業や製造業で遭遇する多くの状況において、再注文点の算出に優れています。このアプローチの強みは、統計学において 直接測定は間接測定に勝る という事実で最も簡潔に説明できます。ただし、平均予測が無用だと言っているわけではありません。平均予測には、厳密な再注文点の計算以外にも多くの用途があります。たとえば予測を可視化する場合、分位点は理解しにくいことが多いのです。