26 minute read

Suatu waktu, pada tanggal 20 saya sedang lewat area kerja tim sales dan melihat salah seorang sales manager sedang menatap serius laptopnya. Padahal waktu itu jam kerja belumlah dimulai. Karena iseng, saya coba tanyakan ia sedang apa. Beliau berkata masih ada 10 hari lagi sampai akhir bulan:

“Kira-kira kita bakal hit target bulan ini nggak? Angka akhir bulan kita bakal di mana?”

Bagi sebagian orang, pertanyaan ini bisa dijawab dengan insting: “Kayaknya sih bisa” atau “Agak berat nih”. Tapi apakah ada cara saintifik untuk menjawabnya? Menggunakan data yang sudah tersedia, kemudian melakukan estimasi angka sales di akhir bulan.

Inilah yang disebut Nowcasting.

Apa Itu Nowcasting ?

Kata nowcasting adalah gabungan dari “now” (sekarang) dan “forecasting” (meramalkan). Kalau forecasting memprediksi masa depan yang jauh (bulan depan, tahun depan), nowcasting menjawab pertanyaan yang lebih dekat. Sehingga definisi sederhananya adalah mengestimasi nilai suatu indikator pada periode SEKARANG (yang belum selesai), menggunakan data parsial yang sudah tersedia hari ini.

Teknik ini awalnya populer di dunia makroekonomi. Bank sentral menggunakannya untuk mengestimasi GDP kuartal ini sebelum data resmi dirilis yang biasanya butuh berbulan-bulan setelah kuartal berakhir. Mereka tidak mau menunggu; mereka butuh estimasi sekarang untuk membuat kebijakan.

Konsep ini yang sangat relevan di dunia sales dan marketing, contohnya:

• Melakukan estimasi total sales bulan ini berdasarkan data 20 hari pertama. • Melakukan estimasi revenue Q3 di pertengahan Juli. • Membuat prediksi apakah campaign iklan akan hit target sebelum campaign berakhir. • Melakukan estimasi stok yang dibutuhkan berdasarkan tren order masuk hari ini.

Perbedaan Nowcasting vs Forecasting

Aspek Nowcasting Forecasting
Pertanyaan “Bulan ini kita akan jual berapa?” “Bulan depan kita akan jual berapa?
Time range Saat ini (periode berjalan) Masa depan (minggu/bulan/tahun depan)
Data yang digunakan Data historikal + data parsial Data historikal lengkap
Output Estimasi nilai akhirperiode berjalan Prediksi nilai masa depan
Metode yang digunakan ARIMA, prophet, dll Regresi, dll

Sekarang saya akan coba buat satu study case tentang estimasi sales produk minuman di Jabodetabek.

Studi Kasus: Estimasi Sales Minuman di Jabodetabek

Misalkan kita adalah data analyst di sebuah perusahaan FMCG yang menjual minuman buah kemasan. Setiap bulan ada target penjualan (dalam satuan kuantitas yakni karton). Data penjualan harian tersedia di sistem IT kantor dan bersifat update real time harian. Hari ini tanggal 20 dan tim managerial sales bertanya: berapa estimasi total sales sampai akhir bulan?

- Produk: Minuman buah kemasan 500ml 
- Area: Jabodetabek
- Target bulan ini: 50.000 karton 
- Data tersedia: Penjualan harian hari ke-1 sampai hari ke-20
- Yang ingin diestimasi: Total penjualan hari ke-1 sampai hari ke-31

Kita memiliki 547 baris data harian (mulai 1 Januari 2024 hingga 30 Juni 2025) dan ini adalah sampel data yang dimiliki:

tanggal penjualan tahun bulan hari hari_minggu bulan_label
2024-01-01 1871 2024 1 1 Mon Jan 2024
2024-01-02 2003 2024 1 2 Tue Jan 2024
2024-01-03 1819 2024 1 3 Wed Jan 2024
2024-01-04 1952 2024 1 4 Thu Jan 2024
2024-01-05 1967 2024 1 5 Fri Jan 2024
2025-06-26 2249 2025 6 26 Thu Jun 2025
2025-06-27 2044 2025 6 27 Fri Jun 2025
2025-06-28 3197 2025 6 28 Sat Jun 2025
2025-06-29 3258 2025 6 29 Sun Jun 2025
2025-06-30 2259 2025 6 30 Mon Jun 2025

Sedangkan berikut ini adalah rekapan sales bulanan dari data sales harian:

# A tibble: 18 × 3
   label    total_penjualan rata_harian
   <chr>              <dbl>       <dbl>
 1 Jan 2024           57289        1848
 2 Feb 2024           53868        1858
 3 Mar 2024           60884        1964
 4 Apr 2024           57799        1927
 5 May 2024           59654        1924
 6 Jun 2024           59870        1996
 7 Jul 2024           62292        2009
 8 Aug 2024           64379        2077
 9 Sep 2024           61284        2043
10 Oct 2024           63149        2037
11 Nov 2024           62300        2077
12 Dec 2024           66288        2138
13 Jan 2025           66598        2148
14 Feb 2025           58706        2097
15 Mar 2025           68292        2203
16 Apr 2025           65420        2181
17 May 2025           68090        2196
18 Jun 2025           68734        2291

Sedangkan berikut ini adalah data sales 20 hari pertama di bulan Juli 2025:

tanggal penjualan
2025-07-01 2195
2025-07-02 2430
2025-07-03 2209
2025-07-04 2182
2025-07-05 3176
2025-07-06 2721
2025-07-07 1941
2025-07-08 1947
2025-07-09 1902
2025-07-10 2201
2025-07-11 1725
2025-07-12 2662
2025-07-13 2550
2025-07-14 1628
2025-07-15 2030
2025-07-16 2214
2025-07-17 1954
2025-07-18 2083
2025-07-19 2605
2025-07-20 2600
2025-07-21 1787
2025-07-22 2131
2025-07-23 2115
2025-07-24 1843
2025-07-25 2501
2025-07-26 3063
2025-07-27 3006
2025-07-28 2318
2025-07-29 2131
2025-07-30 2279
2025-07-31 2284
Penjualan Juli (hari 1-20): 44955 karton

Sisa hari yang belum ada datanya: 11 hari

Persentase bulan yang sudah terlewati: 64.5 %

Catatan: Saya sebenarnya sudah membuat data lengkap 1 - 31 Juli 2025 yang kemudian nanti akan digunakan sebagai benchmark seberapa bagus model nowcasting yang dibuat.

Aktual penjualan Juli 2025 (full bulan): 70413 karton

Pendekatan Nowcasting yang Akan Dicoba

Kita akan membangun tiga model nowcasting dari yang paling sederhana sampai yang lebih canggih, lalu membandingkan hasilnya:

  1. Model 1Simple Scaling: Extrapolasi linier dari data parsial.
  2. Model 2Regression-based: Pakai pola historis untuk koreksi.
  3. Model 3MIDAS-lite: Manfaatkan leading indicator harian.

Model 1 — Simple Scaling (Paling Sederhana)

Model paling sederhana. Konsepnya sama seperti melakukan ekstrapolasi harian: asumsikan sisa hari akan berjalan seperti rata-rata hari yang sudah ada. Kalau 20 hari pertama rata-ratanya X karton/hari, maka 11 hari sisanya juga X karton/hari.

Estimasi Total = Penjualan Parsial + (Rata-rata Harian Parsial × Sisa Hari)

=== MODEL 1: SIMPLE SCALING ===

Rata-rata harian (H1-H20)  : 2248 karton/hari

Estimasi total Juli 2025   : 69680 karton

Aktual total Juli 2025     : 70413 karton

Error                      : -1.04 %

Model ini cepat, mudah, dan sangat sederhana tapi ada kelemahan. Model ini tidak mempertimbangkan bahwa hari-hari tertentu (misalnya akhir bulan atau akhir pekan) ada pola berbeda dari rata-rata.

Model 2 — Regression-Based Nowcasting

Model ini lebih “cerdas” dibanding sebelumnya. Idenya adalah kita punya data historis 18 bulan. Dari setiap bulan itu, kita tahu berapa penjualan di hari ke-1 sampai ke-20 (parsial), dan berapa total penjualan akhir bulan (penuh). Kemudia kita akan membuat model regresi:

total_penuh ~ parsial_20_hari

Lalu gunakan model itu untuk memprediksi Juli 2025 dari data parsialnya.

Kalau kita tahu bulan-bulan sebelumnya bahwa ‘penjualan 20 hari pertama biasanya 64% dari total bulan’, maka kita bisa balik hitung:

total estimasi = parsial / 0.64

Regresi adalah cara ilmiah untuk menemukan angka 0.64 itu — plus memperhitungkan faktor lain seperti momen gajian.

Oke, pertama-tama saya akan hitung berapa rasio parsial dari semua data yang ada:

Rata-rata rasio parsial/total: 0.6462 

Range rasio: 0.6214 - 0.7171 

Berikut adalah visualisasi dari rasio 20 hari vs total hari dari semua data bulanan:

Perlu saya ingatkan kembali bahwa kita punya data dua tahun pada bulan Januari - Juni, maka dari itu bentuk grafik pada bulan-bulan tersebut berbeda dengan bulan lainnya.

Oke, sekarang saatnya kita membuat model regresinya. Akan ada dua model regresi sebagai berikut:

  1. Model sederhana berisi total_penuh ~ parsial_20.
  2. Model lengkap berisi total_penuh ~ parsial_20 + factor(bulan) + hariraya.
    • Kita tambahkan variabel bulan biasa dan bulan hari raya (lebaran dan natal).
R-squared model simple  : 0.7706 

R-squared model lengkap : 0.9775 


Call:
lm(formula = total_penuh ~ parsial_20 + factor(bulan) + hariraya, 
    data = df_historis_regresi)

Residuals:
    Min      1Q  Median      3Q     Max 
-1323.5  -114.5     0.0   114.5  1277.9 

Coefficients: (1 not defined because of singularities)
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      6.861e+03  4.691e+02  14.628  < 2e-16 ***
parsial_20       1.395e+00  1.171e-02 119.129  < 2e-16 ***
factor(bulan)2  -5.567e+03  1.140e+02 -48.843  < 2e-16 ***
factor(bulan)3   1.020e+03  1.124e+02   9.074  < 2e-16 ***
factor(bulan)4  -1.494e+03  1.129e+02 -13.235  < 2e-16 ***
factor(bulan)5   4.182e+02  1.123e+02   3.725 0.000216 ***
factor(bulan)6  -3.252e+02  1.147e+02  -2.835 0.004752 ** 
factor(bulan)7   5.243e+02  1.366e+02   3.838 0.000139 ***
factor(bulan)8  -3.089e+02  1.385e+02  -2.230 0.026182 *  
factor(bulan)9  -1.893e+02  1.382e+02  -1.370 0.171267    
factor(bulan)10  1.758e+02  1.369e+02   1.284 0.199559    
factor(bulan)11 -2.061e+03  1.396e+02 -14.766  < 2e-16 ***
factor(bulan)12  1.106e+03  1.393e+02   7.941 1.19e-14 ***
hariraya                NA         NA      NA       NA    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 621.1 on 534 degrees of freedom
Multiple R-squared:  0.9775,    Adjusted R-squared:  0.977 
F-statistic:  1937 on 12 and 534 DF,  p-value: < 2.2e-16

Dari nilai R^2, kita dapatkan kedua model baik dan sangat baik. Berdasarkan itu, saya akan buat prediksi nowcasting dari model lengkap.

=== MODEL 2: REGRESSION-BASED ===

Estimasi total Juli 2025   : 70108 karton

Interval bawah (95%)       : 68862 karton

Interval atas (95%)        : 71354 karton

Aktual total Juli 2025     : 70413 karton

Error                      : -0.43 %

Model 3 — MIDAS-lite: Menggunakan Leading Indicator

Model ketiga ini sedikit lebih canggih. Kita manfaatkan leading indicator, yakni sinyal-sinyal yang muncul lebih awal dan berkorelasi dengan penjualan untuk meningkatkan akurasi estimasi.

MIDAS (Mixed Data Sampling) adalah teknik formal untuk menggabungkan data dengan frekuensi berbeda (misalnya: data harian dan data bulanan). Di sini kita buat versi sederhananya. Leading indicator yang kita gunakan dalam simulasi ini:

  1. Search index: Proxy dari Google Trends untuk kata kunci terkait produk kita.
  2. Cuaca: Suhu rata-rata harian (minuman lebih laku saat panas).
  3. Momentum awal bulan: Apakah 5 hari pertama lebih tinggi dari rata-rata historis?

Indikator pertama dan kedua akan saya simulasikan datanya, sedangkan indikator ketiga akan dihitung dari data yang ada.

Korelasi indikator vs total penjualan:

  total_penuh    parsial_20     suhu_rata  search_index momentum_awal 
        1.000         0.878        -0.194        -0.040         0.750 

Sekarang kita buat model MIDAS-nya menjadi: total_penuh ~ parsial_20 + suhu_rata + search_index + momentum_awal + factor(bulan) + hariraya.

Berikut ini hasilnya:

R-squared model MIDAS-lite: 0.9958 


=== MODEL 3: MIDAS-LITE ===

Estimasi total Juli 2025   : 67099 karton

Interval bawah (95%)       : 66506 karton

Interval atas (95%)        : 67692 karton

Aktual total Juli 2025     : 70413 karton

Error                      : -4.71 %

R^2 yang dihasilkan sangat bagus.

Perbandingan Tiga Model Nowcasting

Model Estimasi CI_Bawah CI_Atas Error_pct Hit_target
Model 1: Simple Scaling 69680 NA NA -1.04 YA ✓
Model 2: Regression 70108 68862 71354 -0.43 YA ✓
Model 3: MIDAS-lite 67099 66506 67692 -4.71 YA ✓
Aktual (Ground Truth) 70413 NA NA    

Dari ketiga model yang sudah dibuat, kita bisa dapatkan:

  1. Ketiga model memberikan estimasi yang berada di bawah nilai aktual (under estimate).
    • Menurut keyakinan saya, under estimasi justru memberikan rasa aman pada tim sales pada laporannya dibandingkan nilai yang over estimate.
  2. Ternyata model kedua (regresi) memberikan estimasi dengan persentase error terkecil.

Model Keempat: Nowcasting Rolling

Ada model nowcasting keempat yang bisa kita buat, yakni model yang bisa melakukan update estimasi setiap hari sejak awal bulan. Hasilnya adalah kurva yang semakin lama semakin akurat seiring lebih banyak data tersedia.

Ada dua model yang akan kita coba, yakni:

  1. Simple scaling, sama seperti model pertama tapi di-update rasio parsial secara harian.
  2. Regresi, sama seperti model kedua tapi di-update rasio parsial secara harian.

Berikut ini hasilnya:

Model regresi memberikan nowcasting total penjualan akhir bulan yang selalu under estimate dibandingkan dengan model simple scaling yang pada awal-awal nowcasting selalu over estimate. Namun kedua model tersebut memberikan konvergensi yang ke satu nilai yang mirip-mirip dan mendekati nilai aktual bulanannya.

Langkah Strategic dari Hasil Nowcasting

Bagi tim managerial sales, angka estimasi hasil nowcasting bisa dijadikan langkah strategic bagi mereka untuk memastikan sales berjalan sesuai dengan target yang sudah ditetapkan. Bagaimana caranya? Perhatikan tabel berikut ini:

Kondisi estimasi SInyal Hal yang perlu dilakukan
Estimasi >> target Over-track Pastikan stok cukup, jangan sampai out-of-stock di akhir bulan. Siapkan reorder.
Estimasi sedikit di atas target On-track Maintain momentum. Monitor harian, tidak perlu intervensi besar.
Estimasi sedikit di bawah target At risk Aktivasi trade promo di channel yang under-perform. Push ke distributor.
Estimasi << target Off track Eskalasi ke manajemen. Pertimbangkan flash sale, subsidi harga sementara, atau revisi target.

Pertanyaan berikutnya adalah:

Kapan kita harus mempercayai hasil estimasi dari nowcasting?

Dari grafik rolling nowcasting, kita bisa lihat bahwa estimasi biasanya cukup stabil setelah hari ke-10 (sekitar 30% bulan terlewati). Sebelum itu, masih terlalu banyak noise. Idealnya, mulai jadikan nowcasting sebagai acuan keputusan mulai hari ke-10, dan jadikan dasar eskalasi mulai hari ke-15.

Limitasi

Tentu sebagaimana yang sering saya katakan, setiap model perhitungan (termasuk prediksi dan nowcasting) pasti memiliki limitasi yang perlu kita perhatikan saat menyimpulkan hasil dan mengambil keputusan. Berikut ini adalah beberapa limitasi dari nowcasting:

  1. Nowcasting bukan sulap.
    • Jika ada kejadian tak terduga di sisa bulan, seperti: bencana alam, kompetitor tiba-tiba diskon besar, atau produk kita viral di TikTok maka model tidak akan bisa memprediksinya dari data parsial.
  2. Kualitas model bergantung data historis.
    • Model regresi kita butuh setidaknya 12 bulan historis agar pola musiman tertangkap dengan baik.
    • Untuk produk baru yang belum punya riwayat panjang, Model menggunakan Simple Scaling mungkin lebih aman.
  3. Perhatikan perubahan pola. Kalau ada perubahan besar dalam bisnis (ekspansi ke kota baru, ganti distributor, launching SKU baru), pola historis mungkin tidak lagi relevan. Model perlu di-update.
  4. Bukan pengganti judgment.
    • Nowcasting adalah alat bantu, bukan pengganti pengetahuan lapangan.
    • Sales manager yang tahu ada event besar di akhir bulan tetap harus memasukkan informasi itu secara manual ke dalam estimasi.

if you find this article helpful, support this blog by clicking the ads.