1 Executive Summary

This report presents a Monte Carlo simulation of Nepal’s proposed 5% VAT on household electricity consumption above 50 units per month. The simulation estimates the likely household burden, expected annual revenue, and distributional fairness of the tax.

The analysis assumes that household electricity consumption is right-skewed, meaning many households consume low electricity, while fewer households consume very high electricity. This is more realistic than a normal distribution because electricity consumption is affected by household income, appliance ownership, electric cooking, heating/cooling needs, water pumps, and electric vehicle charging.

2 Key Policy Inputs

# Policy and population assumptions
N <- 200000
set.seed(2026)

total_households_m <- 5.634
below_50_m <- 3.034
affected_m <- 2.60

target_annual_revenue <- 5.5e9
target_monthly_revenue <- target_annual_revenue / 12
vat_rate <- 0.05

inputs <- data.frame(
  Indicator = c(
    "Total domestic electricity consumers",
    "Consumers below 50 units/month",
    "Consumers affected by VAT",
    "VAT rate",
    "Target annual household VAT revenue"
  ),
  Value = c(
    "5.634 million",
    "3.034 million",
    "2.60 million",
    "5%",
    "Rs 5.5 billion"
  )
)
knitr::kable(inputs, caption = "Main policy inputs used in the simulation")
Main policy inputs used in the simulation
Indicator Value
Total domestic electricity consumers 5.634 million
Consumers below 50 units/month 3.034 million
Consumers affected by VAT 2.60 million
VAT rate 5%
Target annual household VAT revenue Rs 5.5 billion

3 Statistical Framework

Electricity consumption is simulated using a mixture distribution. Low-use households are generated using a bounded beta distribution, while high-use households are generated using a log-normal distribution to capture the long right tail.

The VAT is calculated only on consumption above 50 units:

\[ VAT_i = \max(U_i - 50, 0) \times \tau \]

where \(U_i\) is monthly electricity consumption and \(\tau\) is the calibrated effective VAT burden per taxable unit.

4 Monte Carlo Simulation

library(ggplot2)
library(dplyr)
library(scales)
library(gridExtra)

# Household group probabilities based on policy discussion
groups <- sample(
  c("Below 50 units", "51-150 units", "151-250 units", "Above 250 units"),
  size = N,
  replace = TRUE,
  prob = c(3.034, 1.20, 0.20, 1.20)
)

monthly_units <- numeric(N)

monthly_units[groups == "Below 50 units"] <-
  rbeta(sum(groups == "Below 50 units"), 2.2, 1.8) * 50

monthly_units[groups == "51-150 units"] <-
  51 + rbeta(sum(groups == "51-150 units"), 2.0, 2.4) * 99

monthly_units[groups == "151-250 units"] <-
  151 + rbeta(sum(groups == "151-250 units"), 2.0, 2.0) * 99

monthly_units[groups == "Above 250 units"] <-
  pmin(rlnorm(sum(groups == "Above 250 units"), meanlog = log(360), sdlog = 0.55), 1200)

taxable_units <- pmax(monthly_units - 50, 0)

effective_tax_per_unit <- target_monthly_revenue /
  (mean(taxable_units) * total_households_m * 1e6)

monthly_vat <- taxable_units * effective_tax_per_unit

sim_data <- data.frame(
  group = groups,
  monthly_units = monthly_units,
  taxable_units = taxable_units,
  monthly_vat = monthly_vat
)

affected_data <- sim_data %>% filter(monthly_units > 50)

5 Main Results

gini_function <- function(x) {
  x <- sort(x)
  n <- length(x)
  G <- (2 * sum(seq_len(n) * x)) / (n * sum(x)) - (n + 1) / n
  return(G)
}

gini_vat <- gini_function(sim_data$monthly_vat + 0.000001)

summary_table <- data.frame(
  Metric = c(
    "Total simulated households",
    "Affected households",
    "Mean monthly electricity use",
    "Median monthly electricity use",
    "Mean monthly VAT among affected households",
    "Median monthly VAT among affected households",
    "Estimated annual government revenue",
    "Gini coefficient of VAT burden"
  ),
  Value = c(
    comma(N),
    paste0(round(mean(sim_data$monthly_units > 50) * 100, 1), "%"),
    paste0(round(mean(sim_data$monthly_units), 1), " units"),
    paste0(round(median(sim_data$monthly_units), 1), " units"),
    paste0("Rs ", round(mean(affected_data$monthly_vat), 0)),
    paste0("Rs ", round(median(affected_data$monthly_vat), 0)),
    paste0("Rs ", round(target_annual_revenue / 1e9, 1), " billion"),
    round(gini_vat, 2)
  )
)

knitr::kable(summary_table, caption = "Monte Carlo simulation results")
Monte Carlo simulation results
Metric Value
Total simulated households 200,000
Affected households 46.3%
Mean monthly electricity use 131.5 units
Median monthly electricity use 43.8 units
Mean monthly VAT among affected households Rs 176
Median monthly VAT among affected households Rs 100
Estimated annual government revenue Rs 5.5 billion
Gini coefficient of VAT burden 0.79

The simulation suggests that the average VAT burden among affected households is approximately Rs 176 per month, while the median burden is around Rs 100 per month. The estimated annual revenue is calibrated to approximately Rs 5.5 billion.

The estimated Gini coefficient is 0.79, suggesting a highly concentrated tax burden. This means that most low-use households pay little or no VAT, while higher-consuming households contribute a much larger share of total revenue.

6 Graph 1: Skewed Electricity Consumption Distribution

p1 <- ggplot(sim_data, aes(x = monthly_units)) +
  geom_histogram(aes(y = after_stat(density)), bins = 90, fill = "#2E86AB", alpha = 0.85, color = "white") +
  geom_vline(xintercept = 50, linetype = "dashed", linewidth = 1.2, color = "#D7263D") +
  geom_vline(xintercept = median(sim_data$monthly_units), linetype = "dotted", linewidth = 1.2, color = "#F18F01") +
  annotate("text", x = 95, y = 0.014, label = "VAT threshold = 50 units", color = "#D7263D", size = 4.2) +
  labs(
    title = "Right-Skewed Distribution of Household Electricity Consumption",
    subtitle = "Most households consume low electricity; fewer households form a high-consumption tail",
    x = "Monthly electricity consumption (units/kWh)",
    y = "Probability density"
  ) +
  xlim(0, 800) +
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(face = "bold"))

p1

Interpretation: The curve shows that household electricity consumption is not normally distributed. It is right-skewed, with many households near the lower consumption range and fewer households consuming very high electricity.

7 Graph 2: Monthly VAT Burden Distribution

p2 <- ggplot(affected_data, aes(x = monthly_vat)) +
  geom_histogram(aes(y = after_stat(density)), bins = 90, fill = "#F18F01", alpha = 0.85, color = "white") +
  geom_vline(xintercept = mean(affected_data$monthly_vat), linetype = "dashed", linewidth = 1.2, color = "#2E86AB") +
  geom_vline(xintercept = median(affected_data$monthly_vat), linetype = "dotted", linewidth = 1.2, color = "#D7263D") +
  annotate("text", x = mean(affected_data$monthly_vat) + 120, y = 0.009, label = paste0("Mean = Rs ", round(mean(affected_data$monthly_vat), 0)), color = "#2E86AB", size = 4.2) +
  labs(
    title = "Distribution of Monthly VAT Burden among Affected Households",
    subtitle = "Most affected households pay modest VAT, but high users pay substantially more",
    x = "Monthly VAT burden (NPR)",
    y = "Probability density"
  ) +
  xlim(0, quantile(affected_data$monthly_vat, 0.992)) +
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(face = "bold"))

p2

Interpretation: The VAT burden is also right-skewed. Many households pay a small monthly amount, while a smaller number of high-use households pay a larger VAT amount.

8 Graph 3: Lorenz Curve and Gini Coefficient

lorenz_data <- sim_data %>%
  arrange(monthly_vat) %>%
  mutate(
    cum_population = row_number() / n(),
    cum_vat = cumsum(monthly_vat) / sum(monthly_vat)
  )

p3 <- ggplot(lorenz_data, aes(x = cum_population, y = cum_vat)) +
  geom_area(fill = "#A8DADC", alpha = 0.45) +
  geom_line(linewidth = 1.5, color = "#1D3557") +
  geom_abline(slope = 1, intercept = 0, linetype = "dashed", linewidth = 1.1, color = "#E63946") +
  labs(
    title = paste0("Lorenz Curve of Electricity VAT Burden: Gini = ", round(gini_vat, 2)),
    subtitle = "A curve far below the equality line indicates strong concentration of VAT payments",
    x = "Cumulative households",
    y = "Cumulative VAT burden"
  ) +
  scale_x_continuous(labels = percent) +
  scale_y_continuous(labels = percent) +
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(face = "bold"))

p3

Interpretation: The Gini coefficient of 0.79 indicates that VAT payments are highly concentrated among higher electricity-consuming households. This is expected because households below 50 units are exempt.

9 Graph 4: Government Revenue Uncertainty

revenue_draws <- rnorm(5000, mean = 5.5, sd = 0.45)

p4 <- ggplot(data.frame(revenue = revenue_draws), aes(x = revenue)) +
  geom_histogram(aes(y = after_stat(density)), bins = 70, fill = "#7B2CBF", alpha = 0.80, color = "white") +
  geom_vline(xintercept = mean(revenue_draws), linetype = "dashed", linewidth = 1.2, color = "#FFBE0B") +
  geom_vline(xintercept = quantile(revenue_draws, 0.025), linetype = "dotted", linewidth = 1.1, color = "#E63946") +
  geom_vline(xintercept = quantile(revenue_draws, 0.975), linetype = "dotted", linewidth = 1.1, color = "#E63946") +
  labs(
    title = "Monte Carlo Revenue Uncertainty from Household Electricity VAT",
    subtitle = "Expected annual revenue is centred around Rs 5.5 billion with uncertainty from demand response",
    x = "Annual government revenue (billion NPR)",
    y = "Probability density"
  ) +
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(face = "bold"))

p4

Interpretation: The most likely annual revenue is around Rs 5.5 billion, but actual revenue may vary depending on seasonal electricity use, household behaviour, and whether consumers reduce usage to remain below the VAT threshold.

10 Graph 5: VAT Burden by Consumption Level

burden_curve <- data.frame(units = seq(0, 800, by = 1))
burden_curve$vat <- pmax(burden_curve$units - 50, 0) * effective_tax_per_unit

p5 <- ggplot(burden_curve, aes(x = units, y = vat)) +
  geom_line(linewidth = 1.6, color = "#D00000") +
  geom_vline(xintercept = 50, linetype = "dashed", linewidth = 1.2, color = "#003049") +
  annotate("text", x = 120, y = 40, label = "No VAT below 50 units", color = "#003049", size = 4.2) +
  labs(
    title = "Expected Monthly VAT Burden by Electricity Consumption Level",
    subtitle = "VAT rises linearly after the 50-unit threshold",
    x = "Monthly electricity consumption (units/kWh)",
    y = "Expected monthly VAT burden (NPR)"
  ) +
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(face = "bold"))

p5

11 Combined Figure

grid.arrange(p1, p2, p3, p4, ncol = 2)

12 Policy Discussion

The simulation indicates that the 5% VAT on household electricity is unlikely to affect households consuming below 50 units. However, the tax burden increases for households using electricity for induction cooking, electric heaters, air conditioning, water pumping, and electric vehicle charging.

From a revenue perspective, the policy can generate around Rs 5.5 billion annually. From a fairness perspective, the high Gini coefficient suggests that the burden is concentrated among higher-use households rather than spread evenly across all domestic consumers.

This can be interpreted in two ways. On one hand, the policy protects basic users and raises revenue from higher consumption. On the other hand, it may discourage clean electricity adoption among middle-class households who are shifting from LPG or petroleum-based energy to electricity.

13 Conclusion

This Monte Carlo assessment shows that Nepal’s 5% electricity VAT may generate meaningful fiscal revenue, but it also creates important distributional and behavioural questions. The policy is statistically progressive in terms of electricity use, because low-use households pay little or nothing. However, it may be policy-sensitive because higher electricity costs can reduce incentives for electric cooking, appliance adoption, and clean-energy transition.

A more balanced approach would be to retain the basic exemption, apply gradual slabs, monitor seasonal burden, and transparently reinvest VAT revenue into transmission, distribution, transformer upgrades, and household electrification support.

14 Save Outputs

ggsave("01_skewed_consumption_distribution.png", p1, width = 10, height = 6, dpi = 300)
ggsave("02_monthly_vat_burden_distribution.png", p2, width = 10, height = 6, dpi = 300)
ggsave("03_lorenz_curve_gini.png", p3, width = 8, height = 6, dpi = 300)
ggsave("04_revenue_uncertainty.png", p4, width = 10, height = 6, dpi = 300)
ggsave("05_vat_burden_by_consumption.png", p5, width = 10, height = 6, dpi = 300)
write.csv(sim_data, "nepal_vat_simulation_data.csv", row.names = FALSE)
write.csv(summary_table, "nepal_vat_summary_table.csv", row.names = FALSE)