The baseline profit Z of each hectare of a holding is given by
Z=Y-X
where Y is gross income, and X is total costs. These are in turn given by
\begin{array}{rcl}
Y &=& pq \\
X &=& x+te
\end{array}
where
p is the price obtained per unit,
q is the quantity produced per hectare,
x is the cost per hectare to operate,
e_i are various environmental metrics per hectare, most obviously greenhouse gas emissions, and
t_i are any environmental taxes associated with each environmental metric.
Each of these parameters may depend on the farm typeF and the land use capability (LUC), L, such that the full calculation of profit for each hectare of a holding is
Z_{FL} = p_Fq_{FL} - x_{FL} - \sum_i t_ie_{i,FL}
and total holding profit is obtaining by summing this quantity across all hectares of the holding. Overall profit of a farm is determined by summation across all its constituent holdings. Note that while currently all cells in a holding have the same LUC this is not a requirement and the calculation will work equally well if LUC were to vary across a holding.
Parameter values
The parameter values are stored in a number of CSV files which are read in by the model at start up from the .data/market/<scenario> folder specified.
Environmental taxes t_i are found in the environmental-metrics.csv file in the price column. In the example below the tax associated with greenhouse gas emissions is $10 per unit per ha and no tax is levied on nitrates. Other possible metrics are excluded from consideration by the file shown as they are ‘commented out’ with the # prefix.
limit price
ghg_emissions 10 10
nitrates 11 NA
#sediment 10 NA
#phosphates 1 NA
#e_coli 4 NA
In the remainder of this page we assume only greenhouse gases are taxed and use the simplified form te for the environmental tax burden in preference to the more complete \sum_i t_ie_{i,FL} shown above.
Yields
Yields by farm type and land use capability, q_{FL}, are in the commodity-yields.csv file:
Note that all of yields, base costs, and emissions are stored as a mean and a standard deviation, and that each holding will see these numbers vary every model time period by drawing from a normal distribution.
We can use these data to show the profit, gross income, and total costs for each farm type across different land use capability classes. We’ll throw away the standard deviations for simplicity and consider only mean outcomes.
Below are shown the income, costs, and net revenue per hectare for each farm type across the eight land use capability classes. These are crude estimates dating back to the ARLUNZ model1 and will be updated in due course. Even so it is expected that the relative profitability of the different broad land use classes will remain similar.
Code
plot_data <- combined_data |>pivot_longer(cols =c("Gross income", "Profit", "Total costs"))ggplot(plot_data |>filter(name %in%c("Gross income", "Total costs"))) +geom_col(aes(x =as.factor(LUC), y = value, group = name, fill = name),position ="dodge") +scale_fill_manual(values =c("#999999", "#ff6666"), name ="Income vs. Costs") +geom_point(data = plot_data |>filter(name =="Profit"), aes(x = LUC, y = value, shape = name), size =7) +scale_shape_manual(values ="\u2014", name ="") +# \u2014 is an em-dash# The below more correct, but doesn't extend the lines to the full width of the plot# geom_step(data = plot_data |> filter(name == "Profit"), # aes(x = LUC, y = value, group = farm_type, colour = name), # direction = "mid", lwd = 0.65) +# scale_colour_manual(values = c("black"), name = "") +xlab("Landuse Capability (LUC)") +ylab("Profit, $ per ha.") +facet_wrap(~ farm_type) +theme_minimal()
Update History
Date
Changes
2025-02-19
Split out from previous ‘core loop’ document.
2024-07-28
Correction in equation summarising full calculation of profit. Added note to consider the nudge calculation’s possible bias favouring changes after bad years.
2024-07-05
Corrected relative change from a percentage to a proportion.
2024-07-04
Added detail on calculation of relative change noting that profit can’t be handled this way because it is \pm and relative change is meaningless for such variables.