Inventory Optimization Solutions and Revenue Forecasting for Retail

Part 2. Inventory Optimization Solutions and Revenue Forecasting for Retail


Second dataset consists of sales and inventory activities between January 2016 and August 2018. Both datasets (one for sales and one for inventory) were used in the analyses and were merged when needed using “Style#” and “Color”.

Brief Overview of UNO performance- Annually

2016 2017 2018

(in progress)

Revenue 5,195,153 3,715,589


COGS 2,597,578 1,857,796 1,336,160
Gross Profit 2,597,578 1,857,796 1,336,160
Operating Expense 240,000 240,000 240,000
Net Income 2,357,576 1,617,795 1,096,160

Table 1: Annual performance of second client “UNO”


Looking at Table 1, there is an overall decreasing trend in both revenue and cost year over year. From 2016 to 2017, we saw a big drop in Profit but we anticipate less of a drop from 2017 to 2018 as 2018 is still in progress.

Goal of this research is to 1) minimize unused supplies and 2) project future revenue in order to optimize profit.


For the inventory optimization analysis, we built an interactive dashboard to calculate inventory turnover ratio for each unique ID defined by “Style#” and “Color” with an option to choose monthly or quarterly data frequency ( Inventory turnover ratio was calculated using the total “outgoing” quantities (quantities sold in store) divided by average quantity in warehouse. Inventory turnover days was 365 divided by the inventory turnover ratio.

Figure 1: Inventory Turnover Analysis on Shiny Dashboard

Figure 1 is a screenshot of our dashboard with monthly time frequency and ID DTA4E2531BL. Inventory turnover ratio for this unique item was 35, and we recommend selling this product at a discount price after 10 days in inventory warehouse.

The second request from our client was to determine how many items of each product and color should be stored in each month. As in the first request, we combined product and color code together to distinguish each product line. This case is a matter of Time-Series demand forecast because we had to predict when orders will come based on seasonality.

Figure 2: Examples of orders(in units) through time and season


Client are to receive a large number of orders approximately 1-3 months before the holiday or sale period, such as Black Friday, Christmas or Thanksgiving. For instance, DTA4E2531JET has orders coming in frequently and in large amount around July, August, and September in preparation for Christmas.

Before modeling time series, we encountered three obstacles. First, the interval between each sale period of each item are not even. Consequently, it would be difficult to work out time-series model since it requires data to have the same interval. Second, different products are at different stages of a product life cycle. Some products are on the decline stage, while some products are on the growing stage. For instance, based on Figure 2, DTA4E2531JET are on the growing stage while DTA4E2531GRY is on the initial stage. As a result, we confronted a lack of data for many product lines because products that are at the growing stage will have enough sale data to do demand forecast while products at the initial stage have too few sales records. Third, outliers are discovered in some products. Sometimes, some products received a bulky order, which causes an unusual spike. For example, the client received a 1000 units order of DTA4E2531IV. This circumstance is totally unpredictable, which may happened only once or twice. Therefore, it will negatively impact any Time-Series model.

To tackle these problems, we grouped data to weekly intervals to reduce variation and make data more consistent for a Time-Series forecast. Then, we removed all orders above 500 units, which occurred only once or twice. Last, due to a lack of data in some product lines, we decided to forecast only products that have more than 30 sale records. Although ARIMA model is more customizable, it is said to work better when there is over 100 observations, and most of our data have under 50 records. Given the constraints, we used Facebook Prophet to predict demand forecast which is more simple and easy to construct.

  1. Modeling

3.1 Time Series Forecasts using FB Prophet

Figure 3: FB Prophet Time Series Plot - Upward Trend


Our Facebook Prophet model predicts the quantity that client will receive each week, which then can be used to forecast how much they should stock up each item in the inventory. We have created a Shiny Dashboard in the second tab to browse through each products. Figure 3 is an example of a product line that we expected the demand to rise.

Figure 4: FB Prophet Time Series Plot - Downward Trend (“Dead Product”)

Figure 4 is an example of a product that we don’t recommend client  stock up on. When the forecasted demand fall below 0, we would recommend client to dispose by selling them at discount rate and not stock up until the order come in.


Determining inventory turnover in days of each product and forecasting demand are common practices in many industries. Our R-Shiny dashboard displays 1) inventory turnover ratio and how long each product should stay in the inventory before selling them at the discount price in one tab and 2) demand forecast from time series model given an item. We have confronted insufficient data input in several product lines, and the time series model is unable to predict any spikes or one-time-bulk orders which occur only once or twice. However, both our analyses provide ballparks for making decision on pricing strategy and inventory management. By determining how much of each item should be stored each month and when the company should sell each item at a discounted price, our client should be able to reduce cost and optimize profit.

About Authors

Lukas Frei

Lukas Frei is an aspiring data scientist currently completing the 12-week bootcamp at the New York City Data Science Academy. Besides his passion for data, he is also very interested in business and finance. Lukas holds a BS...
View all posts by Lukas Frei >

Raymond Liang

Raymond Liang is an aspiring data scientist currently studying with the NYC Data Science Academy. Through the 12 week intensive course, Raymond is able to apply advanced data manipulation and visualization techniques using languages including, but not limited...
View all posts by Raymond Liang >

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI