<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.5 (http://www.squarespace.com/) on Fri, 03 Sep 2010 06:01:58 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>Forecasting for Business - Blog</title><subtitle>Forecasting for Business - Blog</subtitle><id>http://blog.lokad.com/journal/</id><link rel="alternate" type="application/xhtml+xml" href="http://blog.lokad.com/journal/"/><link rel="self" type="application/atom+xml" href="http://blog.lokad.com/journal/atom.xml"/><updated>2010-09-01T06:58:48Z</updated><generator uri="http://www.squarespace.com/" version="Squarespace Site Server v5.11.5 (http://www.squarespace.com/)">Squarespace</generator><entry><title>Width vs. Depth, Rotate your sales forecasts of 90 degrees</title><category term="cloud computing"/><category term="depth"/><category term="forecasting"/><category term="forecasting"/><category term="insights"/><category term="insights"/><category term="statistics"/><category term="technology"/><category term="width"/><id>http://blog.lokad.com/journal/2010/8/31/width-vs-depth-rotate-your-sales-forecasts-of-90-degrees.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/8/31/width-vs-depth-rotate-your-sales-forecasts-of-90-degrees.html"/><author><name>Joannes Vermorel</name></author><published>2010-08-31T16:05:49Z</published><updated>2010-08-31T16:05:49Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img src="http://blog.lokad.com/storage/width-vs-depth.png?__SQUARESPACE_CACHEVERSION=1283324319551" alt="" /></span></span>We have already discussed why Lokad did not care much about forecasting <a href="http://blog.lokad.com/journal/2008/1/7/chinese-food-vs-sports-bar-while-forecasting-sales.html">Chinese food rather than Sport Bar beverages</a>. Another way of thinking our technology consists of <strong>rotating your sales forecasts of 90 degrees</strong>.</p>
<p>We are observing that a consumer product has, on average, <strong>3 years</strong> lifecycle. This means that <em>on average</em> the amount of data available for every single product about 18 months. When, we look at the sales history with a monthly aggregation, 18 months of data means 18 points.</p>
<p>With 18 data points, no matter how smart or advanced is your forecasting theory, you can't do much <em>simply because we face an utter lack of data</em> to perform any robust statistical analysis. With 18 points, even a pattern has obviously as seasonality becomes a challenge to observe because we don't even have 2 complete seasonal observation.</p>
<p><em>Your mileage may vary from one industry to the next, but unless your products stay in the market for decades, you are most likely to face this issue.</em></p>
<p>As a direct consequence, <strong>classical forecasting toolkits require statisticians to <em>tweak</em> forecasting models</strong> for every single product because no <em>non-trivial</em> statistical model can be robustly fit with only 18 points as input data.</p>
<p>Yet, <strong>Lokad does not require any statistician</strong>, and the magic lies in the 90 degrees rotation: our models do not iterate over data a single time-series at a time, but against all time-series at once. Thus, we have a lot more input data available, and consequently we can succeed with rather <a href="http://blog.lokad.com/journal/2009/7/7/favorite-forecasting-models.html">advance models</a>.</p>
<p>This approach is just <strong>common sense</strong>: if you want to forecast the seasonality of your new chocolate bar, the seasonality of the other chocolate bars seems like a good candidate. Why should you treat each chocolate bar in strict isolation from the others?</p>
<p>Yet, <strong>from a computational perspective, the problem has just become a lot harder</strong>: if you have 10,000 SKUs the number of associations between two SKUs is roughly 100 millions (and 10,000 SKU is nowhere a <em>large</em> number). That's precisely where <strong>the cloud kicks in</strong>: even if your algorithms are well-designed not to suffer a strict quadratic complexity, you're still going to need a <em>lot</em> of processing power. The cloud just happens to make this processing power available on demand at a very low price.</p>
<p>Without the cloud, it is simply not possible to deliver this <a href="http://blog.lokad.com/journal/2010/6/11/designed-for-large-scale-forecasting-with-windows-azure.html">kind of technology</a>.</p>]]></content></entry><entry><title>How bulk purchases impact safety stocks</title><category term="formula"/><category term="insights"/><category term="safety stock"/><category term="safety stock"/><category term="supply chain"/><category term="supply chain"/><id>http://blog.lokad.com/journal/2010/8/4/how-bulk-purchases-impact-safety-stocks.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/8/4/how-bulk-purchases-impact-safety-stocks.html"/><author><name>Joannes Vermorel</name></author><published>2010-08-04T15:12:12Z</published><updated>2010-08-04T15:12:12Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>We have published an <a href="http://www.lokad.com/calculate-safety-stocks-with-sales-forecasting.ashx">introductory tutorial</a> that provides the formula used to compute the reorder point based on the forecasted demand, the demand uncertainty, the lead time and a couple of other factors.</p>
<p>This <em>classical</em> safety stock calculation comes with a couple of key assumptions about the demand. We have already posted about how to handle <a href="../../journal/2009/10/21/modeling-varying-lead-time.html">varying  lead time</a>. Then, there is another implicit assumption in the classical formula: <strong>buyers are assumed to be independent</strong>.&nbsp;</p>
<p>Recently, we have been approached by <strong>a company that frequently sell items in bulk to classrooms</strong>. Although most of the sales are single-item order, from time to time, comes a 20-30 items order for a whole classroom. The graph below illustrate the resulting sales patterns of intermittent bulk purchase.</p>
<p><em>Dislaimer: numbers made up and some results are widly approximated for the sake of simplicity. <br /></em></p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://blog.lokad.com/storage/sales-with-bulk-purchase.png?__SQUARESPACE_CACHEVERSION=1280905929597" alt="" /></span></span></p>
<p>Over those 12 months, we can see that we have 2 patterns:</p>
<ul>
<li>ongoing single-unit orders which account for 13 orders per months on average.</li>
<li>intermittent bulk sales which account for +30 orders on average.</li>
</ul>
<p><em>The average monthly sales is at 23 orders per month, but if we remove the bulk order factor, then the average purchase drop to 13 orders per month.</em></p>
<p>Now, what is the <em>right</em> safety stock in this situation? If we consider the classical safety stock formula with typical settings, then we are going to have a reorder point established at roughly 30 items: the 23 orders per month average, plus the safety stock itself covering the demand uncertainty. Bulk purchases at 30 items are very likely to be missed short of a hand-few items.</p>
<p>Yet, <strong>the <em>classical</em> safety stock calculation is less than optimal</strong>: here, we end-up storing about twice as much items than we need to to address the <em>individual</em> purchase, and yet, the safety stock is not high enough to cover big bulk purchases.</p>
<p>In order to address bulk purchases, we <strong>need to refine our  safety stock formula</strong> to take this pattern into account.  For sake of simplicity, we are going to model the bulk purchase pattern as a <em>single factor</em> later reintegrated in the  safety stock formula.</p>
<p>In order to reflect the <em>bulkiness</em> of the sales, we could  consider the <strong><em>largest</em> purchase</strong> for each item  being sold. Yet, this value is not <a href="http://en.wikipedia.org/wiki/Robust_statistics">robust</a> in the statistical  sense, as a single super-large historical purchase can completely  skew the results.</p>
<p>&nbsp;<span class="full-image-block ssNonEditable"><span><img src="http://blog.lokad.com/storage/bulk-order-quantile.png?__SQUARESPACE_CACHEVERSION=1280923803078" alt="" /></span></span></p>
<p>Instead, we should rather consider a <a href="http://en.wikipedia.org/wiki/Quantile">quantile of the bulk order quantity distribution</a> as illustrated by the threshold <em>Q</em> in the illustration here above where all orders have been ordered from the smallest quantity to the largest one.</p>
<p>In this safety stock analysis, there is a <strong>natural fit for the quantile value to adopted for Q</strong>: it should be equal to the <strong>service level</strong> - as defined for the classical safety stock formula - that is to say the desired probability of not having a shortage.</p>
<p>Let call <code>y</code><code><sub>Q </sub></code>the bulk quantity associated to probability <em>Q</em> (in this illustration here above, we have <code>y</code><code><sub>Q</sub></code> = 30). Technically, <code>y</code><code><sub>Q </sub></code>is the <em>inverse cumulative distribution</em> of sales function taken at the quantile <em>Q</em>. The <a href="http://www.lokad.com/calculate-safety-stocks-with-sales-forecasting.ashx">reorder point calculation</a> becomes:</p>
<p><code>R = D + MAX(&sigma;<sub>L</sub> * cdf(P); y</code><code><sub>Q</sub></code><code>)<br /></code></p>
<p>where <code>&sigma;<sub>L</sub> * cdf(P) </code>happens to be the <em>safety stock</em> as computed based on the demand uncertainty.</p>
<p>Computing <code>y</code><code><sub>Q</sub></code> in Excel is a bit tedious because there is not equivalent of the <a href="http://office.microsoft.com/en-us/excel-help/percentile-HP005209211.aspx">PERCENTILE function</a> for inverse cumulative distribution. We have to resort either to an <a href="http://www.vertex42.com/ExcelArticles/mc/PercentileRank.html">histogram scheme</a> or to a VBA macro.</p>
<p>The <em>ICMD</em> User Defined Function for Excel, pasted below, performs the <code>y</code><code><sub>Q </sub></code>calculation, assuming the sales orders are listed in an Excel range and <strong>sorted in increasing order</strong>.</p>
<blockquote>
<p><em>' Inverse cumulative distribution</em><br />Function ICMD(r As Range, q As Double)<br />&nbsp;&nbsp;&nbsp;<em> ' Computing the total</em><br />&nbsp;&nbsp;&nbsp; Dim s As Double<br />&nbsp;&nbsp;&nbsp; For Each c In r<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = s + c.Value<br />&nbsp;&nbsp;&nbsp; Next<br />&nbsp;&nbsp;&nbsp; <em>' Finding the threshold</em><br />&nbsp;&nbsp;&nbsp; Dim a As Double<br />&nbsp;&nbsp;&nbsp; For Each d In r<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = a + d.Value<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If a &gt;= (q * s) Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ICMD = d.Value<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit For<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; Next<br />End Function</p>
</blockquote>
<p>Based on this refined formula applied to the sample data, we obtain a reorder point R = 13 (demand forecast) + 30 (bulk quantity) = 43 which is sufficient to address the bulk purchase with a high probability while keep the inventory as low as possible.</p>
<p>Got business-specific constraints too? Don't hesitate <a href="http://www.lokad.com/ContactUs.ashx">to let us know</a>. We can adjust <a href="http://www.lokad.com/salescast.ashx">Salescast</a> to better fit your business.</p>]]></content></entry><entry><title>Honored by the Windows Azure Partner Award of 2010</title><category term="azure"/><category term="event"/><category term="history"/><category term="partners"/><category term="partners"/><id>http://blog.lokad.com/journal/2010/6/23/honored-by-the-windows-azure-partner-award-of-2010.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/6/23/honored-by-the-windows-azure-partner-award-of-2010.html"/><author><name>Joannes Vermorel</name></author><published>2010-06-23T12:30:43Z</published><updated>2010-06-23T12:30:43Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-block ssNonEditable"><span><img src="http://blog.lokad.com/storage/windows-azure-partner-award-2010.png?__SQUARESPACE_CACHEVERSION=1277296289922" alt="" /></span></span></p>
<p>Today, Lokad has been announced as the <strong>Windows Azure Platform Partner of Year </strong>by Microsoft. This year, Lokad has been chosen among the nearly 3000 entrants worldwide for those awards.</p>
<p>This award recognizes Lokad for demonstrating innovation, competitive differentiation and customer value by using Windows Azure. The Microsoft Partner Awards recognize partners that have delivered exceptional Microsoft-based solutions over the last year.</p>
<p>The <a href="http://www.lokad.com/AboutUs.ashx">Lokad team</a> is extremely proud of achieving this level of recognition. The last French company to get an equivalent award was <a href="http://en.wikipedia.org/wiki/Dassault_Syst%C3%A8mes">Dassault Syst&egrave;mes</a>, the largest French software company and it was two years ago.</p>
<p>As outlined in our <a href="../../journal/2010/6/11/designed-for-large-scale-forecasting-with-windows-azure.html">previous  post</a>, we have been working hard to really get the most of Windows Azure. We did not just port an existing technology toward the cloud,  but we did re-design from scratch a cloud-native architecture.</p>
<p>Our ambition is to deliver the <strong>most accurate and most scalable forecasts of the market</strong>. Windows Azure has already demultiplied our efforts and the results we bring to our clients on a daily basis, but <em>that's only the start</em>. We firmly intend to keep up with the hard work to unleash all Windows Azure potential for the next generation of business analytics.</p>]]></content></entry><entry><title>Designed for large scale forecasting with Windows Azure</title><category term="architecture"/><category term="azure"/><category term="cloud computing"/><category term="docs"/><category term="insights"/><category term="technical"/><id>http://blog.lokad.com/journal/2010/6/11/designed-for-large-scale-forecasting-with-windows-azure.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/6/11/designed-for-large-scale-forecasting-with-windows-azure.html"/><author><name>Joannes Vermorel</name></author><published>2010-06-11T16:12:16Z</published><updated>2010-06-11T16:12:16Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Lokad is a proud user of <a href="http://www.microsoft.com/windowsazure/">Windows Azure</a>, the cloud computing plateform of Microsoft. Our forecasting technology would be nowhere as scalable and accurate without Azure.</p>
<p>Cloud computing opens tremendous opportunities as far reliability, security, performance and costs are concerned. Yet,<strong> to get the most out of the cloud, apps have to be natively designed for the cloud</strong>. Our current <em>cloudy</em> architecture is drawn below.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://blog.lokad.com/storage/LokadAzure-2010-06-11.png?__SQUARESPACE_CACHEVERSION=1276260778967" alt="" /></span></span></p>
<p>Our migration toward Azure costed  us about <strong>1 year of efforts</strong> that spread from late 2008 to early 2010 (which was still pretty fast considering the tremendous challenge it represented to redesign the architecture from scratch).</p>
<p><strong>Best patterns and practices for entreprise apps <em>in the cloud</em></strong> are still a very nascent area. At Lokad, we want to share our experience and get feedback from the community.</p>
<p>Although Lokad is not an open source company, we release as open source components that we believe to be applicable to other businesses. As a matter of fact, we are <a href="http://www.lokad.com/developers.ashx">supporting multiple open source projects</a> such as:</p>
<ul>
<li><a href="http://code.google.com/p/lokad-cloud/">Lokad.Cloud</a> - an O/C mapper for Windows Azure (object to cloud)</li>
<li><a href="http://code.google.com/p/lokad-cqrs/">Lokad.CQRS</a> - Command-Query Responsibility Segregation for Windows Azure.</li>
</ul>
<p>&nbsp;Willing to design an enterprise app on the cloud? <strong>Make sure you check those two projects</strong>.</p>]]></content></entry><entry><title>Salescast, sales forecasting made WAY EASIER</title><category term="cloud computing"/><category term="release"/><category term="release"/><category term="sales"/><category term="sales"/><category term="service status"/><id>http://blog.lokad.com/journal/2010/5/28/salescast-sales-forecasting-made-way-easier.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/5/28/salescast-sales-forecasting-made-way-easier.html"/><author><name>Joannes Vermorel</name></author><published>2010-05-28T20:02:25Z</published><updated>2010-05-28T20:02:25Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>We are proud to announce that we have just released the first version  of <a href="http://salescast.lokad.com/">Salescast</a>.</p>
<p><span class="full-image-block ssNonEditable"><span><a href="http://salescast.lokad.com/" target="_blank"><img src="http://blog.lokad.com/storage/salescast-big-picture.png?__SQUARESPACE_CACHEVERSION=1275076615791" alt="" /></a></span></span></p>
<p>Salescast is a web application hosted on <a href="http://www.microsoft.com/windowsazure/windowsazure/">Windows  Azure</a> that deliverers&nbsp;<strong>sales forecasts, the easy way</strong>.  Feature-wise, Salescast is very close to our <a href="http://www.lokad.com/safety-stock-calculator-software.ashx">Lokad  Safety Stock Calculator</a> (LSSC), a desktop app which, despite its  name, is also delivering sales forecasts.</p>
<blockquote>
<p>Why another client app?</p>
</blockquote>
<p>Over the two years of existence of LSSC, we noticed that <strong>data integration represented the No1 issue</strong> faced by our clients. Forecasting issues were simply dwarfed by the sheer amount of data import issues. We have been trying to add <em>more and more</em> data  adapters to LSSC, reaching +20 supported apps, and yet  LSSC keeps failing at properly importing data as there are  thousands of apps in the market.</p>
<p>Stepping back from the actual situation, we asked ourselves:&nbsp;<strong>why should clients even bother about data integration?</strong> Shouldn't this sort  of thing be part of the  service in the first place? Letting our prospects and  clients face such issues was not acceptable.</p>
<p>Thus, we decided to address the problem from a radically different  angle: <strong>just grant Lokad an access to your data, and Lokad will figure  out the rest</strong>; and the project codenamed <em>Salescast</em> was born.</p>
<p>Salescast  needs one single information to setup the whole forecasting process: a&nbsp;<strong>SQL connection to your database</strong>. Nearly every modern ERP, CRM, accounting, shopping cart, POS, MRP ...  software store data in a SQL database. Most of your business apps are probably powered by SQL. Salescast&nbsp;also supports the different SQL flavors: MSSQL, MySQL, Oracle SQL.</p>
<blockquote>
<p>Do you believe in magic?</p>
</blockquote>
<p>We haven't discovered the ultimate technology that would make all data integration issues go away. In order to solve data integration issues, Salescast uses a combination of technology and process.</p>
<p>1.&nbsp;Salecast attempts to <strong>auto-detect</strong> the target application leveraging its library of known apps, and if the data format is recognized, it proceeds with the forecasting proces<span style="font-size: 11.6667px;">s.</span></p>
<p>2. If the database is not recognized, then <strong>a </strong><a href="http://www.lokad.com/AboutUs.ashx"><strong>Lokad engineer</strong></a><strong> gets appointed</strong> to design the data adapter. Once the adapter is designed we get back to step 1.</p>
<blockquote>
<p>How much is this going to cost?</p>
</blockquote>
<p>We <strong>don't intend to charge</strong> beside our primary <a href="http://www.lokad.com/pricing.ashx">per-forecast pricing</a>. More precisely, we promise to&nbsp;<strong>give a try</strong>&nbsp;at integrating every single app that gets plugged to Salecast.&nbsp;If the integration proves to be really complicated (which happens with old ad-hoc systems) then, we might come back with a quote to complete the job. Naturally, you're free to refuse the quote.</p>
<blockquote>
<p>What about the future of Salescast?</p>
</blockquote>
<p>For the initial release of Salescast, we have been exclusively focused on SQL database. Later on, we plan to add a wider range of data formats (Excel spreadsheets, REST APIs, ...). We will also enhance the reporting capabilities of Salescast. Just let us know what you need.</p>
<p><strong>Salescast is readily available, </strong><a href="http://salescast.lokad.com/"><strong>get your forecasts now!</strong></a></p>]]></content></entry><entry><title>Forecasting API v3 is live (REST + SOAP)</title><category term="api"/><category term="rest"/><category term="service status"/><category term="soap"/><category term="web services"/><id>http://blog.lokad.com/journal/2010/5/2/forecasting-api-v3-is-live-rest-soap.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/5/2/forecasting-api-v3-is-live-rest-soap.html"/><author><name>Joannes Vermorel</name></author><published>2010-05-02T12:13:09Z</published><updated>2010-05-02T12:13:09Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img src="http://blog.lokad.com/storage/forecasting-api-160x209.png?__SQUARESPACE_CACHEVERSION=1272798858144" alt="" /></span></span>About 18 months ago, we were announcing the release of the <a href="http://blog.lokad.com/journal/2008/10/21/forecasting-api-v2-events.html">API v2</a>. Today, we are proud to announce that <a href="http://www.lokad.com/programmers-guide-forecasting-api-v3.ashx">Forecasting API v3</a> is live.</p>
<p>Both <a href="http://www.lokad.com/safety-stock-calculator-software.ashx">Safety Stock Calculator</a> and <a href="http://www.lokad.com/call-center-calculator-software.ashx">Call Center Calculator</a> have been already upgraded toward API v3 starting from the versions 2.5 and above.</p>
<p>As a primary benefit the <strong>1h wait delay</strong> between data upload and forecast download is<strong> no more</strong>. We recommend to upgrade toward the latest versions of those apps.</p>
<p><em>(note: our Excel add-in has not been upgraded yet)</em></p>
<p>The primary focus of this release is <strong>simplicity</strong>. Indeed, the API v2 had incrementally grown to +20 web methods with both a certain level of redundancy and a lack of separation of concern.</p>
<p>Then, over the last 18 months, thanks to our growing <a href="http://www.lokad.com/PartnerNetwork.ashx">partner network</a>, we discovered many <em>minor yet annoying</em> glitches in API v2 related to popular programming environments (Java, Python, C++, Apex, ...). Thus, we made sure API v3 would avoid designs that prove to be troublesome in some environments.</p>
<p>Also, API v3 comes with both <strong>REST and SOAP endpoints</strong>. Indeed, REST has emerged as THE approach to ensure maximal interoperability in modern web-oriented enterprise environments, and we are very committed in staying up to the industry standards.</p>
<p>Here are a few facts about API v3:</p>
<ul>
<li>8 web methods (and only 4 of them actually required to  for production usage) while API v2 had +20 methods. Less methods mean less time to spend deciphering our API spec.</li>
<li>The <a href="http://code.google.com/p/lokad-sdk/">.NET Forecasting Client</a> for API v3 has been reduced about 1k lines of code against +10k lines of code for the previous API v2 version.</li>
</ul>
<p>Since <strong>API v3 provides all the features of API v2 while being much simpler</strong>, we have already started to migrate all existing service in production toward API v3.</p>
<p><strong>API v2 won't be available for new users any more</strong>, but we will make sure all customers in production are properly migrated before shutting down the service for API v2.</p>
<p>Don't hesitate to <a href="http://www.lokad.com/ContactUs.ashx">contact us</a> if you need you need any assistance in this process.</p>]]></content></entry><entry><title>Shortage vs. Stock, forecasting accuracy matters</title><category term="accuracy"/><category term="insights"/><category term="inventory"/><category term="safety stock"/><category term="safety stock"/><category term="shortage"/><category term="supply chain"/><id>http://blog.lokad.com/journal/2010/4/26/shortage-vs-stock-forecasting-accuracy-matters.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/4/26/shortage-vs-stock-forecasting-accuracy-matters.html"/><author><name>Joannes Vermorel</name></author><published>2010-04-26T15:55:06Z</published><updated>2010-04-26T15:55:06Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Demand forecasting is a cornerstone of inventory optimization. Yet, the <strong>exact relationship</strong> between:</p>
<ul>
<li>the service level (probability of not having a shortage), </li>
<li>the safety stock (amount of inventory above the expected demand),</li>
<li>and the forecasting accuracy</li>
</ul>
<p>is sometime a <strong>bit fuzzy</strong>. Hence, let's try to clarify the situation.</p>
<p><span class="full-image-float-left ssNonEditable"><span><img src="http://blog.lokad.com/storage/stock-vs-shortage-1.png?__SQUARESPACE_CACHEVERSION=1271954546970" alt="" /></span></span></p>
<p><strong>Shortages costs money</strong>: customers are dissatisfied and less likely to return, money invested in customer acquisition gets wasted, indirect sales may be lost too, ...</p>
<p><strong>Yet inventory costs money too</strong>: more stocks mean more working capital, more product obsolescence, more warehousing costs; excess inventory means higher advertising costs and lower selling points, ...</p>
<p>Hence, <strong>serving customers is a financial tradeoff</strong> between the  amount of inventory and the amount of shortages.</p>
<p><em>We are implicitly considering a retail situation here, but a near identical reasoning applies to manufacturers as well.</em></p>
<p>At this point, it's still unclear how the forecasting accuracy gets into the picture. In particular, <strong>for some companies, it might look like as if no forecasts were produced</strong> in the first place. Ex: just <a href="http://blog.lokad.com/journal/2009/11/2/refreshing-minmax-inventory-planning.html">min-max</a> reorder policies, and no forecasting.</p>
<p><span class="full-image-float-right ssNonEditable"><span><img src="../../storage/stock-vs-shortage-2.png?__SQUARESPACE_CACHEVERSION=1272294733240" alt="" /></span></span>In fact, even if no one in your company explicitly produce forecasts, <strong>your inventory still get an implicit forecasting accuracy</strong> (illustration here above, the orange triangle representing the constraint). Indeed, it is possible -<em> albeit a bit complicated</em> - to compute the implicit accuracy by companies in your safety stock levels with your shortage frequencies.</p>
<p><strong>A</strong><strong>djusting the tradeoff</strong> either in favor of the service level, or in favor of inventory reduction does not improve the implicit accuracy, as <strong>one cost is exchanged for another</strong> (illustration on the right, the constraint is rotated, not reduced). Forecasts might be hidden by your processes, it won't prevent your company to suffer financial losses if those forecasts happen to be incorrect.</p>
<p>Unless there is a deep lack of analysis in your inventory policies, <strong>the improvement brought by adjusting the <em>shortage vs. stock</em> tradeoff is expected to be marginal</strong> (which could yet represent substantial savings nonetheless, especially if the margin is thin).</p>
<p><span class="full-image-float-left ssNonEditable"><span><img src="../../storage/stock-vs-shortage-3.png?__SQUARESPACE_CACHEVERSION=1272295167535" alt="" /></span></span></p>
<p>In order to <strong>improve both sides of the equation</strong>, you need <a href="http://blog.lokad.com/journal/2009/10/5/whats-wrong-with-promotion-forecasts.html">better forecasts</a>.</p>
<p>The impact of an improved accuracy is illustrated in the graphic on the left. Compared to the previous situations, we see that reducing the accuracy let you reduce both the frequency of shortages and the amount of safety stock.</p>
<p>The <strong>theory</strong> roughly says that reducing the forecast error from 1% (relative) can be used to either reduce the shortage frequency from 1% (relative) or reduce the amount of safety stock from 1% (relative).</p>
<p>In <strong>practice</strong>, there might be obstacles to fully leverage the improvement brought by the extra accuracy, such as the <a href="http://blog.lokad.com/journal/2009/10/21/modeling-varying-lead-time.html">service levels offered by your own suppliers</a>. Yet, with a conservative position, we can still estimate that 1% extra accuracy bring either 0.5% of shortage reduction, or 0.5% of safety stock reduction.</p>
<p>Then again the tradeoff <em>shortage vs. stock</em> can readjusted keeping the new improved accuracy.</p>]]></content></entry><entry><title>Open Lokad accounts with Lokad.TinyAuth, a tiny REST API</title><category term="api"/><category term="management"/><category term="partners"/><category term="release"/><category term="rest"/><category term="technical"/><category term="technical"/><id>http://blog.lokad.com/journal/2010/4/17/open-lokad-accounts-with-lokadtinyauth-a-tiny-rest-api.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/4/17/open-lokad-accounts-with-lokadtinyauth-a-tiny-rest-api.html"/><author><name>Joannes Vermorel</name></author><published>2010-04-17T08:33:08Z</published><updated>2010-04-17T08:33:08Z</updated><summary type="html" xml:lang="en-US"><![CDATA[http://app.lokad.com/rest/newacount.ashx?partnerkey={key}&amp;email={email}&amp;name={name}]]></summary></entry><entry><title>Forecast's species: classification vs. regression</title><category term="business"/><category term="classification"/><category term="forecasting"/><category term="forecasting"/><category term="insights"/><category term="insights"/><category term="market"/><category term="regression"/><category term="software"/><id>http://blog.lokad.com/journal/2010/4/6/forecasts-species-classification-vs-regression.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/4/6/forecasts-species-classification-vs-regression.html"/><author><name>Joannes Vermorel</name></author><published>2010-04-06T10:21:02Z</published><updated>2010-04-06T10:21:02Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>The word <strong>forecasting</strong> is covering a very large spectrum of <strong>processes, technologies and even markets</strong>. In the past, we introduced the <a href="http://blog.lokad.com/journal/2007/8/5/worlds-of-forecasting-software.html">worlds of forecasting software</a>, distinguishing between:</p>
<ul>
<li>Deterministic simulation software</li>
<li>Expert aggregation software</li>
<li>Statistical forecasting software</li>
</ul>
<p>Lokad falls in the last category as <strong>our technology is purely statistical</strong>. Yet, Lokad is far from covering the entire statistical spectrum on is own. Two broads categories of forecasts exist in statistical forecasting (*):</p>
<ul>
<li>Classification forecasts</li>
<li>Regression forecasts</li>
</ul>
<p><em>(*) We are oversimplifying here for the sake of clarity, as statistical learning subtleties are well beyond the scope of this modest blog post.</em></p>
<p>Classification attempts to separate (or <em>classify</em>) objects according to their properties. The illustration below from <a href="http://quantombone.blogspot.com/2009_06_01_archive.html">Tomasz Malisiewicz</a> illustrates a classification task trying to separate images picturing a <em>chair</em> from images picturing a <em>table</em>.</p>
<p style="text-align: center;"><span class="full-image-block ssNonEditable"><span><a href="http://quantombone.blogspot.com/2009_06_01_archive.html"><img src="http://blog.lokad.com/storage/table-vs-chair-learning.png?__SQUARESPACE_CACHEVERSION=1270545608267" alt="" /></a></span><span class="thumbnail-caption" style="width: 500px;">Illustration from tombone's blog</span></span></p>
<p style="text-align: justify;">The output of a classification is binary (or rather <a href="http://en.wiktionary.org/wiki/discrete_variable">discrete</a>): objects get assigned to <em>classes</em> with more or less confidence, i.e. higher or lower probabilities.</p>
<p style="text-align: justify;">On the other hand, regressions typically output <strong>curves</strong>. The illustration below is considering a time-series representing historical sales, and displays the corresponding forecast.</p>
<p style="text-align: center;"><img src="../../storage/forecasted-sales-chart.png?__SQUARESPACE_CACHEVERSION=1270546236297" alt="" /></p>
<p style="text-align: justify;"><span class="full-image-block ssNonEditable"><span>&nbsp;</span></span>The regression forecast is a curve rather than a binary (or combination of binary) settings. Inputs get prolonged into the future.</p>
<p style="text-align: justify;"><strong>How does this distinction impact the business?</strong></p>
<p style="text-align: justify;">Well, it turns out that Lokad - <em>as it stands early 2010</em> - only delivers regression forecasts. Thus, there are many interesting problems that cannot be tackled by Lokad because these are classification problems:</p>
<ul>
<li><strong>Customer segmentation</strong>: for each customer, we would like to evaluate the probability of achieving successful up-sale through a direct marketing action. Following the same idea, we could try to predict the <a href="http://en.wikipedia.org/wiki/Customer_attrition">churn</a> as well.</li>
<li><strong>Fraud detection:</strong> for each transaction, we would like to evaluate - based on the transaction pattern - the probability for the operation to be a fraud attempt.</li>
<li><strong>Deal prioritization</strong>: based on the properties of the prospect (availability of budget, industry, contact rank in the company, expressed level of interest, ...), we would like to evaluate the likelihood to get a profitable deal out of each prospect to prioritize the sales team efforts.</li>
</ul>
<p>Frequently, we are asked whether Lokad could deliver classification forecasts as well. Unfortunately, the answer will be negative for the time being. Albeit being rooted by the same <a href="http://en.wikipedia.org/wiki/Vapnik%E2%80%93Chervonenkis_theory">mathematical theory</a>, classification and regression entail very different technologies; and Lokad is pushing all its efforts toward regression problems.</p>
<p>Although, <strong>we are not dismissive about classification problems</strong>, they truly deserve attention and efforts. For 2010, we are sticking to <a href="http://blog.lokad.com/journal/2009/10/28/roadmap-for-2010.html">our roadmap</a>, but further ahead, classification could be a natural extension of our forecasting services.</p>]]></content></entry><entry><title>30 days free trial vs. $30 free trial</title><category term="insights"/><category term="pricing"/><category term="subscriptions"/><category term="trial"/><id>http://blog.lokad.com/journal/2010/3/10/30-days-free-trial-vs-30-free-trial.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/3/10/30-days-free-trial-vs-30-free-trial.html"/><author><name>Joannes Vermorel</name></author><published>2010-03-10T13:15:14Z</published><updated>2010-03-10T13:15:14Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img style="width: 200px;" src="http://blog.lokad.com/storage/reg-lokad-screenshot.png?__SQUARESPACE_CACHEVERSION=1268225137921" alt="" /></span></span>A few months ago, we upgraded our pricing for a much simpler strict <a href="http://blog.lokad.com/journal/2009/11/30/unified-pricing-system.html">pay-as-you-go pricing</a>. In short, we charge for every single forecasts retrieved from Lokad: the greater the number of forecasts, the larger the bill. Then, if no forecasts are retrieved during for a month, no charges are placed on your account.</p>
<p>This pricing evolution leads us <strong>to revise the notion of Free Trial as well</strong>, but in a more subtle way. Indeed, our old 30 days free trial was both not enough and too much in the same time:</p>
<ul>
<li><strong>Not enough</strong>, because companies frequently need a few months to evaluate a new technology.</li>
<li><strong>Too much</strong>, because we did not previously put any usage limitation within the 30 days period (*).</li>
</ul>
<p>As a consequence, we decided to go for a <strong>Free Trial with $30 of pre-paid services</strong>.</p>
<p>Simply put, when you open a Lokad account, your balance starts at $30 instead of zero (or the equivalent amount in other currencies). Hence, you will only get charged if you consume more than $30 worth of forecasts which represents almost <a href="http://www.lokad.com/pricing.ashx">3000 forecasts</a>.</p>
<p>Then, <strong>we haven't set any expiration policy on this pre-paid amount</strong>. Hence, if you open your account now, but only start using it in 3 months from now, the free trial amount will still be available.</p>
<p>(*) We did choose $30 as we think it's <em>sufficient</em> for the most situations. If your company require more than that to evaluate Lokad, don't hesitate to drop us <a href="http://www.lokad.com/ContactUs.ashx">an email</a>, as we are usually extending this amount on simple requests.</p>]]></content></entry><entry><title>Auf Deutsch!</title><category term="docs"/><category term="german"/><category term="localization"/><id>http://blog.lokad.com/journal/2010/3/1/auf-deutsch.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/3/1/auf-deutsch.html"/><author><name>Joannes Vermorel</name></author><published>2010-03-01T17:24:52Z</published><updated>2010-03-01T17:24:52Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img src="http://blog.lokad.com/storage/brandenburg-gate-berlin.jpg?__SQUARESPACE_CACHEVERSION=1267464521704" alt="" /></span></span>Thanks to the ongoing efforts of <a href="http://www.kraut-salad.com/">Nicole Backhaus</a>, Lokad now features an <a href="http://www.lokad.com/de.Startseite.ashx">up-to-date German</a> translation. Our next target are Spanish and French. Stay tuned.</p>]]></content></entry><entry><title>Measuring forecast accuracy</title><category term="accuracy"/><category term="accuracy"/><category term="forecasting"/><category term="forecasting"/><category term="insights"/><category term="measure"/><id>http://blog.lokad.com/journal/2010/2/23/measuring-forecast-accuracy.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/2/23/measuring-forecast-accuracy.html"/><author><name>Joannes Vermorel</name></author><published>2010-02-23T08:32:50Z</published><updated>2010-02-23T08:32:50Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img src="http://blog.lokad.com/storage/cristal-ball.jpg" alt=" alt=" /></span></span>Most engineers will tell you that:</p>
<blockquote>
<p><em>You can't optimize what you don't measure</em></p>
</blockquote>
<p>Turns out that <strong>forecasting is no exception</strong>. Measuring forecast accuracy is one of the few cornerstones of any forecasting technology.</p>
<p>A <strong>frequent misconception</strong> about accuracy measurement is that Lokad has <strong>to wait for the forecasts to become past</strong>, to finally compare the forecasts with what really happened.</p>
<p>Although, this approach works to some extend, it comes with severe drawbacks:</p>
<ul>
<li>It's painfully slow: a 6 months ahead forecast takes 6 months to be validated.</li>
<li>It's very sensitive to <a href="http://blog.lokad.com/journal/2009/4/22/overfitting-when-accuracy-measure-goes-wrong.html">overfitting</a>.&nbsp; <strong>Overfitting should not to be taken lightly</strong>, and it's one the few thing that is very likely to wreak havoc in your accuracy measurements.</li>
</ul>
<p>Measuring the accuracy of delivered forecasts is a tough piece of work for us. <strong>Accuracy measurement accounts for roughly half of the complexity</strong> of our forecasting technology: the more advance the forecasting technology, the greater the need for robust accuracy measurements.</p>
<p>In particular, Lokad returns the forecast accuracy associated to every single forecast that we deliver (for example, <a href="http://www.lokad.com/excel-sales-forecasting-addin.ashx">our Excel-addin reports forecast accuracy</a>). The metric used for accuracy measurement is the <a href="http://en.wikipedia.org/wiki/Mean_absolute_percentage_error">MAPE</a> (Mean Absolute Percentage Error).</p>
<p>In order to compute an <strong>estimated accuracy</strong>, Lokad proceeds (<em>roughly</em>) through <a href="http://en.wikipedia.org/wiki/Cross-validation_%28statistics%29">cross-validation</a> tuned for time-series forecasts. Cross-validation is simpler than it sounds. If we consider a weekly forecast 10 weeks ahead with 3 years (aka 150 weeks) of history, then the cross-validation looks like:</p>
<ol>
<li>Take the 1st week, forecast 10 weeks ahead, and compare results to original.</li>
<li>Take the 2 first weeks, forecast 10 weeks ahead, and compare.</li>
<li>Take the 3 first weeks, forecast 10 weeks ahead, and compare.</li>
<li>...</li>
</ol>
<p>The process is rather tedious, as we end-up recomputing forecasts about 150 times for only 3 years of history. Obviously, cross-validation screams for automation, and there is little hope to go through such a process without computer support. Yet, computers typically cost less than business forecast errors, and Lokad relies on <a href="http://code.google.com/p/lokad-cloud/">cloud computing</a> to deliver such high-intensive computations.</p>
<p>Attempts to "simplify" the process outlined are very likely to end-up with overfitting problems. We suggest to say very careful, as overfitting isn't a problem to be taken lightly. <strong>In doubts, stick to a complete cross-validation</strong>.</p>]]></content></entry><entry><title>Forecast consumption reports</title><category term="consumption"/><category term="service status"/><category term="service status"/><category term="subscription"/><category term="subscriptions"/><category term="upgrade"/><id>http://blog.lokad.com/journal/2010/1/24/forecast-consumption-reports.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/1/24/forecast-consumption-reports.html"/><author><name>Joannes Vermorel</name></author><published>2010-01-24T17:15:06Z</published><updated>2010-01-24T17:15:06Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="thumbnail-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Freg-lokad-screenshot.png%3F__SQUARESPACE_CACHEVERSION%3D1264351599433',825,998);"><img src="http://blog.lokad.com/storage/thumbnails/941346-5489022-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1264351599434" alt="" /></a></span></span> We announced a few weeks ago that Lokad had evolved toward a simplified <a href="http://blog.lokad.com/journal/2009/11/30/unified-pricing-system.html">pay-as-you-go pricing</a>. We have pushed today a significant upgrade of <a href="http://app.lokad.com/">app.lokad.com</a>, the web app that lets you manage your forecasting subscription.</p>
<p>Beside an (hopefully) improved look &amp; feel, the web app now reports your <strong>current forecast consumption</strong>, expressed as the total number of forecasts that have been retrieved from Lokad. In particular, forecasts delivery are now reported in 15min increments.</p>
<p><span class="thumbnail-image-float-right ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Faccount-lokad-screenshot.png%3F__SQUARESPACE_CACHEVERSION%3D1264417588083',504,848);"><img src="http://blog.lokad.com/storage/thumbnails/941346-5489123-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1264417588084" alt="" /></a></span></span></p>
<p>In the back-office, we have also upgraded <strong>many aspects of our infrastructure as well</strong> to make it a better fit for Windows Azure.</p>
<p>In particular, <strong>we recommend to upgrade client apps</strong> (such as <a href="http://www.lokad.com/safety-stock-calculator-software.ashx">Safety Stock Calculator</a> or <a href="http://www.lokad.com/call-center-calculator-software.ashx">Call Center Calculator</a>) toward their respective latest versions.</p>
<p>In order <strong>to avoid data quality issues</strong> that tend to lower the overall accuracy (as a mild case of <a href="http://en.wikipedia.org/wiki/Garbage_In,_Garbage_Out">Garbage In, Garbage Out</a> problem), data validation of our <strong><a href="http://www.lokad.com/web-services-time-series-forecasting.ashx">Forecasting API</a> has been made a bit more strict</strong>, and this change could cause upload failure with old client apps.</p>
<p>In order to upgrade, just launch the client app, wait for about 5s, and click the <strong>Update</strong> button that should appear in the upper right corner. If no button appears, then you already have the latest version.</p>]]></content></entry><entry><title>Ask.Lokad and get answers</title><category term="answers"/><category term="ask.lokad"/><category term="business"/><category term="business"/><category term="community"/><category term="community"/><category term="forecasting"/><category term="questions"/><category term="service status"/><id>http://blog.lokad.com/journal/2010/1/12/asklokad-and-get-answers.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/1/12/asklokad-and-get-answers.html"/><author><name>Joannes Vermorel</name></author><published>2010-01-12T16:53:04Z</published><updated>2010-01-12T16:53:04Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img src="http://blog.lokad.com/storage/ask-lokad.png?__SQUARESPACE_CACHEVERSION=1263314107731" alt="" /></span></span>Although some of you might have already noticed, we did quietly launch <a href="http://ask.lokad.com/">ask.lokad.com</a> about one month ago as a replacement of our old forums that were suffering several terminal Web 1.0 design syndrome.</p>
<p>Ask.Lokad is powered by <a href="http://stackexchange.com/">StackExchange</a>, the engine behind <a href="http://stackoverflow.com/">StackOverflow</a> the most popular Q/A forum for programming matters.</p>
<p>We have decided to revamp our forums, because we were getting the feeling that most simple questions such <a href="http://ask.lokad.com/questions/5/working-days-vs-calendar-days-how-to-deal-with-leadtimes-with-lssc">Should I consider working days or calendar days for lead time?</a> or <a href="http://ask.lokad.com/questions/29/asa-goes-negative-when-number-of-agents-is-below-call-intensity">Why does ASA get negative when the number of agents get below call intensity?</a> tend to be poorly addressed on the web.</p>
<p>Although, answers are probably buried in textbooks somewhere, our ambitions is to make this sort of knowledge as openly reachable as possible.</p>
<p><strong>Have a question about forecasting, or about the usage of forecasts in your business?</strong> Don't hesitate to post on Ask.Lokad, we do our best to get all questions addressed. Then, as Lokad does not have a monopoly over smart people, the community can also <a href="http://ask.lokad.com/questions/9/smoothing-constants-in-time-series-value-of-smoothing-constant">challenge our answers</a> with their own.</p>]]></content></entry><entry><title>Tags and Events user guide</title><category term="developers"/><category term="docs"/><category term="documentation"/><category term="events"/><category term="forecasting"/><category term="guide"/><category term="tags"/><category term="user"/><id>http://blog.lokad.com/journal/2010/1/7/tags-and-events-user-guide.html</id><link rel="alternate" type="text/html" href="http://blog.lokad.com/journal/2010/1/7/tags-and-events-user-guide.html"/><author><name>Joannes Vermorel</name></author><published>2010-01-07T13:28:50Z</published><updated>2010-01-07T13:28:50Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img src="http://blog.lokad.com/storage/2010.jpg?__SQUARESPACE_CACHEVERSION=1262871840314" alt="" /></span></span>First of all <strong>best wishes for 2010</strong>. Lokad has been nicely growing and moving forward during 2009, we really hope to be able to move forward <a href="http://blog.lokad.com/journal/2009/10/28/roadmap-for-2010.html">according to plans for 2010</a>.</p>
<p>As a first token of goodwill, we have finally published the long missing <a href="http://www.lokad.com/guide-for-tags-and-events.ashx">User guide for Tags and Events</a>.</p>
<p>Indeed, tags and events are a powerful extension of our Forecasting API, that let Lokad refines forecasts through meta-data. Both <a href="http://www.lokad.com/safety-stock-calculator-software.ashx">LSSC</a> and <a href="http://www.lokad.com/call-center-calculator-software.ashx">L3C</a> support this framework.</p>
<p>Tags and Events are especially useful in retail and manufacturing <a href="http://blog.lokad.com/journal/2009/10/5/whats-wrong-with-promotion-forecasts.html">to better handle promotion forecasts</a>, but also product launches as well as all sort of factors that impact the business.</p>]]></content></entry></feed>