[{"data":1,"prerenderedAt":1455},["ShallowReactive",2],{"content-query-V8h2a0h1jH":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"heading":10,"prompt":11,"tags":15,"files":17,"nav":6,"presets":18,"gallery":37,"body":39,"_type":1448,"_id":1449,"_source":1450,"_file":1451,"_stem":1452,"_extension":1453,"sitemap":1454},"/tools/sales-forecasting","tools",false,"","Sales Forecasting Tool for Excel & CSV","Forecast sales online from Excel or CSV data. Fit ETS and trend models, decompose seasonality, and generate prediction intervals with AI.","Sales Forecasting",{"prefix":12,"label":13,"placeholder":14},"Forecast sales","Describe your sales data and forecast horizon","e.g. monthly sales data for 3 years; forecast next 6 months; ETS model with additive seasonality; 80% and 95% confidence intervals; decompose trend and seasonality; MAPE and MAE",[16],"statistics",true,[19,25,31],{"label":20,"prompt":21,"dataset_url":22,"dataset_title":23,"dataset_citation":24},"Monthly Revenue Forecast","Forecast monthly revenue for the next 6 months: fit ETS(A,A,A) model with additive trend and seasonality; plot historical data with forecast and 80%/95% confidence intervals; report MAE, MAPE, and RMSE; decompose trend, seasonal, and residual components","https://api.worldbank.org/v2/en/indicator/NY.GDP.PCAP.CD?downloadformat=excel","GDP per Capita (Current USD)","World Bank",{"label":26,"prompt":27,"dataset_url":28,"dataset_title":29,"dataset_citation":30},"Retail Sales Trend Forecast","Sales time series forecasting: compare linear trend, exponential smoothing, and ARIMA models; select best model by AIC; forecast 12 periods ahead; 95% prediction interval; plot actual vs fitted values; residual diagnostics","https://ourworldindata.org/grapher/gdp-per-capita-worldbank.csv","GDP per Capita","Our World in Data",{"label":32,"prompt":33,"dataset_url":34,"dataset_title":35,"dataset_citation":36},"Public Health Trend Forecast","Forecast a health metric time series: decompose trend and seasonality; fit Holt-Winters exponential smoothing; forecast 6 months ahead with 95% CI; test for autocorrelation in residuals (Ljung-Box test); plot forecast with confidence band","https://data.cdc.gov/api/views/iuq5-y9ct/rows.csv?accessType=DOWNLOAD","NHANES Mental Health Assessment","CDC",[38],"/img/tools/sales-forecasting.png",{"type":40,"children":41,"toc":1437},"root",[42,51,84,109,693,699,755,761,909,914,920,1086,1092,1250,1256,1310,1316,1353,1359,1382,1399],{"type":43,"tag":44,"props":45,"children":47},"element","h2",{"id":46},"what-is-sales-forecasting",[48],{"type":49,"value":50},"text","What Is Sales Forecasting?",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,61,63,68,70,75,77,82],{"type":43,"tag":56,"props":57,"children":58},"strong",{},[59],{"type":49,"value":60},"Sales forecasting",{"type":49,"value":62}," is the process of using historical revenue or demand data to project future performance over a specified horizon. Unlike a simple trendline extrapolation, a proper statistical forecast accounts for three components that drive most sales time series: the ",{"type":43,"tag":56,"props":64,"children":65},{},[66],{"type":49,"value":67},"trend",{"type":49,"value":69}," (sustained upward or downward movement over time), ",{"type":43,"tag":56,"props":71,"children":72},{},[73],{"type":49,"value":74},"seasonality",{"type":49,"value":76}," (regular periodic patterns — Q4 spikes, summer dips, monthly cycles), and ",{"type":43,"tag":56,"props":78,"children":79},{},[80],{"type":49,"value":81},"residual noise",{"type":49,"value":83}," (random fluctuations that cannot be predicted). Separating these components and modeling them explicitly produces more accurate and credible forecasts than applying a linear regression to raw monthly totals.",{"type":43,"tag":52,"props":85,"children":86},{},[87,89,94,96,101,103,107],{"type":49,"value":88},"The two most widely used statistical forecasting families are ",{"type":43,"tag":56,"props":90,"children":91},{},[92],{"type":49,"value":93},"Exponential Smoothing (ETS)",{"type":49,"value":95}," and ",{"type":43,"tag":56,"props":97,"children":98},{},[99],{"type":49,"value":100},"ARIMA",{"type":49,"value":102},". ETS models (Holt-Winters) assign exponentially decreasing weights to older observations, with separate smoothing parameters for level, trend, and seasonality. ETS(A,A,A) — additive error, additive trend, additive seasonality — is appropriate for sales data where seasonal variation is roughly constant in absolute dollars. ETS(A,A,M) — multiplicative seasonality — fits data where the seasonal swing grows proportionally with the overall level (common in fast-growing businesses). ",{"type":43,"tag":56,"props":104,"children":105},{},[106],{"type":49,"value":100},{"type":49,"value":108}," models capture autocorrelation structure in the residuals after differencing to achieve stationarity; they are particularly useful when seasonality is irregular or when external regressors (promotions, price changes) are included via ARIMAX.",{"type":43,"tag":52,"props":110,"children":111},{},[112,114,573,575,691],{"type":49,"value":113},"A concrete example: a SaaS company has 30 months of monthly revenue data. ETS(A,A,A) decomposes the series into a +",{"type":43,"tag":115,"props":116,"children":119},"span",{"className":117},[118],"katex",[120,335],{"type":43,"tag":115,"props":121,"children":124},{"className":122},[123],"katex-mathml",[125],{"type":43,"tag":126,"props":127,"children":129},"math",{"xmlns":128},"http://www.w3.org/1998/Math/MathML",[130],{"type":43,"tag":131,"props":132,"children":133},"semantics",{},[134,328],{"type":43,"tag":135,"props":136,"children":137},"mrow",{},[138,144,150,156,161,166,171,176,181,185,190,195,199,204,211,216,221,226,230,234,238,242,246,251,255,259,263,267,271,275,280,285,290,294,298,302,308,313,318,323],{"type":43,"tag":139,"props":140,"children":141},"mn",{},[142],{"type":49,"value":143},"1.8",{"type":43,"tag":145,"props":146,"children":147},"mi",{},[148],{"type":49,"value":149},"K",{"type":43,"tag":145,"props":151,"children":153},{"mathvariant":152},"normal",[154],{"type":49,"value":155},"/",{"type":43,"tag":145,"props":157,"children":158},{},[159],{"type":49,"value":160},"m",{"type":43,"tag":145,"props":162,"children":163},{},[164],{"type":49,"value":165},"o",{"type":43,"tag":145,"props":167,"children":168},{},[169],{"type":49,"value":170},"n",{"type":43,"tag":145,"props":172,"children":173},{},[174],{"type":49,"value":175},"t",{"type":43,"tag":145,"props":177,"children":178},{},[179],{"type":49,"value":180},"h",{"type":43,"tag":145,"props":182,"children":183},{},[184],{"type":49,"value":175},{"type":43,"tag":145,"props":186,"children":187},{},[188],{"type":49,"value":189},"r",{"type":43,"tag":145,"props":191,"children":192},{},[193],{"type":49,"value":194},"e",{"type":43,"tag":145,"props":196,"children":197},{},[198],{"type":49,"value":170},{"type":43,"tag":145,"props":200,"children":201},{},[202],{"type":49,"value":203},"d",{"type":43,"tag":205,"props":206,"children":208},"mo",{"separator":207},"true",[209],{"type":49,"value":210},",",{"type":43,"tag":145,"props":212,"children":213},{},[214],{"type":49,"value":215},"a",{"type":43,"tag":139,"props":217,"children":218},{},[219],{"type":49,"value":220},"12",{"type":43,"tag":205,"props":222,"children":223},{},[224],{"type":49,"value":225},"−",{"type":43,"tag":145,"props":227,"children":228},{},[229],{"type":49,"value":160},{"type":43,"tag":145,"props":231,"children":232},{},[233],{"type":49,"value":165},{"type":43,"tag":145,"props":235,"children":236},{},[237],{"type":49,"value":170},{"type":43,"tag":145,"props":239,"children":240},{},[241],{"type":49,"value":175},{"type":43,"tag":145,"props":243,"children":244},{},[245],{"type":49,"value":180},{"type":43,"tag":145,"props":247,"children":248},{},[249],{"type":49,"value":250},"s",{"type":43,"tag":145,"props":252,"children":253},{},[254],{"type":49,"value":194},{"type":43,"tag":145,"props":256,"children":257},{},[258],{"type":49,"value":215},{"type":43,"tag":145,"props":260,"children":261},{},[262],{"type":49,"value":250},{"type":43,"tag":145,"props":264,"children":265},{},[266],{"type":49,"value":165},{"type":43,"tag":145,"props":268,"children":269},{},[270],{"type":49,"value":170},{"type":43,"tag":145,"props":272,"children":273},{},[274],{"type":49,"value":215},{"type":43,"tag":145,"props":276,"children":277},{},[278],{"type":49,"value":279},"l",{"type":43,"tag":145,"props":281,"children":282},{},[283],{"type":49,"value":284},"c",{"type":43,"tag":145,"props":286,"children":287},{},[288],{"type":49,"value":289},"y",{"type":43,"tag":145,"props":291,"children":292},{},[293],{"type":49,"value":284},{"type":43,"tag":145,"props":295,"children":296},{},[297],{"type":49,"value":279},{"type":43,"tag":145,"props":299,"children":300},{},[301],{"type":49,"value":194},{"type":43,"tag":205,"props":303,"children":305},{"stretchy":304},"false",[306],{"type":49,"value":307},"(",{"type":43,"tag":145,"props":309,"children":310},{},[311],{"type":49,"value":312},"Q",{"type":43,"tag":139,"props":314,"children":315},{},[316],{"type":49,"value":317},"4",{"type":43,"tag":205,"props":319,"children":320},{},[321],{"type":49,"value":322},"+",{"type":43,"tag":139,"props":324,"children":325},{},[326],{"type":49,"value":327},"18",{"type":43,"tag":329,"props":330,"children":332},"annotation",{"encoding":331},"application/x-tex",[333],{"type":49,"value":334},"1.8K/month trend, a 12-month seasonal cycle (Q4 +18%, Q1 −12%), and white-noise residuals with MAPE = 4.2%. The 6-month forecast projects revenue growing from ",{"type":43,"tag":115,"props":336,"children":339},{"className":337,"ariaHidden":207},[338],"katex-html",[340,452,559],{"type":43,"tag":115,"props":341,"children":344},{"className":342},[343],"base",[345,351,357,364,369,374,379,384,389,394,399,405,410,415,421,427,432,437,442,448],{"type":43,"tag":115,"props":346,"children":350},{"className":347,"style":349},[348],"strut","height:1em;vertical-align:-0.25em;",[],{"type":43,"tag":115,"props":352,"children":355},{"className":353},[354],"mord",[356],{"type":49,"value":143},{"type":43,"tag":115,"props":358,"children":362},{"className":359,"style":361},[354,360],"mathnormal","margin-right:0.07153em;",[363],{"type":49,"value":149},{"type":43,"tag":115,"props":365,"children":367},{"className":366},[354],[368],{"type":49,"value":155},{"type":43,"tag":115,"props":370,"children":372},{"className":371},[354,360],[373],{"type":49,"value":160},{"type":43,"tag":115,"props":375,"children":377},{"className":376},[354,360],[378],{"type":49,"value":165},{"type":43,"tag":115,"props":380,"children":382},{"className":381},[354,360],[383],{"type":49,"value":170},{"type":43,"tag":115,"props":385,"children":387},{"className":386},[354,360],[388],{"type":49,"value":175},{"type":43,"tag":115,"props":390,"children":392},{"className":391},[354,360],[393],{"type":49,"value":180},{"type":43,"tag":115,"props":395,"children":397},{"className":396},[354,360],[398],{"type":49,"value":175},{"type":43,"tag":115,"props":400,"children":402},{"className":401},[354,360],[403],{"type":49,"value":404},"re",{"type":43,"tag":115,"props":406,"children":408},{"className":407},[354,360],[409],{"type":49,"value":170},{"type":43,"tag":115,"props":411,"children":413},{"className":412},[354,360],[414],{"type":49,"value":203},{"type":43,"tag":115,"props":416,"children":419},{"className":417},[418],"mpunct",[420],{"type":49,"value":210},{"type":43,"tag":115,"props":422,"children":426},{"className":423,"style":425},[424],"mspace","margin-right:0.1667em;",[],{"type":43,"tag":115,"props":428,"children":430},{"className":429},[354,360],[431],{"type":49,"value":215},{"type":43,"tag":115,"props":433,"children":435},{"className":434},[354],[436],{"type":49,"value":220},{"type":43,"tag":115,"props":438,"children":441},{"className":439,"style":440},[424],"margin-right:0.2222em;",[],{"type":43,"tag":115,"props":443,"children":446},{"className":444},[445],"mbin",[447],{"type":49,"value":225},{"type":43,"tag":115,"props":449,"children":451},{"className":450,"style":440},[424],[],{"type":43,"tag":115,"props":453,"children":455},{"className":454},[343],[456,460,465,470,475,480,485,491,496,502,508,514,520,525,530,536,541,546,550,555],{"type":43,"tag":115,"props":457,"children":459},{"className":458,"style":349},[348],[],{"type":43,"tag":115,"props":461,"children":463},{"className":462},[354,360],[464],{"type":49,"value":160},{"type":43,"tag":115,"props":466,"children":468},{"className":467},[354,360],[469],{"type":49,"value":165},{"type":43,"tag":115,"props":471,"children":473},{"className":472},[354,360],[474],{"type":49,"value":170},{"type":43,"tag":115,"props":476,"children":478},{"className":477},[354,360],[479],{"type":49,"value":175},{"type":43,"tag":115,"props":481,"children":483},{"className":482},[354,360],[484],{"type":49,"value":180},{"type":43,"tag":115,"props":486,"children":488},{"className":487},[354,360],[489],{"type":49,"value":490},"se",{"type":43,"tag":115,"props":492,"children":494},{"className":493},[354,360],[495],{"type":49,"value":215},{"type":43,"tag":115,"props":497,"children":499},{"className":498},[354,360],[500],{"type":49,"value":501},"so",{"type":43,"tag":115,"props":503,"children":505},{"className":504},[354,360],[506],{"type":49,"value":507},"na",{"type":43,"tag":115,"props":509,"children":512},{"className":510,"style":511},[354,360],"margin-right:0.01968em;",[513],{"type":49,"value":279},{"type":43,"tag":115,"props":515,"children":517},{"className":516},[354,360],[518],{"type":49,"value":519},"cyc",{"type":43,"tag":115,"props":521,"children":523},{"className":522,"style":511},[354,360],[524],{"type":49,"value":279},{"type":43,"tag":115,"props":526,"children":528},{"className":527},[354,360],[529],{"type":49,"value":194},{"type":43,"tag":115,"props":531,"children":534},{"className":532},[533],"mopen",[535],{"type":49,"value":307},{"type":43,"tag":115,"props":537,"children":539},{"className":538},[354,360],[540],{"type":49,"value":312},{"type":43,"tag":115,"props":542,"children":544},{"className":543},[354],[545],{"type":49,"value":317},{"type":43,"tag":115,"props":547,"children":549},{"className":548,"style":440},[424],[],{"type":43,"tag":115,"props":551,"children":553},{"className":552},[445],[554],{"type":49,"value":322},{"type":43,"tag":115,"props":556,"children":558},{"className":557,"style":440},[424],[],{"type":43,"tag":115,"props":560,"children":562},{"className":561},[343],[563,568],{"type":43,"tag":115,"props":564,"children":567},{"className":565,"style":566},[348],"height:0.6444em;",[],{"type":43,"tag":115,"props":569,"children":571},{"className":570},[354],[572],{"type":49,"value":327},{"type":49,"value":574},"148K to ",{"type":43,"tag":115,"props":576,"children":578},{"className":577},[118],[579,633],{"type":43,"tag":115,"props":580,"children":582},{"className":581},[123],[583],{"type":43,"tag":126,"props":584,"children":585},{"xmlns":128},[586],{"type":43,"tag":131,"props":587,"children":588},{},[589,628],{"type":43,"tag":135,"props":590,"children":591},{},[592,597,601,605,610,615,619,623],{"type":43,"tag":139,"props":593,"children":594},{},[595],{"type":49,"value":596},"168",{"type":43,"tag":145,"props":598,"children":599},{},[600],{"type":49,"value":149},{"type":43,"tag":205,"props":602,"children":603},{"separator":207},[604],{"type":49,"value":210},{"type":43,"tag":145,"props":606,"children":607},{},[608],{"type":49,"value":609},"w",{"type":43,"tag":145,"props":611,"children":612},{},[613],{"type":49,"value":614},"i",{"type":43,"tag":145,"props":616,"children":617},{},[618],{"type":49,"value":175},{"type":43,"tag":145,"props":620,"children":621},{},[622],{"type":49,"value":180},{"type":43,"tag":139,"props":624,"children":625},{},[626],{"type":49,"value":627},"80",{"type":43,"tag":329,"props":629,"children":630},{"encoding":331},[631],{"type":49,"value":632},"168K, with 80% CI of [",{"type":43,"tag":115,"props":634,"children":636},{"className":635,"ariaHidden":207},[338],[637],{"type":43,"tag":115,"props":638,"children":640},{"className":639},[343],[641,646,651,656,661,665,671,676,681,686],{"type":43,"tag":115,"props":642,"children":645},{"className":643,"style":644},[348],"height:0.8889em;vertical-align:-0.1944em;",[],{"type":43,"tag":115,"props":647,"children":649},{"className":648},[354],[650],{"type":49,"value":596},{"type":43,"tag":115,"props":652,"children":654},{"className":653,"style":361},[354,360],[655],{"type":49,"value":149},{"type":43,"tag":115,"props":657,"children":659},{"className":658},[418],[660],{"type":49,"value":210},{"type":43,"tag":115,"props":662,"children":664},{"className":663,"style":425},[424],[],{"type":43,"tag":115,"props":666,"children":669},{"className":667,"style":668},[354,360],"margin-right:0.02691em;",[670],{"type":49,"value":609},{"type":43,"tag":115,"props":672,"children":674},{"className":673},[354,360],[675],{"type":49,"value":614},{"type":43,"tag":115,"props":677,"children":679},{"className":678},[354,360],[680],{"type":49,"value":175},{"type":43,"tag":115,"props":682,"children":684},{"className":683},[354,360],[685],{"type":49,"value":180},{"type":43,"tag":115,"props":687,"children":689},{"className":688},[354],[690],{"type":49,"value":627},{"type":49,"value":692},"155K, $182K] by month 6. The expanding uncertainty bands reflect that forecast uncertainty increases with the horizon — the model is confident about next month but less so about 6 months out.",{"type":43,"tag":44,"props":694,"children":696},{"id":695},"how-it-works",[697],{"type":49,"value":698},"How It Works",{"type":43,"tag":700,"props":701,"children":702},"ol",{},[703,714,730],{"type":43,"tag":704,"props":705,"children":706},"li",{},[707,712],{"type":43,"tag":56,"props":708,"children":709},{},[710],{"type":49,"value":711},"Upload your data",{"type":49,"value":713}," — provide a CSV or Excel file with a date/period column and a numeric sales or revenue column. Data should be at consistent intervals (daily, weekly, monthly, quarterly).",{"type":43,"tag":704,"props":715,"children":716},{},[717,722,724],{"type":43,"tag":56,"props":718,"children":719},{},[720],{"type":49,"value":721},"Describe the forecast",{"type":49,"value":723}," — e.g. ",{"type":43,"tag":725,"props":726,"children":727},"em",{},[728],{"type":49,"value":729},"\"monthly sales column; forecast next 6 months; ETS with additive seasonality; 80% and 95% prediction intervals; decompose trend and seasonal components; compute MAPE\"",{"type":43,"tag":704,"props":731,"children":732},{},[733,738,740,746,747,753],{"type":43,"tag":56,"props":734,"children":735},{},[736],{"type":49,"value":737},"Get full results",{"type":49,"value":739}," — the AI writes Python code using ",{"type":43,"tag":215,"props":741,"children":743},{"href":742},"https://www.statsmodels.org/",[744],{"type":49,"value":745},"statsmodels",{"type":49,"value":95},{"type":43,"tag":215,"props":748,"children":750},{"href":749},"https://plotly.com/python/",[751],{"type":49,"value":752},"Plotly",{"type":49,"value":754}," to fit the model, generate forecasts with confidence bands, decompose components, and compute accuracy metrics",{"type":43,"tag":44,"props":756,"children":758},{"id":757},"required-data-format",[759],{"type":49,"value":760},"Required Data Format",{"type":43,"tag":762,"props":763,"children":764},"table",{},[765,789],{"type":43,"tag":766,"props":767,"children":768},"thead",{},[769],{"type":43,"tag":770,"props":771,"children":772},"tr",{},[773,779,784],{"type":43,"tag":774,"props":775,"children":776},"th",{},[777],{"type":49,"value":778},"Column",{"type":43,"tag":774,"props":780,"children":781},{},[782],{"type":49,"value":783},"Description",{"type":43,"tag":774,"props":785,"children":786},{},[787],{"type":49,"value":788},"Example",{"type":43,"tag":790,"props":791,"children":792},"tbody",{},[793,836,876],{"type":43,"tag":770,"props":794,"children":795},{},[796,807,812],{"type":43,"tag":797,"props":798,"children":799},"td",{},[800],{"type":43,"tag":801,"props":802,"children":804},"code",{"className":803},[],[805],{"type":49,"value":806},"date",{"type":43,"tag":797,"props":808,"children":809},{},[810],{"type":49,"value":811},"Period identifier",{"type":43,"tag":797,"props":813,"children":814},{},[815,821,823,829,830],{"type":43,"tag":801,"props":816,"children":818},{"className":817},[],[819],{"type":49,"value":820},"2024-01",{"type":49,"value":822},", ",{"type":43,"tag":801,"props":824,"children":826},{"className":825},[],[827],{"type":49,"value":828},"Jan 2024",{"type":49,"value":822},{"type":43,"tag":801,"props":831,"children":833},{"className":832},[],[834],{"type":49,"value":835},"2024-01-01",{"type":43,"tag":770,"props":837,"children":838},{},[839,848,853],{"type":43,"tag":797,"props":840,"children":841},{},[842],{"type":43,"tag":801,"props":843,"children":845},{"className":844},[],[846],{"type":49,"value":847},"sales",{"type":43,"tag":797,"props":849,"children":850},{},[851],{"type":49,"value":852},"Numeric outcome to forecast",{"type":43,"tag":797,"props":854,"children":855},{},[856,862,863,869,870],{"type":43,"tag":801,"props":857,"children":859},{"className":858},[],[860],{"type":49,"value":861},"142500",{"type":49,"value":822},{"type":43,"tag":801,"props":864,"children":866},{"className":865},[],[867],{"type":49,"value":868},"1284",{"type":49,"value":822},{"type":43,"tag":801,"props":871,"children":873},{"className":872},[],[874],{"type":49,"value":875},"98.3",{"type":43,"tag":770,"props":877,"children":878},{},[879,888,893],{"type":43,"tag":797,"props":880,"children":881},{},[882],{"type":43,"tag":801,"props":883,"children":885},{"className":884},[],[886],{"type":49,"value":887},"segment",{"type":43,"tag":797,"props":889,"children":890},{},[891],{"type":49,"value":892},"Optional: grouping variable",{"type":43,"tag":797,"props":894,"children":895},{},[896,902,903],{"type":43,"tag":801,"props":897,"children":899},{"className":898},[],[900],{"type":49,"value":901},"region",{"type":49,"value":822},{"type":43,"tag":801,"props":904,"children":906},{"className":905},[],[907],{"type":49,"value":908},"product_line",{"type":43,"tag":52,"props":910,"children":911},{},[912],{"type":49,"value":913},"Any column names work — describe them in your prompt. Data must be at regular intervals. Gaps (missing periods) should be filled with 0 or interpolated — describe your preference. Minimum recommended series length: 2 full seasonal cycles (e.g., 24 months for monthly data with annual seasonality).",{"type":43,"tag":44,"props":915,"children":917},{"id":916},"interpreting-the-results",[918],{"type":49,"value":919},"Interpreting the Results",{"type":43,"tag":762,"props":921,"children":922},{},[923,939],{"type":43,"tag":766,"props":924,"children":925},{},[926],{"type":43,"tag":770,"props":927,"children":928},{},[929,934],{"type":43,"tag":774,"props":930,"children":931},{},[932],{"type":49,"value":933},"Output",{"type":43,"tag":774,"props":935,"children":936},{},[937],{"type":49,"value":938},"What it means",{"type":43,"tag":790,"props":940,"children":941},{},[942,958,974,990,1006,1022,1038,1054,1070],{"type":43,"tag":770,"props":943,"children":944},{},[945,953],{"type":43,"tag":797,"props":946,"children":947},{},[948],{"type":43,"tag":56,"props":949,"children":950},{},[951],{"type":49,"value":952},"Forecast line",{"type":43,"tag":797,"props":954,"children":955},{},[956],{"type":49,"value":957},"Point estimate of future values — the model's best prediction",{"type":43,"tag":770,"props":959,"children":960},{},[961,969],{"type":43,"tag":797,"props":962,"children":963},{},[964],{"type":43,"tag":56,"props":965,"children":966},{},[967],{"type":49,"value":968},"80% prediction interval",{"type":43,"tag":797,"props":970,"children":971},{},[972],{"type":49,"value":973},"Range that should contain the true future value 80% of the time",{"type":43,"tag":770,"props":975,"children":976},{},[977,985],{"type":43,"tag":797,"props":978,"children":979},{},[980],{"type":43,"tag":56,"props":981,"children":982},{},[983],{"type":49,"value":984},"95% prediction interval",{"type":43,"tag":797,"props":986,"children":987},{},[988],{"type":49,"value":989},"Wider range for 95% coverage — use when the cost of being wrong is high",{"type":43,"tag":770,"props":991,"children":992},{},[993,1001],{"type":43,"tag":797,"props":994,"children":995},{},[996],{"type":43,"tag":56,"props":997,"children":998},{},[999],{"type":49,"value":1000},"MAE",{"type":43,"tag":797,"props":1002,"children":1003},{},[1004],{"type":49,"value":1005},"Mean Absolute Error — average forecast error in the original units (e.g., dollars)",{"type":43,"tag":770,"props":1007,"children":1008},{},[1009,1017],{"type":43,"tag":797,"props":1010,"children":1011},{},[1012],{"type":43,"tag":56,"props":1013,"children":1014},{},[1015],{"type":49,"value":1016},"MAPE",{"type":43,"tag":797,"props":1018,"children":1019},{},[1020],{"type":49,"value":1021},"Mean Absolute Percentage Error — average % error; \u003C 10% is good for monthly sales",{"type":43,"tag":770,"props":1023,"children":1024},{},[1025,1033],{"type":43,"tag":797,"props":1026,"children":1027},{},[1028],{"type":43,"tag":56,"props":1029,"children":1030},{},[1031],{"type":49,"value":1032},"RMSE",{"type":43,"tag":797,"props":1034,"children":1035},{},[1036],{"type":49,"value":1037},"Root Mean Squared Error — penalizes large errors more than MAE",{"type":43,"tag":770,"props":1039,"children":1040},{},[1041,1049],{"type":43,"tag":797,"props":1042,"children":1043},{},[1044],{"type":43,"tag":56,"props":1045,"children":1046},{},[1047],{"type":49,"value":1048},"Trend component",{"type":43,"tag":797,"props":1050,"children":1051},{},[1052],{"type":49,"value":1053},"Long-run direction after removing seasonality and noise",{"type":43,"tag":770,"props":1055,"children":1056},{},[1057,1065],{"type":43,"tag":797,"props":1058,"children":1059},{},[1060],{"type":43,"tag":56,"props":1061,"children":1062},{},[1063],{"type":49,"value":1064},"Seasonal component",{"type":43,"tag":797,"props":1066,"children":1067},{},[1068],{"type":49,"value":1069},"Recurring pattern by period (month, quarter) — shows which periods are high/low",{"type":43,"tag":770,"props":1071,"children":1072},{},[1073,1081],{"type":43,"tag":797,"props":1074,"children":1075},{},[1076],{"type":43,"tag":56,"props":1077,"children":1078},{},[1079],{"type":49,"value":1080},"Residuals",{"type":43,"tag":797,"props":1082,"children":1083},{},[1084],{"type":49,"value":1085},"Unexplained variation — should be random (no autocorrelation) for a well-fit model",{"type":43,"tag":44,"props":1087,"children":1089},{"id":1088},"example-prompts",[1090],{"type":49,"value":1091},"Example Prompts",{"type":43,"tag":762,"props":1093,"children":1094},{},[1095,1111],{"type":43,"tag":766,"props":1096,"children":1097},{},[1098],{"type":43,"tag":770,"props":1099,"children":1100},{},[1101,1106],{"type":43,"tag":774,"props":1102,"children":1103},{},[1104],{"type":49,"value":1105},"Scenario",{"type":43,"tag":774,"props":1107,"children":1108},{},[1109],{"type":49,"value":1110},"What to type",{"type":43,"tag":790,"props":1112,"children":1113},{},[1114,1131,1148,1165,1182,1199,1216,1233],{"type":43,"tag":770,"props":1115,"children":1116},{},[1117,1122],{"type":43,"tag":797,"props":1118,"children":1119},{},[1120],{"type":49,"value":1121},"Basic ETS forecast",{"type":43,"tag":797,"props":1123,"children":1124},{},[1125],{"type":43,"tag":801,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":49,"value":1130},"monthly sales; forecast 6 months; ETS model; 80% and 95% CI; plot with confidence bands",{"type":43,"tag":770,"props":1132,"children":1133},{},[1134,1139],{"type":43,"tag":797,"props":1135,"children":1136},{},[1137],{"type":49,"value":1138},"Model comparison",{"type":43,"tag":797,"props":1140,"children":1141},{},[1142],{"type":43,"tag":801,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":49,"value":1147},"compare ETS, ARIMA, and linear trend; select best by AIC; forecast 12 months; accuracy table",{"type":43,"tag":770,"props":1149,"children":1150},{},[1151,1156],{"type":43,"tag":797,"props":1152,"children":1153},{},[1154],{"type":49,"value":1155},"Seasonal decomposition",{"type":43,"tag":797,"props":1157,"children":1158},{},[1159],{"type":43,"tag":801,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":49,"value":1164},"decompose into trend, seasonal, and residual components; additive model; plot each component",{"type":43,"tag":770,"props":1166,"children":1167},{},[1168,1173],{"type":43,"tag":797,"props":1169,"children":1170},{},[1171],{"type":49,"value":1172},"Accuracy on holdout",{"type":43,"tag":797,"props":1174,"children":1175},{},[1176],{"type":43,"tag":801,"props":1177,"children":1179},{"className":1178},[],[1180],{"type":49,"value":1181},"use last 6 months as test set; fit model on training data; compute MAE and MAPE on holdout",{"type":43,"tag":770,"props":1183,"children":1184},{},[1185,1190],{"type":43,"tag":797,"props":1186,"children":1187},{},[1188],{"type":49,"value":1189},"Multiple series",{"type":43,"tag":797,"props":1191,"children":1192},{},[1193],{"type":43,"tag":801,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":49,"value":1198},"forecast sales for each of 3 product lines separately; plot all forecasts on one chart",{"type":43,"tag":770,"props":1200,"children":1201},{},[1202,1207],{"type":43,"tag":797,"props":1203,"children":1204},{},[1205],{"type":49,"value":1206},"Growth rate forecast",{"type":43,"tag":797,"props":1208,"children":1209},{},[1210],{"type":43,"tag":801,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":49,"value":1215},"convert monthly sales to YoY growth rate; forecast growth rate for next 4 quarters",{"type":43,"tag":770,"props":1217,"children":1218},{},[1219,1224],{"type":43,"tag":797,"props":1220,"children":1221},{},[1222],{"type":49,"value":1223},"Trend change detection",{"type":43,"tag":797,"props":1225,"children":1226},{},[1227],{"type":43,"tag":801,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":49,"value":1232},"detect if trend has changed in the last 12 months vs prior period; test for structural break",{"type":43,"tag":770,"props":1234,"children":1235},{},[1236,1241],{"type":43,"tag":797,"props":1237,"children":1238},{},[1239],{"type":49,"value":1240},"With events",{"type":43,"tag":797,"props":1242,"children":1243},{},[1244],{"type":43,"tag":801,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":49,"value":1249},"add holiday indicators for November and December; ARIMAX with dummy variables for seasonal spikes",{"type":43,"tag":44,"props":1251,"children":1253},{"id":1252},"assumptions-to-check",[1254],{"type":49,"value":1255},"Assumptions to Check",{"type":43,"tag":1257,"props":1258,"children":1259},"ul",{},[1260,1270,1280,1290,1300],{"type":43,"tag":704,"props":1261,"children":1262},{},[1263,1268],{"type":43,"tag":56,"props":1264,"children":1265},{},[1266],{"type":49,"value":1267},"Stationarity after differencing",{"type":49,"value":1269}," — ARIMA requires the series to become stationary after differencing; if the ACF plot shows slow decay, first-order differencing is needed; test with the Augmented Dickey-Fuller test",{"type":43,"tag":704,"props":1271,"children":1272},{},[1273,1278],{"type":43,"tag":56,"props":1274,"children":1275},{},[1276],{"type":49,"value":1277},"Consistent seasonal period",{"type":49,"value":1279}," — ETS and ARIMA seasonal models assume a fixed, known seasonal period (m=12 for monthly, m=4 for quarterly); if your business has irregular promotions or changing seasonality, a more flexible model (Prophet or dynamic regression) may be needed",{"type":43,"tag":704,"props":1281,"children":1282},{},[1283,1288],{"type":43,"tag":56,"props":1284,"children":1285},{},[1286],{"type":49,"value":1287},"No structural breaks",{"type":49,"value":1289}," — the models assume the relationship between time and sales is stable; if there was a major business change (new product launch, market entry, COVID-19) mid-series, the model trained on pre-break data will produce biased forecasts; consider using only post-break data or adding a structural break indicator",{"type":43,"tag":704,"props":1291,"children":1292},{},[1293,1298],{"type":43,"tag":56,"props":1294,"children":1295},{},[1296],{"type":49,"value":1297},"Minimum data length",{"type":49,"value":1299}," — seasonal models require at least 2 full seasonal cycles to identify the seasonal pattern reliably; with fewer observations, the seasonal estimates are unstable and the model may overfit",{"type":43,"tag":704,"props":1301,"children":1302},{},[1303,1308],{"type":43,"tag":56,"props":1304,"children":1305},{},[1306],{"type":49,"value":1307},"No external drivers",{"type":49,"value":1309}," — pure time-series models extrapolate past patterns without knowing about planned promotions, price changes, or macroeconomic shifts; for strategic forecasting, consider augmenting with explanatory variables using ARIMAX or multiple regression with time as a predictor",{"type":43,"tag":44,"props":1311,"children":1313},{"id":1312},"related-tools",[1314],{"type":49,"value":1315},"Related Tools",{"type":43,"tag":52,"props":1317,"children":1318},{},[1319,1321,1327,1329,1335,1337,1343,1345,1351],{"type":49,"value":1320},"Use the ",{"type":43,"tag":215,"props":1322,"children":1324},{"href":1323},"/tools/time-series-decomposition",[1325],{"type":49,"value":1326},"Time Series Decomposition",{"type":49,"value":1328}," tool to explore the trend, seasonal, and residual components before choosing a forecast model — decomposition confirms whether additive or multiplicative seasonality is more appropriate. Use the ",{"type":43,"tag":215,"props":1330,"children":1332},{"href":1331},"/tools/exponential-smoothing",[1333],{"type":49,"value":1334},"Exponential Smoothing",{"type":49,"value":1336}," tool for a focused application of Holt-Winters smoothing with parameter optimization. Use the ",{"type":43,"tag":215,"props":1338,"children":1340},{"href":1339},"/tools/trendline-calculator",[1341],{"type":49,"value":1342},"Trendline Calculator",{"type":49,"value":1344}," for simpler trend extrapolation without seasonality. Use the ",{"type":43,"tag":215,"props":1346,"children":1348},{"href":1347},"/tools/ab-test-calculator",[1349],{"type":49,"value":1350},"A/B Test Calculator",{"type":49,"value":1352}," to test whether a sales intervention (new pricing, campaign) produced a statistically significant shift above the forecast baseline.",{"type":43,"tag":44,"props":1354,"children":1356},{"id":1355},"frequently-asked-questions",[1357],{"type":49,"value":1358},"Frequently Asked Questions",{"type":43,"tag":52,"props":1360,"children":1361},{},[1362,1367,1369,1374,1376,1380],{"type":43,"tag":56,"props":1363,"children":1364},{},[1365],{"type":49,"value":1366},"Should I use ETS or ARIMA?",{"type":49,"value":1368},"\nFor most monthly sales forecasting, ",{"type":43,"tag":56,"props":1370,"children":1371},{},[1372],{"type":49,"value":1373},"ETS is the better default",{"type":49,"value":1375},": it is more interpretable (clear level/trend/seasonality parameters), robust with shorter series, and automatically handles many data patterns. ",{"type":43,"tag":56,"props":1377,"children":1378},{},[1379],{"type":49,"value":100},{"type":49,"value":1381}," is preferred when: the series has strong autocorrelation not captured by exponential smoothing; you need to include external regressors (ARIMAX); or the series shows no clear seasonality. In practice, the recommended workflow is to fit both and compare by AIC and holdout MAPE — the difference is often small. For non-statistical users, ETS predictions are easier to explain to stakeholders.",{"type":43,"tag":52,"props":1383,"children":1384},{},[1385,1390,1392,1397],{"type":43,"tag":56,"props":1386,"children":1387},{},[1388],{"type":49,"value":1389},"How far ahead can I reliably forecast?",{"type":49,"value":1391},"\nAs a rule of thumb, reliable forecasts extend to about ",{"type":43,"tag":56,"props":1393,"children":1394},{},[1395],{"type":49,"value":1396},"one seasonal cycle",{"type":49,"value":1398}," ahead (e.g., 12 months for monthly data with annual seasonality). Beyond one cycle, uncertainty compounds rapidly — the 95% prediction interval becomes very wide. For operational planning (inventory, staffing), 1–3 month forecasts are typically actionable. For annual budgeting, a 12-month forecast from a well-fitted model provides useful directional guidance even with wide intervals. Always communicate the forecast alongside the uncertainty bands — a point forecast without confidence intervals gives a false sense of precision.",{"type":43,"tag":52,"props":1400,"children":1401},{},[1402,1407,1409,1414,1416,1421,1423,1428,1430,1435],{"type":43,"tag":56,"props":1403,"children":1404},{},[1405],{"type":49,"value":1406},"My MAPE is 40% — is my model bad?",{"type":49,"value":1408},"\nHigh MAPE can result from several issues: (1) ",{"type":43,"tag":56,"props":1410,"children":1411},{},[1412],{"type":49,"value":1413},"low-volume periods",{"type":49,"value":1415}," — MAPE is unreliable when actual values are near zero (percentage error explodes); use MAE or RMSE instead for low-volume series; (2) ",{"type":43,"tag":56,"props":1417,"children":1418},{},[1419],{"type":49,"value":1420},"insufficient data",{"type":49,"value":1422}," — with fewer than 24 months, seasonal parameters are poorly estimated; (3) ",{"type":43,"tag":56,"props":1424,"children":1425},{},[1426],{"type":49,"value":1427},"structural breaks",{"type":49,"value":1429}," — if business conditions changed mid-series, a single model fitted over the full history will be inaccurate; train only on the most recent stable period; (4) ",{"type":43,"tag":56,"props":1431,"children":1432},{},[1433],{"type":49,"value":1434},"missing predictors",{"type":49,"value":1436}," — if sales are driven by promotions or campaigns not captured in the time series, add them as regressors. For most B2B monthly series, MAPE below 15% is acceptable; below 10% is good.",{"title":7,"searchDepth":1438,"depth":1438,"links":1439},2,[1440,1441,1442,1443,1444,1445,1446,1447],{"id":46,"depth":1438,"text":50},{"id":695,"depth":1438,"text":698},{"id":757,"depth":1438,"text":760},{"id":916,"depth":1438,"text":919},{"id":1088,"depth":1438,"text":1091},{"id":1252,"depth":1438,"text":1255},{"id":1312,"depth":1438,"text":1315},{"id":1355,"depth":1438,"text":1358},"markdown","content:tools:086.sales-forecasting.md","content","tools/086.sales-forecasting.md","tools/086.sales-forecasting","md",{"loc":4},1775502475425]