$title South African Regionalized Farm-level Resource Use & Output Supply Response (SARAS) model (SARAS,SEQ=383) $onText South African Regionalized Farm-level Resource Use & Output Supply Response (SARAS) model. A static comparative PMP models is developed for SARAS and used to study the impact of changes in SA agricultural policies, land reform, market environment, etc. to optimize crop acreage and animal breeding stock. Contributed by Dr. Femi Olubode-Awosola email: olucube@yahoo.co.uk PMP cost based calibration approach by (Howitt, 1995a, 1995b & 2002, Paris, 1988, Heckelei and Britz, 2000; Heckelei 2002) was used to calibrate the model. Reference: Olubode-Awosola, O O, van Schalkwyk H D, and Jooste, A, Mathematical modeling of the South African land redistribution for development policy. Journal of Policy Modeling 30, 5 (2008), 841-855. Olubode-Awosola, O O, Farm-Level Resource Use and Output Supply Response: A Free State Case Study. PhD thesis, University of the Free State, South Africa, 2006. http://lnweb90.worldbank.org/exteu/SharePapers.nsf/($all)/F0A9A6CBC009B1C18525745B00759C8C/$File/OLUBODE-AWOSOLA+PHD+THESIS.PDF OUTLINE 1. Set definitions Regions Farm types Production technology Production activities cropping activities livestock activities Farm resources Years 2. Historical time series data for price 3. Base year data 4. Parameters declarations ------------------------------------------------------------------------------- Assumptions: Producers' behaviour 1. maximisation of expected utility which is a function of expected profitability and farmer's averstion to risk (Henderson and Quandts, 1980; Tomek and Robinson, 1990) 2. REVENUE (YIELD RISK AND PRICE RISK) RISK CONSCIOUS Given technology of production Technology and production possibility differences at farm levels in each region 4. 2 technologies - irrigation and dryland croppings 5. at least 2 farm types - established and emerging farm types Available fixed inputs 6. Land availability - arable land; grass land; irrigable land Market environments (base scinario) 7. competitive industry (i.e producers are price taker ie each farm's MR = prevailing market price) Supply elastic for outputs (mkt deregulations) and A farm decides to produce the following crops 8. Demand elastic for farmland/farm resources: willing-buyers-willing-sellers 9. Fixed demand fixed prices for all factors of production Policy environments 10. Risky output prices 11. Increasing Number of emmerging farms: 30% land transfer 12. Variation in Land price (DAVC) 13. Variation in Labour wages (Component of DAVC) 14. Variation in Land tax (component of DAVC) 15. Variation in irrigation charge (component of DAVC) 16. Variaton in (tarrif, import/export duties, quotas) (componet of regional demand-supply & import-export balances) Calibration 17. The PMP function is calculated on increasing cost function of area grown to crop and constant yield. Application: 1. Forecasts and policy analysis - to know the effect of a price change on aggregate output and supply offered by each farm type Keywords: nonlinear programming, agricultural economics, resource use, output supply response, land reform, market reform, policy analysis, agricultural sector model $offText *=============================================================================== * A. SETS DEFINITION *=============================================================================== $onText SET DEFINITIONS In this section, the sets of the model are declared. The model contains 9 regions, each regions has 2 farm types, each farm types could engage in 2 types of production technologies, and each technology could be used to produce a vector of production activities with farm resources constraints both at region and farm-type levels. The land resources are contrained and classified. $offText Set * South African provinces r 'regions' / * WCape 'Western Cape' * NCape 'Northern Cape' FState 'Free State' * ECape 'Eastern Cape' * KNatal 'Kwazulu Natal' * Mpum 'Mpumalanga' * Limp 'Northern Province' * Gaut 'Gauteng' * NWest 'North-West' / f 'farm types' / f1 'established farm' f2 'developing farm' / t 'production technologies' / dry 'Rain fed' irrig 'irrigated' / * A representive farm type decides to engage in the following production activities p 'revenue generating activities' / * --- grains Wmaize 'White maize' YMaize 'Yellow maize' Wheat 'Wheat' Soya 'Soya beans' Sorghum 'Sorghum' Sunflower 'Sun flower' * --- animals Beef_Cattle 'Beef' mutton_Sheep 'Mutton' Pork_Pig 'Pork' Broilers_chicken 'Broilers chicken' Layers_eggs 'Layer eggs' Dairy_cattle 'Fresh milk' / cp(p) 'croping activities and primary products' / * --- grains Wmaize 'White maize' YMaize 'Yellow maize' Wheat 'Wheat' Soya 'Soya beans' Sorghum 'Sorghum' Sunflower 'Sun flower' / ap(p) 'livestock activities' / Beef_Cattle 'Beef' mutton_Sheep 'Mutton' Pork_Pig 'Pork' Broilers_chicken 'Broilers chicken' Layers_eggs 'Layer eggs' Dairy_cattle 'Fresh milk' / res 'inputs in the long-run such that all costs are variable' / land 'land' aland 'arable land' dryland 'dry land' irrigland 'irrigable land' gland 'grazing land' housing 'housing' capital 'capital investiment' seed 'seed' fert 'fertilizer' herbi 'hericide' pesti 'pesticide' iwater 'irrigation water' labour 'casual labour' harvest_cont 'harvest contract' spray_cont 'sprayer contract' insu 'insurance' chicks_ani 'breeding stock replacement' feed 'feed' VacVit 'vacination and vitamins' sani 'sanitation' elect 'electricity' fuel 'fuel' trays 'trays' gest_exam 'gestimation and examination' shearing 'shearing' pasture 'pature' bedmat 'bedding materials' trans 'transportation' govt_levy 'government levy' / rentable(res) 'rentable property' / dryland 'dry land' irrigland 'irrigable land' gland 'grazing land' / fix(res) 'fixed inputs in the short-run' / land 'land' aland 'arable land' dryland 'dry land' irrigland 'irrigable land' gland 'grazing land' iwater 'irrigation water' / ar(res) 'arable land' / dryland 'dryland' irrigland 'irrigable land' / g(res) 'grass land' / gland 'grazing land' / * cy cycle per year yr 'years' / 1994*2015 / count 'sim' / 1*2 / ot(yr) 'obeserved years for output prices' / 1994*2004 / it(yr) 'observed years for input prices' / 2000*2004 / bt 'base year' ft 'future years' pt 'pivot years'; bt(yr) = yes$(ord(yr) = card(ot)); pt(yr) = yes$(ord(yr) = card(ot) + 1); *bt(t) = Yes$(ord(t) = 1); ft(yr) = yes$(ord(yr) > card(ot)); *ft(t) future years / 2005*2020 /; option decimals = 4; display bt, pt, ft; Alias (p,p1,p2,P3), (ap,ap1), (cp,cp1), (r,r1,r2), (t,tt,ttt,tttt), (f,ff,fff) (yr, yrs), (ot,ot1,ot2,ot3), (ft, ft1), (res, res1, res2, res3); *=============================================================================== * B. COMMON TIME SERIES DATA *=============================================================================== * 2. RAW TIME SERIES Table RCY(r,p,yr) 'regional crop yield (ton per ha)' 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 FState.wmaize 1.56 3.05 2.95 2.59 2.67 3.39 2.80 3.00 3.12 3.11 3.80 FState.ymaize 1.16 2.49 2.80 2.26 2.61 3.10 2.70 3.05 2.65 3.00 3.70 FState.wheat 1.76 1.45 2.10 1.76 2.54 2.41 2.60 2.57 2.59 2.07 2.03 FState.soya 1.09 1.47 1.71 1.42 1.27 1.66 1.37 1.36 1.15 1.35 1.45 FState.Sorghum 1.63 2.51 2.13 1.79 1.32 2.55 1.75 2.50 2.20 2.57 2.60 FState.Sunflower 0.94 1.29 1.01 1.13 1.46 1.46 1.30 1.45 1.14 1.30 1.35; Table CTfactor(r,f,t,p) 'the multiplier to get technology effect from the regional yield and GM' * from COMBUD enterprise budgets and discussion with extension Officers on typical production activities Wmaize YMaize Wheat Soya Sorghum sunflower FState.f1.dry 1.1 1.14 1.0 1.5 1.5 1.000 FState.f1.irrig 2.4 2.54 2.3 3.0 3.0 2.300 FState.f2.dry 0.89 1.00 0.8 FState.f2.irrig 2.2 2.30 1.9 ; Table LTfactor(r,f,p) 'the multiplier to get farm type effect from the regional off-take rate' * from COMBUD enterprise budgets and discussion with extension Officers on typical production activities Beef_cattle mutton_sheep pork_pig broilers_chicken Layers_eggs Dairy_cattle FState.f1 3. 4.05 12 1.2 1.2 1.2 FState.f2 1.5 2 10.5 1 1 .95; Table RLO(r,p,yr) 'regional livestock offtake rate (% number and litre)' * what is the average mortality rate over these years? * what is the average mortality/fertility rate over these years? * what is milk distribution loss rate (assumed as 0.1 (10 percent)) * what is egg brakage/distribution loss rate (assumed as 0.1 (10 percent)) 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 FState.beef_cattle 0.17 0.17 0.16 0.16 0.16 0.20 0.17 0.19 0.19 0.19 0.20 FState.mutton_sheep 0.20 0.23 0.22 0.22 0.24 0.25 0.25 0.26 0.27 0.27 0.28 FState.pork_pig 1.64 1.68 1.69 1.69 1.63 1.60 1.68 1.62 1.66 1.67 1.60 FState.broilers_chicken 0.923 0.845 0.902 0.902 0.898 0.921 0.936 0.943 0.945 0.945 0.939 FState.layers_eggs 222 203 216 216 216 221 225 226 227 227 225 FState.dairy_cattle 5363.17 5467.16 5308.74 5642.11 5710.14 5655.72 5657.00 5746.00 5668.35 5861.76 5608.02; * live weight at sales, carcass weighter (dressing %) from the regional off-take * from COMBUD enterprise budgets and discussion with extension Officers on typical production activities * dairy and eggs are counted in litres and unit respectively hence the weight of 1 for each Table Liveweit(r,p) 'live weight at sales(ton number and number)' Beef_cattle mutton_sheep pork_pig broilers_chicken Layers_eggs Dairy_cattle FState 0.393 0.047 0.0668 0.00191 1 1; * carcase weight at arbattoir * from COMBUD enterprise budgets and discussion with extension Officers on typical production activities Table Carcass(r,p) 'live weight at sales(ton number and number)' Beef_cattle mutton_sheep pork_pig broilers_chicken Layers_eggs Dairy_cattle FState 0.227 0.023 0.0307 0.00132 1 1; * price difference at regions? Table Price(r,p,yr) 'producer prices data for primary products (R per unit - ton numer and litre)' * feedlot prices 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 FState.wmaize 868.04 1145.13 1293.44 1273.57 1110.67 1199.37 1053.48 1368.11 2205.52 1374.31 1430.05 FState.ymaize 863.97 863.08 1057.3 983.24 931.56 1093.52 977.81 1357.29 1849.1 1374.37 1465.46 FState.wheat 1121.44 1211.4 1361.07 1197.69 1219.93 1427.44 1569.5 1738.67 2189.52 1846.53 1938.97 FState.soya 1235.58 1715.24 2021.99 1613.88 1761.74 1885.83 1828.43 2189.42 2587.68 2274.05 2214.83 FState.Sorghum 2090 1205.95 1364.83 1412.4 1711.1 1222.76 1451.24 1785.86 2087.88 1783.63 1846.03 FState.Sunflower 1680 1570 1703.74 2064.17 1957.8 1615.7 1992.78 2938.04 2677.72 2526.88 2243.1 FState.beef_cattle 13130 13120 13440 13730 13660 12850 13830 13100 12920 13360 13460 FState.mutton_sheep 15210 15030 15880 15900 15710 16770 17360 17580 18660 19380 19700 FState.pork_pig 11380 11020 11420 11860 11760 11960 11400 11520 13570 12840 13040 FState.broilers_chicken 11580 12390 12421 11547 12198 13145 13892 14915 15846 14915 15846 FState.layers_eggs 0.40 0.37 0.41 0.42 0.40 0.40 0.43 0.47 0.54 0.57 0.58 FState.dairy_cattle 0.98 1.02 1.14 1.40 1.28 1.26 1.43 1.58 1.89 2.17 2.05; Table byprod(r,p) 'average revenue from by product (R per enterprise unit)' Beef_cattle mutton_sheep pork_pig broilers_chicken layers_eggs dairy_cattle FState 239.04 65.01333333 928.2 0.84 16 1803; * $onText * adjutint the historical unit prices to to 2004 $ to have constant year $ Table OPPI(r,p,yr) 'producer price index outputs' 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 FState.wmaize 100.0 102.55 99.80 96.07 106.68 98.23 129.08 201.38 179.96 145.09 103.63 FState.ymaize 100.0 102.55 99.80 96.07 106.68 98.23 129.08 201.38 179.96 145.09 103.63 FState.wheat 100.0 104.35 120.42 108.30 106.98 120.55 145.32 179.84 203.29 193.94 144.53 FState.soya 100.0 128.87 149.45 117.68 129.28 138.12 133.56 216.02 267.27 229.42 124.31 FState.Sorghum 100.0 98.49 107.87 114.02 151.46 107.87 157.71 311.22 300.76 160.41 112.73 FState.Sunflower 100.0 88.80 102.33 139.12 128.29 93.37 131.84 228.20 201.68 186.27 157.33 FState.beef_cattle 100.0 101.14 107.63 111.62 105.81 108.43 113.90 119.82 157.74 168.45 186.56 FState.mutton_sheep 100.0 100.39 105.59 117.04 112.22 112.87 130.04 132.90 156.57 176.46 189.08 FState.pork_pig 100.0 93.44 95.86 123.40 123.40 119.54 142.65 147.79 191.16 180.17 179.60 FState.broilers_chicken 100.0 102.79 106.74 119.51 119.86 111.15 116.14 132.17 154.47 162.72 162.60 FState.layers_eggs 100.0 102.79 106.74 119.51 119.86 111.15 116.14 132.17 154.47 162.72 162.60 FState.dairy_cattle 100.0 109.64 119.44 153.65 144.48 136.86 155.52 207.47 211.51 240.12 231.42; *$onText Table IPPI(r,yr) 'price indices of farming requisites' 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 FState 100.0 108.86 123.10 134.49 137.18 143.99 158.23 180.70 216.61 229.43 236.39; *$offText *=============================================================================== * C. BASE YEAR DATA 2004/2005 *================================================================================ * 1. POLICY RELEVANT VARIABLES *------------------------------------------------------------------------------- Table policy_var(r,*) 'policy-relevant general costs or supports' * a vector of rental rates on crop land or production resources that affect crop supply and acreage * incorporate if there is a condition or level of production at which benefit or penalty applies * Table policy_var(r,res) annual water quota in litre per ha l_tax w_tariff w_quota l_price p_sup fees dryrent irrigrent grent interest d_rebate d_per FState 0 0 9023.50 1119 0 0 130 1000 80 0.1325 0.70 .80; *------------------------------------------------------------------------------- * 2. RESOURCE AVAILABILITY *------------------------------------------------------------------------------- * DATA SOURCE: - Provincial and national DLA * - Consultation with Private and public consultants service providers Table RLC(r,res) 'regional farmland constraints' labour land aland dryland irrigland gland iwater * WCape 281157600 11560609 2454788 2173252 281536 9105821 1906350640 * NCape 175372800 29543832 454465 292591 161874 29089367 1954975429.79 FState 149164800 11885402.49 4272833.1 4171965.04 100868.06 7612572.7 2602933358.00 * ECape 80409600 14817723 1172901 1017971 154930 13644822 1272947408.29 * KNatal 90108000 6529315 1199675 1029431 170244 5329649 1249204046.46 * Mpum 124240800 4978827 1734896 1577476 157420 3243931 1216069500.00 * Limp 72338400 10548290 1700442 1565296 135146 8847848 1095068725.64 * Gaut 21729600 828623 438623 411939 26684 390000 187738113.17 * NWest 108144000 10098473 3360459 3257141 103318 6738014 735286392.79 ; Table FLC(r,f,res) 'farmtype farmland contraints (farm type typical farm resources)' land aland dryland irrigland gland iwater capital * WCape.f1 1601.95 352.43 234.37 118.06 1249.52 274433.96 * WCape.f2 568.66 120.56 80.17 40.39 448.11 273466.69 * NCape.f1 4812.71 72.19 46.49 25.70 4740.52 310381.00 * NCape.f2 1486.58 22.30 14.36 7.94 1464.26 95870.93 FState.f1 1370.30 496.05 484.64 11.41 874.25 305381.29 904999 FState.f2 394.69 82.89 75.76 7.13 311.81 37984.54 45500 * ECape.f1 3360.11 198.25 172.08 26.17 3161.86 215231.82 * ECape.f2 434.65 34.34 29.81 4.53 400.32 37240.74 * KNatal.f1 1570.31 383.16 328.75 54.41 1187.15 399231.82 * KNatal.f2 1471.90 270.83 232.37 38.46 1201.07 282192.65 * Mpum.f1 953.12 339.31 308.43 30.88 613.81 238527.79 * Mpum.f2 663.29 230.82 209.82 21.00 432.46 162263.44 * Limp.f1 3586.01 588.11 541.65 46.46 2997.91 376461.71 * Limp.f2 655.63 105.56 97.22 8.34 550.07 67569.21 * Gaut.f1 372.07 196.83 184.82 12.01 175.25 84472.18 * Gaut.f2 79.93 42.28 39.70 2.58 37.65 18145.83 * NWest.f1 1876.57 666.18 645.53 20.65 1210.39 146972.47 * NWest.f2 541.84 180.43 174.84 5.59 361.40 39806.54 0 ; *------------------------------------------------------------------------------- * 3. RESOURCE REQUIREMENT *------------------------------------------------------------------------------- * DATA SOURCE: - Combud Enterprise budgets * - Consultation with PDA * - Consultation with EA * - Consultation with Private and public consultants service providers Table CRES(r,t,p,res) 'resource use per cropping enterprise activity unit (per ha per 500 birds per 100 cows)' land aland dryland irrigland spray_cont insu fuel FState.dry.ymaize 1 1 1 1 1 FState.irrig.ymaize 1 1 1 1 18.45 55.12 FState.dry.wmaize 1 1 1 1 1 FState.irrig.wmaize 1 1 1 1 18.45 55.12 FState.dry.wheat 1 1 1 1 1 FState.irrig.wheat 1 1 1 1 1 25.99 FState.dry.soya 1 1 1 1 1 FState.irrig.soya 1 1 1 1 1 25.99 FState.dry.sorghum 1 1 1 1 1 FState.irrig.sorghum 1 1 1 1 1.5 25.99 FState.dry.sunflower 1 1 1 1 FState.irrig.sunflower 1 1 1 1.5 25.99 + seed fert herbi pesti iwater labour harvest_cont FState.dry.ymaize 1 1 1 1 48.86 1 FState.irrig.ymaize 1 5.1 2.21 1 6391.5 119.88 7.5 FState.dry.wmaize 1 1 1 1 48.86 1 FState.irrig.wmaize 1 5.1 2.21 1 6391.5 119.88 7.5 FState.dry.wheat 1 1 1 1 30 0.5 FState.irrig.wheat 1.44 2.00 1 1 6600 156.39 1. FState.dry.soya 1 1 1 1 15 .5 FState.irrig.soya 1.6 1.1 1.434 1 5000 45.0 1.00 FState.dry.sorghum 1 1 1 1 20 .5 FState.irrig.sorghum 2.8 3.5 1 1 4500 60 1 FState.dry.sunflower 5.5 1 1 1 57.21 1 FState.irrig.sunflower 6.7 2.83 3.81 3.81 6111 123.08 1.1 ; * not all animals are kept on grazzing land Table LRES(r,p,res) 'resource resource use per livestock enterprise activity (unit per fixed livestock unit)' land gland labour chicks_ani feed VacVit sani elect fuel housing FState.beef_cattle .75 .75 1 1 1 FState.mutton_sheep .5 .5 1 1 1 FState.pork_pig 1 1 1 1 FState.broilers_chicken 1 1 1 1 1 1 1 FState.layers_eggs 1 1 1 1 1 1 1 FState.Dairy_cattle .25 .25 1 1 1 + trays shearing bedmat insu trans FState.beef_cattle 1 FState.mutton_sheep 1 1 FState.pork_pig 1 FState.broilers_chicken 1 1 FState.layers_eggs 1 1 FState.Dairy_cattle 1; *------------------------------------------------------------------------------- * 4. RESOURCE COST *------------------------------------------------------------------------------- * direct allocatable variable cost (transportation cost is not considered) * adjust each cost component for infation using base yr inflator/deflator * ???????????????? convert the unit cost of water to R per litre ???????????????????????? Table cost(r,p,res) 'cost per unit of variable inputs used' seed fert herbi pesti iwater labour harvest_cont spray_cont insu trans FState.ymaize 220.42 439.71 132.554 47 .1293 3.125 60 75 25.365 FState.wmaize 220.42 439.71 132.554 47 .1293 3.125 60 75 25.365 Fstate.wheat 264 428 372.78 346.86 .1293 3.125 350 150 386.1 FState.soya 297 373.66 223 159 .1293 3.125 360 173 200 FState.Sorghum 48.3 578 64.5 19 .1293 3.125 175 19 100 FState.Sunflower 23.37 445.34 147.84 53.46 .1293 3.125 76.5 0 54.24 FState.beef_cattle 126.27 FState.mutton_sheep 32.05 FState.pork_pig 221.4 FState.broilers_chicken 0.5 FState.Layers_eggs 0.19 FState.Dairy_cattle 262 + chicks_ani feed VacVit sani elect fuel trays shearing bedmat FState.ymaize 3.99 FState.wmaize 3.99 Fstate.wheat 3.99 FState.soya 3.99 FState.Sorghum 3.99 FState.Sunflower 3.99 FState.beef_cattle 146.09 416.98 105.40 FState.mutton_sheep 19.65 51.5 44.18 6.5 FState.pork_pig 40 8342.2 23.00 FState.broilers_chicken 2.62 9.32 0.11 0.15 0.25 0.115 FState.Layers_eggs 24.5 62.286 0.12 0.092 0.5 2.85 FState.Dairy_cattle 146.09 5298.56 639.73 * opportunity cost of arable land, irrigable land and grazing land + dryland irrigland gland housing FState.ymaize 130 1000 FState.wmaize 130 1000 Fstate.wheat 130 1000 FState.soya 130 1000 FState.Sorghum 130 1000 FState.Sunflower 130 1000 FState.beef_cattle 80 FState.mutton_sheep 80 FState.pork_pig 1000 FState.broilers_chicken 1.2 FState.Layers_eggs 2 FState.Dairy_cattle 80 ; *------------------------------------------------------------------------------- * 5. ACTIVITY LEVELS $sTitle Base Level Activities *------------------------------------------------------------------------------- * DATA SOURCE: - Combud Enterprise budgets * - Consultation with PDA * - Consultation with EA * - Consulation with Coop and Farmers unions * - Consultation with Private and public consultants service providers * Base activities levels - Year? * NOTE there are possible scinarios based on winter and summer crops with regard to land constraints and water constraitns * for example having 10 ha of arable land and 1000l/ha water entitlement. The following scinarios are possible: * on annual basis: * 1. 10 ha of winter maize only * 2. 10h of summer wheat (constraints: 20ha of land availability (10h to maize * & 10h to wheat) but stictly 10,000l of irrigation water) * 3. 10 ha of winter maize and 10h of summer wheat (constraints: 20ha of land * availability (10h to maize & 10h to wheat) but stictly 10,000l of irrigation water) * the bottom line: there's no double cropping of grains. So the decision rule is base year scinario * i.e let the base activities dictates how to specify the constraints * However these scenarios are not relevant as most of the dominant crops are obtainable once in a year. Table Fsysratio(r,f,t,p) 'farming system or crop land commitment (percentage)' * delienate to technology (i.e rain-fed : irrigated - 2002 survey and .....) * from COMBUD enterprise budgets and discussion with extension Officers on typical production activities * coop dry.Wmaize irrig.Wmaize dry.YMaize irrig.YMaize dry.Wheat irrig.Wheat dry.Soya irrig.Soya dry.Sorghum irrig.Sorghum dry.Sunflower irrig.Sunflower * WCape.f1 79.10 20.90 79.10 20.10 99.60 00.40 76.30 23.70 78.90 21.10 * WCape.f2 * NCape.f1 25.80 74.20 25.80 74.20 2.50 97.50 00.00 100.00 7.50 92.50 * NCape.f2 FState.f1 0.97 0.03 0.97 0.03 0.95 0.05 0.80 0.20 0.99 .01 0.98 .02 FState.f2 0.97 0.03 0.97 0.03 0.95 0.05 0.80 0.20 0.99 .01 0.98 .02 * FState.f1 0.977 0.023 0.977 0.023 0.977 0.023 0.977 0.023 0.977 .023 * FState.f2 0.914 0.086 0.914 0.086 0.914 0.086 0.914 0.086 0.914 0.086 * ECape.f2 * KNatal.f1 76.70 23.30 76.70 23.30 0.80 99.20 84.80 15.20 100.00 0.00 * KNatal.f2 * Mpum.f1 89.80 10.20 89.80 10.20 8.00 92.00 96.20 3.80 95.40 4.70 * Mpum.f2 * Limp.f1 57.90 42.10 57.90 42.10 0.00 100.00 34.20 65.80 99.50 0.50 * Limp.f2 * Gaut.f1 91.90 8.10 91.90 8.10 10.00 90.00 99.30 0.70 100.00 0.00 * Gaut.f2 * NWest.f1 97.10 2.90 97.10 2.90 12.50 87.50 17.10 82.90 93.70 6.30 * NWest.f2 ; Table LBR(r,f,p) 'farm level base activity levels stocks - number of animals 2004-5' Beef_Cattle mutton_Sheep pork_Pig Broilers_chicken Layers_eggs Dairy_cattle FState.f1 52 131 2 5745 219 6 FState.f2 10 23 1 13 5 1; Table RBA(r,f,p) 'regional base level (areea planted in ha) 2005-5' Wmaize YMaize Wheat Soya Sorghum Sunflower FState.f1 77.36 45.13 22.33 1.45 4.98 21.69 FState.f2 3.64 6.87 0.26 ; Parameter CBR 'farm level base year activity levels crops' CBR1 'farmtype and technology base leve in each region'; CBR(r,f,t,p) = Fsysratio(r,f,t,p)*RBA(r,f,p); CBR1(r,f,t) = sum(p, CBR(r,f,t,p)); * check that irrigated activities does not exceed the irrigable land available. display lbr, cbr; $sTitle Farm Data * DLA as at 2003 including the SLAG, LRAD, Commonage... Table NF(r,f) 'number of farms units in each farmtype in each region' * field crops and animal production f1 f2 * WCape 7185 89 * NCape 6114 80 FState 8531 495 * ECape 4376 262 * KNatal 4038 128 * Mpum 5104 172 * Limp 2915 145 * Gaut 2206 98 * NWest 5349 112 *------------------------------------------------------------------------------- * 7. SPECIFYING FARMERS RISK ATTITUDE * 8. TOTAL FACTOR PRODUCTIVITY GROWTH IN AGRICULTURE * 9. RATE OF FARM FOLDING UP AND FARM LAND SETTLEMENT *------------------------------------------------------------------------------- * Specifying Rap * Estimate the Rap such that the diff between observed allocation and the model * solution is minimised (Brink and McCarl, 1979; Hazell et al. 1983) * by simulating over a range of raps and chose rap with minimum MAD and decreasing F * other means include: * 3. derive efficient frontier and pick the Rap where the utility function and the * efficient frontier of the decision are tangent) * 4. assume E-V rule was used by decision makers in generating historical choices, * and fit the risk aversion parameters as equal to the difference between MR * and MC of resources, divided by the appropriate marginal variance * i.e Rap = (MR-MC)/Marginal variance * 5. subjectively elicit a Rap (Anderson, et al. 1977) and in turn fit the objective * function (i.e given a Pratt risk aversion coefficient and assuming exponential * utility implies the E-V Rap equals 1/2 the Pratt Rap (Freund, 1956 or Bussey 1978) * 6. transform a risk aversion coefficient from another study or develop one based * on probabilistic assumptions (McCarl and Bessler 1989) * Initialise raps with 0.0; *------------------------------------------------------------------------------- *$offText * Census of agriculture (* 1988 10926; 1993 10252; 2002 8531) * TFP Index growth rates by Avila & Evenson (2004) * crops = 4.11% 1961-80; 2.74% btw 1981-01; * stock = 3.05% 1961-80; 1.91 btw 1981-01; * aggr = 3.61% 1961-80; 2.32 btw 1981-01; * TFP BY Coelli and Rao (2003) * aggr = 3.7 1980/2000 * aggr = 3.7 malmquist; 1.9 Tornqvist 1980-2000 * TFP BY Zyl, Vink and Kirsten (2000) * 1960-1980 2.05 * 1980-1990 0.96 * 1980-1996 1.19 * 1990-1996 1.56 * 1960-1996 1.66 * Assuming half for developing farmers Table farm_fac(r,f,*) 'annual water quota in litre per ha' ctfp ltfp fgrowth Rap FState.f1 0.0114 0.0137 -129 0.0000003 FState.f2 0.0057 0.00685 740 0.00002 ; $onText Table NF(r,f,p) number of farms within each farmtype in each region ('000) * field crops and animal production Wmaize YMaize Wheat Soya Sorghum CottonS BCattle Sheep Pigs Broiler Layer Dairy WCape.f1 940 WCape.f2 NCape.f1 48 NCape.f2 FState.f1 1155 FState.f2 ECape.f1 465 ECape.f2 KNatal.f1 416 KNatal.f2 Mpum.f1 454 Mpum.f2 Limp.f1 48 Limp.f2 Gaut.f1 280 Gaut.f2 NWest.f1 749; NWest.f2 $offText *------------------------------------------------------------------------------- * 6. REGIONAL INFLOW/OUTFLOW AND TRADE AND CONSUMPTION *------------------------------------------------------------------------------- * DATA SOURCE: - Published Statistics * - DTI * - SA Grains * - Consultation with Private and public consultants service providers * Base year demand, supply, import/(regional inflow) and export(regional outflow) of crops $sTitle Consumption Data *$sTitle Regional Supply Table rpro(r,p) 'regional crop & livestock production 2004-05' * update of supply per region per farm type scalled to 1000 tons of crops and 1000 units of animal Wmaize YMaize Wheat Soya Sorghum sunflower FState 2724448 1629976 517956 30508 162899 280000 + Beef_cattle mutton_sheep pork_pig broilers_chicken layers_eggs dairy_cattle FState 60591 30151 10493 61976 429901600 301061300; $sTitle Consumption Data Table rcc(r,p) 'reqional crop and meat demand (consumption)' * demand per region scalled to 1000 tons of crops and 1000 units of animal Wmaize YMaize Wheat Soya Sorghum sunflower FState 260356.60 584774.00 105063.91 12000 7979.62 101400 + Beef_cattle mutton_sheep Pork_pig broilers_chicken layers_eggs dairy_Cattle FState 50477.02 13791.54 8826.58 53235.33 257964284.70 96242767.74; $sTitle Trade Balance Table rpx(r,p) 'regional crop and livetock products trade balance (ton and number)' * outflow per region scalled to 1000 tons of crops and 1000 units of animal Wmaize YMaize Wheat Soya Sorghum sunflower FState 2464091.4 1045202 412892.09 18508 154919.38 178600 + Beef_cattle mutton_sheep Pork_pig broilers_chicken layers_eggs dairy_Cattle FState 10113.98 16359.46 1666.42 8740.67 171937315.30 204818532.30; * National level base yr data Parameter nss(p) 'national crop and meat production' * update of supply scalled to 1000 tons of crops and 1000 units of animal / Wmaize 7467255 YMaize 4978993 Wheat 373000 Soya 272500 Sorghum 1699000 Sunflower 664010 Beef_cattle 672000 Mutton_sheep 6192000 Pork_pig 1974000 broilers_chicken 872726 Layers_eggs 5871146519 Dairy_cattle 2111000000 / ndd(p) 'national demand (consumption)' / Wmaize 4806000 YMaize 3721000 Wheat 138500 Soya 162000 Sorghum 3366600 Sunflower 676000.00 Beef_cattle 722000.00 Mutton_sheep 9730285.71 Pork_pig 2119622.95 broilers_chicken 875000.00 Layers_eggs 5594042258.00 Dairy_cattle 2184000000.00 / npx(p) 'base yr national crop and animal products trade balance' / Wmaize 4906255.00 YMaize 2995993.00 Wheat 1207000.00 Soya 110500.00 Sorghum 121500.00 Sunflower -11990 Beef_cattle -50000.00 Mutton_sheep 6076500.00 Pork_pig 1805000.00 broilers_chicken -67000.00 Layers_eggs 277104261.00 Dairy_cattle -73000000 /; *================================================================================ $sTitle D. Parameter Specifications *================================================================================ Parameter CDAVC RCDAVC RRCDAVC LDAVC RLDAVC RRLDAVC RCDAVC1 'real direct variable cost crops' RLDAVC1 'real direct variable cost stocks' c_int_paid 'interest paid on operating capital' l_int_paid 'interest paid on operating capital' c_p_int_paid l_p_int_paid VarInpc,VarInpl p_int_paid c_exp 'expenses per items' l_exp 'expenses per items' c_t_exp l_t_exp c_t_exp_i l_t_exp_i r_c_exp r_l_exp; c_exp(r,t,p,res) = cres(r,t,p,res)*cost(r,p,res); l_exp(r,p,res) = lres(r,p,res)*cost(r,p,res); r_c_exp(r,t,p,res) = cres(r,t,p,res)*cost(r,p,res)*(IPPI(r,'2004')/(sum(it, IPPI(r,it))/card(it))); r_l_exp(r,p,res) = lres(r,p,res)*cost(r,p,res)*(IPPI(r,'2004')/(sum(it, IPPI(r,it))/card(it))); c_t_exp(r,t,p) = sum(res, c_exp(r,t,p,res)) - policy_var(r,'d_rebate')*policy_var(r,'d_per')*cres(r,t,p,'fuel')*cost(r,p,'fuel'); l_t_exp(r,p) = sum(res, l_exp(r,p,res)) - policy_var(r,'d_rebate')*policy_var(r,'d_per')*lres(r,p,'fuel')*cost(r,p,'fuel'); c_t_exp_i(r,t,p) = (1 + policy_var(r,'interest'))*c_t_exp(r,t,p)*(IPPI(r,'2004')/(sum(it, IPPI(r,it))/card(it))); l_t_exp_i(r,p) = (1 + policy_var(r,'interest'))*l_t_exp(r,p) *(IPPI(r,'2004')/(sum(it, IPPI(r,it))/card(it))); c_int_paid(r,t,p) = policy_var(r,'interest')*c_t_exp(r,t,p); * (sum(res, cres(r,t,p,res)*cost(r,p,res)) * -policy_var(r,'d_rebate')*policy_var(r,'d_per')*cres(r,t,p,'fuel')*cost(r,p,'fuel')); l_int_paid(r,p) = policy_var(r,'interest')*l_t_exp(r,p); * (sum(res, lres(r,p,res)*cost(r,p,res)) * -policy_var(r,'d_rebate')*policy_var(r,'d_per')*lres(r,p,'fuel')*cost(r,p,'fuel')); RCDAVC1(r,t,p) = ( * sum all expenses (sum(res, cres(r,t,p,res)*cost(r,p,res)) * subtract diesel rebate - policy_var(r,'d_rebate')*policy_var(r,'d_per')*cres(r,t,p,'fuel')*cost(r,p,'fuel')) * add interest/cost of operating capital + policy_var(r,'interest')*(sum(res, cres(r,t,p,res)*cost(r,p,res)) - policy_var(r,'d_rebate')*policy_var(r,'d_per')*cres(r,t,p,'fuel')*cost(r,p,'fuel'))) * adjust for inflation ` *(IPPI(r,'2004')/(sum(it, IPPI(r,it))/card(it))); RLDAVC1(r,p) = ( * sum all expenses (sum(res, lres(r,p,res)*cost(r,p,res)) * subtract diesel rebate - policy_var(r,'d_rebate')*policy_var(r,'d_per')*lres(r,p,'fuel')*cost(r,p,'fuel')) * add interest/cost of operating capital + policy_var(r,'interest')*(sum(res, lres(r,p,res)*cost(r,p,res)) - policy_var(r,'d_rebate')*policy_var(r,'d_per')*lres(r,p,'fuel')*cost(r,p,'fuel'))) * adjust for inflation *(IPPI(r,'2004')/(sum(it, IPPI(r,it))/card(it))); * variable inputs costs as percentage of total variable cost VarInpc(r,t,p,res)$(cres(r,t,p,res) <> 0) = r_c_exp(r,t,p,res)/RCDAVC1(r,t,p)*100; c_p_int_paid(r,t,p)$(c_t_exp_i(r,t,p) <> 0) = c_int_paid(r,t,p)/c_t_exp_i(r,t,p)*100; l_p_int_paid(r,p) $(l_t_exp_i(r,p) <> 0) = l_int_paid(r,p)/l_t_exp_i(r,p)*100; VarInpl(r,p,res)$(lres(r,p,res) <> 0) = r_l_exp(r,p,res)/RLDAVC1(r,p)*100; display RCDAVC1, RLDAVC1; * , agrisup; * , c_t_exp_i, c_p_int_paid; * display RLDAVC1, l_t_exp_i, l_p_int_paid, VarInpc, VarInpl; *------------------------------------------------------------------------------- *------------------------------------------------------------------------------- * 3. adjust nominal producer price with producer price index to 2004 constant price * thereby reindex the index to 2004 Parameter RPrice CY RY RMY,RAY, AY CMR 'real regional marginal revenue - crop' LMR 'real regional marginal revenue - livestock' RMR 'real regional marginal revenue - both'; RPrice(r,p,ot) = Price(r,p,ot)*(OPPI(r,p,'2004')/OPPI(r,p,ot)); * compute the yield * regional meat yeild (regional offtatke rate x carcass weight) RMY(r,p,ot) = RLO(r,p,ot) * Carcass(r,p); * Regional animal yield (regionla offtake rate x liveweight) RAY(r,p,ot) = RLO(r,p,ot) * liveweit(r,p); RY(r,p,ot) = RCY(r,p,ot) + RAY(r,p,ot); * compute the real farm income (marginal revenue) at constant price 2004 CMR(r,p,ot)$cp(p) = RCY(r,p,ot)*RPrice(r,p,ot) + byprod(r,p) + policy_var(r,'p_sup'); LMR(r,p,ot)$ap(p) = RAY(r,p,ot)*RPrice(r,p,ot) + byprod(r,p) + policy_var(r,'p_sup'); RMR(r,p,ot) = CMR(r,p,ot) + LMR(r,p,ot); display price, rprice, RMY, RAY, RCY, RY, CMR, LMR, RMR; *------------------------------------------------------------------------------- *------------------------------------------------------------------------------- $onText Making a Probability Distribution from a Set of Non-Stationary Data The most common way of doing it is it utilize a regression to remove the systematic trends and then use the residuals to form the probability distribution. Let us consider a relatively simple ten point example of this. Suppose there is a trend in historical data. What if that trend is upward, then what one must do in the phase of the historical data is somehow remove the trend then extrapolate it to the time period of interest and form the probability distribution based on its historical observations in that time period Quantify the trend in crop and animal yields by fitting a linear tend using regression analysis bcos many quantities in nature fluctuate in time. e.g weather (so also the crop yields and animal off-take rate.) Until recently it was assumed that such fluctuations are a consequence of random and unpredictable events. With the discovery of chaos, it has come to be understood that some of these cases may be a result of deterministic chaos and hence predictable in the short term and amenable to simple modeling. Many tests have been developed to determine whether a time series is random or chaotic, and if the latter, to quantify the chaos. If chaos is found, it may be possible to improve the short-term predictability and enhance understanding of the governing process. J. C. (Clint) Sprott (2004) "Time-Series Analysis" Workshop presented at the 2004 SCTPLS Annual Conference at Marquette University on July 15, 2004 35pp Economic time series often have a trend Just because 2 series are trending together, we can't assume that the relation is causal Often, both will be trending because of other unobserved factors Even if those factors are unobserved, we can control for them by directly controlling for the trend One possibility is a linear trend, which can be modeled as yt = a0 + a1t + et, t = 1, 2, ... Another possibility is an exponential trend, which can be modeled as log(yt) = a0 + a1t + et, t = 1, 2, ... Another possibility is a quadratic trend, which can be modeled as yt = a0 + a1t + a2t2 + et, t = 1, 2, ... Adding a linear trend term to a regression is the same thing as using 'detrended' series in a regression Detrending a series involves regressing each variable in the model on t The residuals form the detrended series Basically, the trend has been partialled out An advantage to actually detrending the data (vs. adding a trend) involves the calculation of goodness of fit Time-series regressions tend to have very high R2, as the trend is well explained The R2 from a regression on detrended data better reflects how well the xt's explain yt $offText Parameter RYt sumt sumRY sumtsq meanRY meant sumRYt bRY aRY RYrisk estRY preRY pRY deRY AMYrisk ARYrisk avcbry avlbry avdery; RYt(r,p,ot) = RY(r,p,ot)*ord(ot); sumt = sum(ot, ord(ot)); sumRY(r,p) = sum(ot, RY(r,p,ot)); sumtsq = sum(ot, ord(ot)**2); meanRY(r,p) = sum(ot, RY(r,p,ot))/card(ot); meant = sum(ot, ord(ot))/card(ot); sumRYt(r,p) = sum(ot, RYt(r,p,ot)); bRY(r,p) = (sumRYt(r,p) - sumt*sumRY(r,p)/card(ot))/(sumtsq - sumt**2/card(ot)); avcbry(r) = sum(cp, bry(r,cp))/card(cp); avlbry(r) = sum(ap, bry(r,ap))/card(ap); aRY(r,p) = meanRY(r,p) - bRY(r,p)*meant; estRY(r,p,ot) = aRY(r,p) + bRY(r,p)*ord(ot); RYrisk(r,p,ot) = RY(r,p,ot) - estRY(r,p,ot); ARYrisk(r,p) = sum(ot, abs(RYrisk(r,p,ot)))/card(ot); * Forecast furture values * preRGM(r,p,yr)$ft(yr) = a(r,p) + b(r,p)*ord(yr); preRY(r,p,yr)$(yes$(ord(yr) > card(ot))) = aRY(r,p) + bRY(r,p)*ord(yr); * Detrended real GM deRY(r,p,ot)= PreRY(r,p,'2005') + RYrisk(r,p,ot); avdery(r,p) = sum(ot, dery(r,p,ot))/card(ot); * display RYt, sumt, sumRY, sumtsq, meanRY, meant, sumRYt, bRY, aRY, estRY, RYrisk, bt, ft, preRY, deRY; display deRY; * , preRY, ARYrisk; * display bRY, avcbry, avlbry, aRY, avdery; *------------------------------------------------------------------------------- * Quantify the trend in meat Yield by fitting a linear tend using regression analysis *------------------------------------------------------------------------------- Parameter RMYt sumt sumMY sumtsq meanMY meant sumMYt bMY aMY RAMYrisk RMYrisk estMY preMY pMY deMY; RMYt(r,p,ot) = RMY(r,p,ot)*ord(ot); sumt = sum(ot, ord(ot)); sumMY(r,p) = sum(ot, RMY(r,p,ot)); sumtsq = sum(ot, ord(ot)**2); meanMY(r,p) = sum(ot, RMY(r,p,ot))/card(ot); meant = sum(ot, ord(ot))/card(ot); sumMYt(r,p) = sum(ot, RMYt(r,p,ot)); bMY(r,p) = (sumMYt(r,p) - sumt*sumMY(r,p)/card(ot))/(sumtsq - sumt**2/card(ot)); aMY(r,p) = meanMY(r,p)-bMY(r,p)*meant; estMY(r,p,ot) = aMY(r,p) + bMY(r,p)*ord(ot); RMYrisk(r,p,ot) = RMY(r,p,ot)- estMY(r,p,ot); RAMYrisk(r,p) = sum(ot, abs(RMYRisk(r,p,ot)))/card(ot); * Forecast furture values * preRGM(r,p,yr)$ft(yr) = a(r,p) + b(r,p)*ord(yr); preMY(r,p,yr)$(yes$(ord(yr) > card(ot))) = aMY(r,p) + bMY(r,p)*ord(yr); * Detrended real GM deMY(r,p,ot) = PreMY(r,p,'2005') + RMYrisk(r,p,ot); * display RYt, sumt, sumRY, sumtsq, meanRY, meant, sumRYt, bRY, aRY, estRY, RYrisk, bt, ft, preRY, deRY; * display preMY; display aMY, bMY; *------------------------------------------------------------------------------- * Quantify the trend in real price by fitting a linear tend using regression analysis *------------------------------------------------------------------------------- Parameter RPricet sumRPrice meanRPrice sumRPricet bRPrice aRPrice RPricerisk estRPrice preRPrice pRPrice deRPrice ARPricerisk; RPricet(r,p,ot) = RPrice(r,p,ot)*ord(ot); sumRPrice(r,p) = sum(ot, RPrice(r,p,ot)); meanRPrice(r,p) = sum(ot, RPrice(r,p,ot))/card(ot); sumRPricet(r,p) = sum(ot, RPricet(r,p,ot)); bRPrice(r,p) = (sumRPricet(r,p) - sumt*sumRPrice(r,p)/card(ot))/(sumtsq - sumt**2/card(ot)); aRPrice(r,p) = meanRPrice(r,p) - bRPrice(r,p)*meant; estRPrice(r,p,ot) = aRPrice(r,p) + bRPrice(r,p)*ord(ot); RPricerisk(r,p,ot) = RPrice(r,p,ot) - estRPrice(r,p,ot); ARPricerisk(r,p) = sum(ot, abs(RPricerisk(r,p,ot)))/card(ot); * Forecast future values * preRPrice(r,p,yr)$ft(yr) = aRPrice(r,p) + bRPrice(r,p)*ord(yr); preRPrice(r,p,yr)$(yes$(ord(yr) > card(ot))) = aRPrice(r,p) + bRPrice(r,p)*ord(yr); * Detrended real GM deRPrice(r,p,ot) = PreRPrice(r,p,'2005') + RPricerisk(r,p,ot); * display RPricet, sumRPrice, meanRPrice, sumRPricet, bRPrice, aRPrice, estRPrice, RPricerisk, bt, ft, preRPrice, deRPrice; * display ARPricerisk; *------------------------------------------------------------------------------- * detrend the real MR and quantify the risk in MR *------------------------------------------------------------------------------- Parameter cpreFMR lpreFMR RMRt run_nf deRMR lpreRGM ARMRrisk sumt sumRGM sumtsq meanRGM meant sumRGMt risk b a sumrisk estRGM preRMR prgm dergm RMRrisk; RMRt(r,p,ot) = RMR(r,p,ot)*ord(ot); sumRGM(r,p) = sum(ot, RMR(r,p,ot)); meanRGM(r,p) = sum(ot, RMR(r,p,ot))/card(ot); sumRGMt(r,p) = sum(ot, RMRt(r,p,ot)); b(r,p) = (sumrgmt(r,p) - sumt*sumRGM(r,p)/card(ot))/(sumtsq - sumt**2/card(ot)); a(r,p) = meanRGM(r,p) - b(r,p)*meant; estRGM(r,p,ot) = a(r,p) + b(r,p)*ord(ot); RMRRisk(r,p,ot) = RMR(r,p,ot) - estRGM(r,p,ot); ARMRrisk(r,p) = sum(ot, abs(RMRrisk(r,p,ot)))/card(ot); * Forecast furture values i.e forming probability distribution * preRGM(r,p,yr)$ft(yr) = a(r,p) + b(r,p)*ord(yr); preRMR(r,p,yr)$(yes$(ord(yr) > card(ot))) = a(r,p) + b(r,p)*ord(yr); * Detrended real GM deRMR(r,p,ot) = (PreRMR(r,p,'2005') + RMRRisk(r,p,ot)); display deRMR, RMRRisk, ARMRrisk; * display ARPricerisk, ARYrisk, ARMRrisk; * display preRMR; * ,cpreFMR, lpreFMR; * display deRMR, preRMR; *------------------------------------------------------------------------------- * adjust for farm type level *------------------------------------------------------------------------------- * DEFINING THE RISK COMPONENT OF THE MODEL *------------------------------------------------------------------------------- Parameter ECY ECY1 ELY EY EMY EPrice BX EGMR ECGMR ELGMR ECNMR ELNMR GM AvedeRY tAvedeRY CovGMR VarGMR TVarGMR StDGMR tstdgmr ECRGMR ELRGMR ERY ERMR preFECY preFEMY preFELY CovRMR VarRMR TVarRMR EFMR EFCY EFLY STDRMR tSTDRMR ERMY FECY FELY FEMY FECMR FELMR FECNMR FELNMR; * modeling expected price * 1. expectation models - e.g i. adaptive expectation models such that producers' * expectation of price in year t may be formed from a weighted average of prices * in previous years (time series of previous prices * ii. rational expecations - producers use all worthowhile information to form * price expectation e.g past prices, future prices for the time of harvest * 2. adjustment models - once producers are subjectively certian of price, * they may adjust output slowly beause of causiton, inertia, or costs of making adjustments * Definition: The variance-covariance matrix shows the variances and covariances * between a number of different market variables. * check that mean of the 1994-2004 is realistic otherwise compare with using moving averages * deRY(r,p,ot), deRPrice(r,p,ot), deRGM(r,p,ot); * expected price EPrice(r,p) = sum(ot, deRPrice(r,p,ot))/card(ot); * Expected regional yield ERY(r,p) = sum(ot, deRY(r,p,ot))/card(ot); * expected regional meat yield ERMY(r,p) = sum(ot, deMY(r,p,ot))/card(ot); * Expected farm leve yield * Adjust regional data to farm-level factor FECY(r,f,t,p)$cp(p) = ERY(r,p) *CTfactor(r,f,t,p); FELY(r,f,p)$ap(p) = ERY(r,p) *LTfactor(r,f,p); FEMY(r,f,p)$ap(p) = ERMY(r,p)*LTfactor(r,f,p); * projected farm level marginal revenue cpreFMR(r,f,t,p,yr)$cp(p) = preRMR(r,p,yr)$cp(p)*CTfactor(r,f,t,p); lpreFMR(r,f,p,yr)$ap(p) = preRMR(r,p,yr)$ap(p)*LTfactor(r,f,p); *expected regional marginal revenue ERMR(r,p) = sum(ot, deRMR(r,p,ot))/card(ot); FECMR(r,f,t,p)$cp(p) = FECY(r,f,t,p)*Eprice(r,p) + byprod(r,p) + policy_var(r,'p_sup'); FELMR(r,f,p) $ap(p) = FELY(r,f,p) *Eprice(r,p) + byprod(r,p) + policy_var(r,'p_sup'); FECNMR(r,f,t,p)$(cbr(r,f,t,p) <> 0) = FECMR(r,f,t,p)$cp(p) - RCDAVC1(r,t,p); FELNMR(r,f,p) $ap(p) = FELMR(r,f,p)$ap(p) - RLDAVC1(r,p); * covarnace of marginal revenue for each farm type in each region CovRMR(r,p,p1) = sum(ot, (deRMR(r,p1,ot) - ERMR(r,p1))*(deRMR(r,p,ot) - ERMR(r,p)))/card(ot); * varnace of marginal revenue for each farm type in each region VarRMR(r,p,p) = sum(ot, (deRMR(r,p,ot) - ERMR(r,p))*(deRMR(r,p,ot) - ERMR(r,p)))/card(ot); * total variance of marginal revenue for each farm type in each region TVarRMR(r) = sum(p, sum(ot, (deRMR(r,p,ot) - ERMR(r,p))*(deRMR(r,p,ot) - ERMR(r,p)))/card(ot)); * standard deviation of marginal revenue for each farm type in each region STDRMR(r,p,p) = sqrt(sum(ot, (deRMR(r,p,ot) - ERMR(r,p))*(deRMR(r,p,ot) - ERMR(r,p)))/card(ot)); * total standard deviation of marginal revenue for each farm type in each region tSTDRMR(r) = sum(p, sqrt(sum(ot, (deRMR(r,p,ot) - ERMR(r,p))*(deRMR(r,p,ot) - ERMR(r,p)))/card(ot))); * display EPrice, ECY, EY, ELY, EMY, ECGMR, ELGMR, ECNMR, ELNMR, CovGmr, VarGMR; * display EPrice, ERY, ERMR, CovRMR; * VarRMR, TVarRMR, STDRMR, tSTDRMR * display FECY, FELY, FEMY; display RCDAVC1, RLDAVC1, FECMR, FECNMR, FELMR, FELNMR, ERMR, CovRMR, deRY, ery; *$exit *=============================================================================== * break CEC data down into farm-level by technology with enterprise budget data. Parameter fpro 'bass supply by farm type' rbpro 'base supply by region' cbpro 'base supply by technology' flevel 'activity level by farm type' rlevel 'activity level by region' clevel 'activity level by technology' rtbal 'trade balance' diff1 'difference between CEC data and model data on production' diff2 'difference between CEC data and model data on trade balance' btbal defbtbal defss_base_model deftbal_base_model diff; fpro(r,f,p) = sum(t, cbr(r,f,t,p)$cp(p)*FECY(r,f,t,p)*nf(r,f)) + lbr(r,f,p)$ap(p)*FEMY(r,f,p)*nf(r,f); rbpro(r,p) = sum((f,t), cbr(r,f,t,p)$cp(p)*FECY(r,f,t,p)*nf(r,f)) + sum(f,lbr(r,f,p)$ap(p)*FEMY(r,f,p)*nf(r,f)); defss_base_model(r,p) = (rbpro(r,p) - rpro(r,p))/rpro(r,p)*100; cbpro(r,f,t,p) = cbr(r,f,t,p)$cp(p)*FECY(r,f,t,p)*nf(r,f); flevel(r,f,p) = sum(t, cbr(r,f,t,p)$cp(p)) + lbr(r,f,p)$ap(p); rlevel(r,p) = sum((f,t), cbr(r,f,t,p)$cp(p)) + sum(f,lbr(r,f,p)$ap(p)); clevel(r,f,t,p) = cbr(r,f,t,p)$cp(p); btbal(r,p) = rpro(r,p) - rcc(r,p); defbtbal(r,p) = (btbal(r,p) - rpx(r,p))/rpx(r,p)*100; rtbal(r,p) = rbpro(r,p)- rcc(r,p); deftbal_base_model(r,p) = (rtbal(r,p) - rpx(r,p))/rpx(r,p)*100; diff(r,p) = rpro(r,p) - rbpro(r,p); rpro(r,p) = rpro(r,p) - diff(r,p); rpx(r,p) = rpro(r,p) - rcc(r,p); diff1(r,p) = rpro(r,p) - rbpro(r,p); diff2(r,p) = rpx(r,p) - rtbal(r,p); display rpro, rbpro, rpx, rtbal, diff1, diff2; *=============================================================================== *$exit *=============================================================================== * C. CALIBRATION - PMP CONSTRAINED MODEL *=============================================================================== * 1st Stage - Linear Program - Constrained model * linear calibration program to calculate resource & PMP duals * ------------------------------------------------------------------------------ * From the nonlinear calibration proposition either or both * the cost or production function is nonlinear if calibration * constraints is needed (Howitt, 2005) * Here I assume the resource demand side of the profit function * is non-linear & I take the simplest general form * ie. quadratic Total Cost function from increasing cost resulting * from increase in resource use: TC = alpha(x) + 0.5gama(x)^2 * ------------------------------------------------------------------------------ Positive Variable cx 'crop activities levels' lx 'livestock activity levels' Art; Variable rap1 mad clpobj llpobj GGMRisk plpobj flpobj rlpobj nlpobj; Equation rcon1 'regional arable land constrain' rcon2 'regional irrigable land constraint' rcon3 'regional grassland constraint' rcon4 'regional land constraint' rcon5 'regional irrigation water constraint' rcon6 'regional labour constraint' Fcon1 'farmtype arable land upper limit' Fcon2 'farmtype irrigable land upper limit' Fcon3 'farmtype grassland upper limit' Fcon4 'farmtype land upper limit' Fcon5 'farm type irrigation water limit' Fcon6 'farm type operative capital limit' calibuc 'regional upper calibration constraints for crop production' caliblc 'regional lowwer calibration constraints for crop production' calibul 'regional Upper calibration constraints for livestock production' calibll 'regional lowwer calibration constraints for livestock production' CALIBpro lpobj_ prd_ rpbal 'regional product balance' npbal 'national product balance' rss_ 'regional production equation' nss_ rbal nbal clpobj_ llpobj_ Risk_ plpobj_ flpobj_ rlpobj_ nlpobj_ rtradebal ntradebal; *$onText * Poorly scaled models can cause excessive time to be taken in solving or can cause the solver to fail * Regional resources are scaled to 10000 units Rcon1.scale(r,'aland') = 10000; rcon2.scale(r,"irrigland") = 10000; Rcon3.scale(r,"gland") = 10000; Rcon4.scale(r,"land") = 10000; rcon5.scale(r,"iwater") = 10000000; Rcon6.scale(r,"labour") = 100000; * Farm-level resources are scaled to 10 units fcon1.scale(r,f,'aland') = 10; fcon2.scale(r,f,"irrigland") = 10; fcon3.scale(r,f,"gland") = 1; fcon4.scale(r,f,"land") = 10; fcon5.scale(r,f,"iwater") = 10000; * fcon6.scale(r,f,"labour") = 10; * Regional production, consumption and trade balance are scaled to 100,000 units cx.scale(r,f,'dry','wmaize') = 10; cx.scale(r,f,'dry','ymaize') = 10; cx.scale(r,f,'dry','wheat') = 10; cx.scale(r,'f1','irrig','sorghum') = 0.1; cx.scale(r,'f2','irrig','wheat') = 0.1; lx.scale(r,f,'beef-cattle') = 10; lx.scale(r,f,'dairy-cattle') = 1; lx.scale(r,f,'mutton-sheep') = 100; lx.scale(r,f,'pork-pig') = 1; lx.scale(r,f,'chicken-broilers') = 1000; lx.scale(r,f,'chicken-eggs') = 100; prd_.scale(r,p) = 100000; rss_.scale(r,p) = 100000; clpobj_.scale(r,f,t,p) = 1000; llpobj_.scale(r,f,p) = 1000; flpobj_.scale(r,f) = 100; nlpobj_.scale = 10000; * flpobj_.scale(r,f) = 1000; *$offText * 1. Resource restrictions * a. Regional land quality constraints Rcon1(r,"aland").. sum((f,t,p), cx(r,f,t,p)*cres(r,t,p,"aland")*nf(r,f)) =l= RLC(r,"aland"); rcon2(r,"irrigland")$t("irrig").. sum((f,p), cx(r,f,"irrig",p)*cres(r,"irrig",p,"irrigland")*nf(r,f)) =l= RLC(r,"irrigland"); Rcon3(r,"gland").. sum((f,p), lx(r,f,p)*lres(r,p,"gland")*nf(r,f)) =l=RLC(r,"gland"); Rcon4(r,"land").. sum((f,t,p), cx(r,f,t,p)*cres(r,t,p,"aland")*nf(r,f)) + sum((f,p), lx(r,f,p)*lres(r,p,"gland")*nf(r,f)) =l= RLC(r,"land"); rcon5(r,"iwater")$t("irrig").. sum((f,cp), cx(r,f,"irrig",cp)*cres(r,"irrig",cp,"iwater")*nf(r,f)) =l= RLC(r,"iwater"); Rcon6(r,"labour").. sum((f,t,p), cx(r,f,t,p)*cres(r,t,p,"labour")*nf(r,f)) + sum((f,p), lx(r,f,p)*lres(r,p,"labour")*nf(r,f)) =l= RLC(r,"labour"); * b. Farm-type land limits Fcon1(r,f,"aland").. sum((t,p), cx(r,f,t,p)*cres(r,t,p,"aland")) =l= FLC(r,f,"aland"); Fcon2(r,f,"irrigland")$t("irrig").. sum(cp, cx(r,f,"irrig",cp)*cres(r,"irrig",cp,"irrigland")) =l= FLC(r,f,"irrigland"); Fcon3(r,f,"gland").. sum(p, lx(r,f,p)*lres(r,p,"gland")) =l= FLC(r,f,"gland"); Fcon4(r,f,"land").. sum((t,p), cx(r,f,t,p)*cres(r,t,p,"aland")) + sum(p, lx(r,f,p)*lres(r,p,"gland")) =l= FLC(r,f,"land"); Fcon5(r,f,"iwater")$t("irrig").. sum(p, cx(r,f,"irrig",p)*cres(r,"irrig",p,"iwater")) =l= FLC(r,f,"iwater"); * Fcon6(r,f,'capital').. * sum((t,p), cx(r,f,t,p)*CDAVC(r,t,p)) + sum(p, lx(r,f,p)*LDAVC(r,p)) =l= FLC(r,f,'capital'); *------------------------------------------------------------------------------- * CALIBERATE CROPPING ACTIVITIES * calibration to base year land allocations *------------------------------------------------------------------------------- * 2. Calibration constraints (calibrating to either base year land allocation or supply) * a. Upper calibration constraints for crop activities calibuc(r,f,t,cp)$(CBR(r,f,t,cp)).. cx(r,f,t,cp) =l= CBR(r,f,t,cp)*1.0001; * b. Lower calibration constraints for crop activities caliblc(r,f,t,cp)$(CBR(r,f,t,cp) and FECNMR(r,f,t,cp) < 0).. cx(r,f,t,cp) =g= CBR(r,f,t,cp)*0.9999; * c. Upper calibration constraints livestock activities calibul(r,f,ap)$LBR(r,f,ap).. lx(r,f,ap) =l= LBR(r,f,ap)*1.0001; * d. Lower calibration constraints livestocks activities calibll(r,f,ap)$(LBR(r,f,ap) and FELNMR(r,f,ap) < 0).. lx(r,f,ap) =g= LBR(r,f,ap)*0.9999; *------------------------------------------------------------------------------- * data validation * Data validation guarantees that every data value is correct and accurate. * Aggregate production limits (i.e each region cannot produce more than what * the resources avilable, yield, number of farms could produce $sTitle Supply Constraints: * observed and total supply from eahc region is no greater than the total production capacities * Product balance i.e demand or sales of agricultural products prd_(r,p).. rpro(r,p) =l= sum((f,t), cx(r,f,t,p)$cp(p)*FECY(r,f,t,p)*nf(r,f)) + sum(f, lx(r,f,p)$ap(p)*FEMY(r,f,p)*nf(r,f)); $sTitle Demand/consumption - Production/Supply and Import-Export/Trade Balance rss_(r,p).. rcc(r,p) - (sum((f,t), cx(r,f,t,p)*FECY(r,f,t,p)*nf(r,f)) + sum(f, lx(r,f,p)*FEMY(r,f,p)*nf(r,f))) =l= rpx(r,p); *---------------------------------------------------------------------------------------------------------- * 4. Policy constraints? *$onText * Objective function clpobj_(r,f,t,p)$cp(p).. * add profits from cropping activities over tech (FECMR(r,f,t,p)$cp(p) - RCDAVC1(r,t,p))*cx(r,f,t,p)$cp(p) =e= clpobj(r,f,t,p); llpobj_(r,f,p)$ap(p).. * add profits from cropping activities over tech (FELMR(r,f,p)$ap(p) - RLDAVC1(r,p))*lx(r,f,p)$ap(p) =e= llpobj(r,f,p); plpobj_(r,f,p).. * add profits from cropping activities sum(t, clpobj(r,f,t,p)$cp(p)) * add profit from cropping activities + llpobj(r,f,p)$ap(p) =e= plpobj(r,f,p); flpobj_(r,f).. sum(p, plpobj(r,f,p)) * subtract revenue risk component - farm_fac(r,f,'rap')*(sum(p, sum(p1, (sum(t, cx(r,f,t,p)$cp(p)) + lx(r,f,p)$ap(p)) *CovRMR(r,p,p1)*(sum(t, cx(r,f,t,p1)$cp(p1)) + lx(r,f,p1)$ap(p1))))) * subtract agricultural land tax as fixed cost - FLC(r,f,'land')*policy_var(r,'l_tax')*policy_var(r,'l_price') * subtract water tariff as fixed cost - FLC(r,f,'iwater')*policy_var(r,'w_tariff') * add income from rentable farm land (adjust for depreciation or transaction cost) * Carolina Trivelli (1997) * 1. Increase in transaction costs in the output or input market * Decreases the real net rent received by the tenant/landowner * 2. Increase in landowners fix costs (depreciation, maintenance costs) * Reduces the net rent that could be obtained from land. Also induces renting instead of buying. * 3. Increase in searching, bargaining and transfer costs in the land market * Reduces the net rents that could be obtained from land. Also induces renting instead of buying. * 4. Increases in real interest rate * Changes the opportunity cost of investments, makes more attractive other sectors + (FLC(r,f,'dryland') - sum(p$cp(p), cx(r,f,'dry',p) *cres(r,'dry',p,'dryland'))) *policy_var(r,'dryrent') *0.6 + (FLC(r,f,'irrigland') - sum(p$cp(p), cx(r,f,'irrig',p)*cres(r,'irrig',p,'irrigland')))*policy_var(r,'irrigrent')*0.6 + (FLC(r,f,'gland') - sum(p$ap(p), lx(r,f,p) *lres(r,p,'gland'))) *policy_var(r,'grent') *0.6 =e= flpobj(r,f); rlpobj_(r).. sum(f, flpobj(r,f)) =e= rlpobj(r); nlpobj_.. sum(r, rlpobj(r)) =e= nlpobj; Model SARASdual / rcon1 rcon2 rcon3 rcon4 rcon5 rcon6 fcon1 fcon2 fcon3 fcon4 fcon5 * fcon6 calibuc caliblc calibul calibll * only necessary to arrive at yield level that match the activity level with * production data and enterprise budget data such that the data is consistent * and aids in calibration * prd_ * rss_ clpobj_ llpobj_ plpobj_ flpobj_ rlpobj_ nlpobj_ /; SARASdual.scaleOpt = 1; * SARASdual.optFile = 1; solve SARASdual using nlp maximizing nlpobj; * resolve with CONOPT in case the default NLP solver did not report dual values option nlp = CONOPT; solve SARASdual using nlp maximizing nlpobj; option nlp = %system.nlp%; *$exit *=============================================================================== * FIND THE OPTIMUM RISK ATTITUDE * this section is switched on to estimate risk aversion parameters after which * it is switched off *=============================================================================== * developing the set of feasible farm plans (E-V frontier) having the property * that variance is minimum for associated expected income level. *------------------------------------------------------------------------------- * developing the set of feasible farm plans (E-V frontier) having the property * that variance is minimum for associated expected income level. $onText Set raps 'risk aversion parameters' / 1*1 /; Alias (raps,rapp); * try while until level is equal observed levels; Parameter OUTPUT(r,f,*,RAPS) 'results from model runs with varying RAP' OUTPUT1(r,f,t,p,*,RAPS) COUTPUT LOUTPUT COUTPUT2 COUTPUT3 LOUTPUT2 LOUTPUT3 MOUTPUT FOUTPUT FFOUTPUT oprap p_var; * The small positive lower bound can be particularly useful in nonlinear * programming where functions may not be defined at zero. * It is sometimes also necessary to set the current level of a variable. * This is particularly true in nonlinear programming where it is advisable to * pick starting solutions because results may depend on initial variable values. For example, the statement * cx.l(r,f,t,p)$(CBR(r,f,t,p) > 0 ) = cbr(r,f,t,p); * lx.l(r,f,p)$(LBR(r,f,p) > 0 ) = lbr(r,f,p); loop(raps, farm_fac(r,'f1','rap') = farm_fac(r,'f1','rap') + 0.0000003; farm_fac(r,'f2','rap') = farm_fac(r,'f2','rap') + 0.00002; * f1.Rap + 0.0000003 * f2.Rap + 0.00002 * SARASdual.optFile = 1; solve SARASdual using nlp maximizing nlpobj; * p_var(r,f) = sum(p, sum(p1, sum(t, cx.l(r,f,t,p)*ECY(r,f,t,p)*CovGMR(r,p,p1)*cx.l(r,f,t,p)*ECY(r,f,t,p)))) * + (sum(p, sum(p1,lx.l(r,f,p)*ELY(r,f,p)*CovGMR(r,p,p1)*lx.l(r,f,p1)*ELY(r,f,p1)))); * OUTPUT(r,f,"OBJ",RAPS) = fOBJ.l(r,f); OUTPUT(r,f,"RAP",RAPS) = farm_fac(r,f,'rap'); COUTPUT2(r,f,t,p,RAPS) = cx.l(r,f,t,p); LOUTPUT2(r,f,p,RAPS) = lx.l(r,f,p); * COUTPUT3(r,f,t,p,"rho",RAPS) = abs(calibuc.m(r,f,t,p)); * LOUTPUT3(r,f,p,"rho",RAPS) = abs(calibul.m(r,f,p)); * COUTPUT3(r,f,t,p,'elas',RAPS)$(cbr(r,f,t,p) <> 0 or calibuc.l(r,f,t,p) <> 0) * = abs(((cx.l(r,f,t,p) - cbr(r,f,t,p))/(crho(r,f,t,p) - abs(calibuc.l(r,f,t,p)))) * * (crho(r,f,t,p)/cbr(r,f,t,p))); * LOUTPUT3(r,f,p,'elas',RAPS)$(lbr(r,f,p) <> 0 or calibul.l(r,f,p) <> 0) * = abs(((lx.l(r,f,p) - lbr(r,f,p))/(lrho(r,f,p) - abs(calibul.l(r,f,p)))) * * (lrho(r,f,p)/lbr(r,f,p))); OUTPUT(r,f,"MAD",RAPS) = sum(p, abs(sum(t, cbr(r,f,t,p)$cp(p)) + lbr(r,f,p)$ap(p) -sum(t, cx.l(r,f,t,p)$cp(p)) + lx.l(r,f,p)$ap(p)))/card(p); * COUTPUT(r,f,t,p,"cMAD",RAPS) = abs(cbr(r,f,t,p)$cp(p) - cx.l(r,f,t,p)$cp(p)); * LOUTPUT(r,f,p,"lMAD",RAPS) = abs(lbr(r,f,p)$ap(p) - lx.l(r,f,p)$ap(p)); * OUTPUT(r,f,'MAD',raps) = (sum((t,p), COUTPUT(r,f,t,p,"cMAD",RAPS)) + sum(p, LOUTPUT(r,f,p,"lMAD",RAPS)))/(card(cp)*card(t) + card(ap)); Output(r,f,'MAD',raps) = (sum((t,p), abs(cbr(r,f,t,p)$cp(p) - cx.l(r,f,t,p)$cp(p))) + sum(p, abs(lbr(r,f,p)$ap(p) - lx.l(r,f,p)$ap(p))))/(card(cp)*card(t) + card(ap)); * Output(r,f,'activity',raps) = sum((t,p), cx.l(r,f,t,p)$cp(p)) + sum(p, lx.l(r,f,p)$ap(p)); OUTPUT(r,f,"F",RAPS) = (sum((t,p), cbr(r,f,t,p)*abs(calibuc.m(r,f,t,p))) + sum(p, lbr(r,f,p)*abs(calibul.m(r,f,p))))/ (sum((t,p), cbr(r,f,t,p)*RCDAVC1(r,t,p)) + sum(p, lbr(r,f,p)*RLDAVC1(r,p))); * OUTPUT(r,f,"F",RAPS)= (sum((t,p), cbr(r,f,t,p)*abs(calibuc.m(r,f,t,p))) + sum(p, lbr(r,f,p)*abs(calibul.m(r,f,p))))/ * (sum((t,p), cbr(r,f,t,p)*RCDAVC(r,t,p)) + sum(p, lbr(r,f,p)*RLDAVC(r,p))); * FFOUTPUT(r,f,t,p,"FF",RAPS)$(CBR(r,f,t,p) > 0 and LBR(r,f,p) > 0) = (cbr(r,f,t,p)*abs(calibuc.m(r,f,t,p)) + lbr(r,f,p)*abs(calibul.m(r,f,p))) * / (cbr(r,f,t,p)*RCDAVC(r,t,p) + lbr(r,f,p)*RLDAVC(r,p)); * OUTPUT(r,f,'Mrisk',raps) = sum(p, -2*Rap(r,f)*(sum(t, cx.l(r,f,t,p)) + lx.l(r,f,p))*CovGMR(r,p,p)); * OUTPUT(r,f,"unobser",RAPS) = sum((t,p), abs(calibuc.m(r,f,t,p))) + sum(p, abs(calibul.m(r,f,p))); * OUTPUT(r,f,"unobser",RAPS) = (sum((t,p), cbr(r,f,t,p)*abs(calibuc.m(r,f,t,p))) + sum(p, lbr(r,f,p)*abs(calibul.m(r,f,p)))); * OUTPUT(r,f,"obser",RAPS) = (sum((t,p), cbr(r,f,t,p)*RCDAVC(r,t,p)) + sum(p, lbr(r,f,p)*RLDAVC(r,p))); * I notice that F decreases with yield. then what is the relationship between yield and theta? * OUTPUT(r,f,"MEAN",RAPS) = sum((t,p), FECY(r,f,t,p)*cx.l(r,f,t,p)) + sum(p, FELY(r,f,p)*lx.l(r,f,p)); * OUTPUT(r,f,"VAR",RAPS) = (sum(p, sum(p1, sum(t, cx.l(r,f,t,p)$cp(p)) + lx.l(r,f,p)$ap(p)*CovRMR(r,p,p1) * * sum(t, cx.l(r,f,t,p1)$cp(p1)) + lx.l(r,f,p1)$ap(p1)))); * OUTPUT(r,f,"STD",RAPS)=SQRT(p_VAR(r,f)); * OUTPUT(r,f,"aSHADPRICE",RAPS) = fcon1.m(r,f,'aland'); * OUTPUT(r,f,"iHADPRICE",RAPS) = fcon2.m(r,f,'irrigland'); * OUTPUT(r,f,"gSHADPRICE",RAPS) = fcon3.m(r,f,'gland'); * OUTPUT(r,f,"lSHADPRICE",RAPS) = fcon4.m(r,f,'land'); * OUTPUT(r,f,"aIDLE",RAPS) = FLC(r,f,'aland') - fcon1.l(r,f,'aland'); * OUTPUT(r,f,"iIDLE",RAPS) = FLC(r,f,'irrigland') - fcon2.l(r,f,'irrigland'); * OUTPUT(r,f,"gIDLE",RAPS) = FLC(r,f,'gland') - fcon3.l(r,f,'gland'); * OUTPUT(r,f,"lIDLE",RAPS) = FLC(r,f,'land') - fcon4.l(r,f,'land'); * Thus, for example, if some statements are to be executed only if the last solve terminated optimal, the following sequence would be appropriate: * Model plan / all /; * solve plan using lp minimizing cost; * if((plan.modelStat = 1), * statements * ); ); * RAP is the risk aversion parameter value * cx and lx are the activities levels * obj gives the objective function value * mean gives expected income * var gives the variance of income * std give the standard deviation of income * shadprice gives the shadow price on the farmtype land constraint * then what is the farm types' preference? * this point is described by the farmer's EV utility function; however this * parameter is not known: * solution: since income/price variation is not the only source of uncertainty * that determines farmers choice (Hazell, 1986) (other things inlcude policy, * resource constraints; ,etc. ) therefore, the Rap at which the mean absolute deviation (MAD) * of the solutions values from the base perido values is the minimum without calibration constraints * is considered as the efficient RAP and used in the further analysis; * ); * RAP is the risk aversion parameter value * cx and lx are the activities levels * obj gives the objective function value * mean gives expected income * var gives the variance of income * std give the standard deviation of income * shadprice gives the shadow price on the farmtype land constraint * then what is the farm types' preference? * this point is described by the farmer's EV utility function; however this * parameter is not known: * Solutions * One may estimate a risk avrsion parameter such that the difference between * observed behaviour and the model solution is minimized * (as in Brink and McCarl 1979) or Hazell et al. (1983) * 1. Since revenue variation is not the only source of uncertainty * that determines farmers choice (Hazell, 1986) (other things inlcude policy, * resource constraints; ,etc. ) therefore, the Rap at which the mean absolute deviation (MAD) * of the solutions values and the base period values is the minimum without calibration constraints * is considered as the efficient RAP and used in the further analysis; * rap for whcih athe aggregate acreage difference was the smallest. * where several rap gievs the sam agreage dfiifce, the lowest value was chosen * if there was no dffi in acreage mix of various crops display OUTPUT; * display OUTPUT, calibuc.l, calibul.l, rap; display cbr cx.l lbr lx.l OUTPUT * COUTPUT * LOUTPUT * COUTPUT2 * COUTPUT3 * LOUTPUT2 * LOUTPUT3 ; * MOUTPUT * FOUTPUT * FFOUTPUT; *------------------------------------------------------------------------------- * insert optimum rap and continue *------------------------------------------------------------------------------- $offText *$exit Parameter level, level1; level(r,f,p) = sum(t, cx.l(r,f,t,p)$cp(p)) + lx.l(r,f,p)$ap(p); level1(r,f,p1) = sum(t, cx.l(r,f,t,p1)$cp(p1)) + lx.l(r,f,p1)$ap(p1); * display level, level1, cx.l, lbr; *$exit Parameter pro; pro(r,p) = (sum((f,t)$cp(p), cbr(r,f,t,p)$cp(p)*FECY(r,f,t,p)*nf(r,f)) + sum(f$ap(p), lbr(r,f,p)$ap(p)*FEMY(r,f,p)*nf(r,f))); * display EY, CBR, rpro, PRO, EMY, LBR; *------------------------------------------------------------------------------- *$exit Parameter idle, idlecost; idle(r,f) = FLC(r,f,'land') - (sum((t,p)$cp(p), cx.l(r,f,t,p)) + sum(p$ap(p), lx.l(r,f,p)*lres(r,p,"gland"))); * idlecost(r,f) = (FLC(r,f,'land') -(sum((t,p)$cp(p), cx.l(r,f,t,p)) * + sum(p$ap(p), lx.l(r,f,p)*lres(r,p,"gland"))))*policy_var(r,'r_tax'); * display idle, idlecost; *$exit Parameter c_ss t_ss f_ss r_ss n_ss lss cprof lprof, varcov; * c_ss(r,f,t,p) = cx.l(r,f,t,p)*CY(r,f,t,p); * t_ss(r,f,p) = sum(t, cx.l(r,f,t,p)*CY(r,f,t,p)); * f_ss(r,f) = sum((p,t), cx.l(r,f,t,p)*CY(r,f,t,p)); * r_ss(r) = sum((f,t,p), cx.l(r,f,t,p)*CY(r,f,t,p)); * n_ss = sum((r,f,t,p), cx.l(r,f,t,p)*CY(r,f,t,p)); * cprof(r,f,t,p) = ((Price_sup(r,p) + MeanPrice(r,p))*CY(r,f,t,p) - CDAVC(r,f,t,p))*cx.l(r,f,t,p); * lss(r,f,p) = lx.l(r,f,p)*LY(r,f,p); * lprof(r,f,p) = ((Price_sup(r,p) + MeanPrice(r,p))*LY(r,f,p) - LDAVC(r,f,p))*lx.l(r,f,p); * display c_ss, t_ss, f_ss, r_ss, n_ss, lss, cprof, lprof; *$exit Parameter llx; llx(r,f,ap) = round(lx.l(r,f,ap)); option llx:0; lx.l(r,f,ap) = llx(r,f,ap); * display cx.l, cx.m, llx, lx.m, nlpobj.l; Parameter css, lss; css(r,f,p) = sum(t, cx.l(r,f,t,p)) + lx.l(r,f,p); * display css, covprice; *$exit Parameter p_covar 'the variance of farm profit at regional level' p_var; p_covar(r,f) = sum(p, sum(p1, (sum(t, cx.l(r,f,t,p)$cp(p)) + lx.l(r,f,p)$ap(p))*CovRMR(r,p,p1) * (sum(t, cx.l(r,f,t,p1)$cp(p1)) + lx.l(r,f,p1)$ap(p1)))); p_var(r,f) = sum(p, sum(p1, (sum(t, cx.l(r,f,t,p)$cp(p)) + lx.l(r,f,p)$ap(p))*CovRMR(r,p,p) * (sum(t, cx.l(r,f,t,p)$cp(p)) + lx.l(r,f,p)$ap(p)))); * display p_covar, p_var;; *------------------------------------------------------------------------------- *$exit *=============================================================================== * 2nd Stage OF PMP CALIBRATION *=============================================================================== * Linear program to calculate conefficients of PMP Quadractic * cost function using the dual values of hectare planted * with the data base on average cost function * to uniquely derive the calibration cost function parameters * 1 (i) alpha = RDAVC - lambda * (ii) gama = 2*lambda(2i)/X.l * (iii) elas = (davc + lam)/(gam*x.l) (Heckelei, 2003; Howitt, 2005) * 2 (i) alpha = DAVC * (ii) gama = lambda(2i)/X.l * (iii) elas = e=lam/(gam*x.l) = 1 Howitt (1998) * 3 (i) alpha = 0 * (ii) gama = (DAVC + lambda(2i))/X.l * (iii) elas = e=lam/(gam*x.l) (Paris and Howitt 1998) * 3 Derive the elasticity of the marginal cost curve from theory/economics of * farm household decision making and the relative differences and risk of the * gross margin of each activity and farming system especially the risk preferences, * resource productivity and market access *------------------------------------------------------------------------------- Parameter cLam 'PMP dual values (shadow prices on the activity constraints)' cGam 'const function slope crops' cAlpha 'cost function intercept crops' lLam 'PMP dual values (shadow prices on the activity constraints)' lGam 'const function slope stocks' lAlpha 'cost function intercept stocks'; *------------------------------------------------------------------------------- *initialise constants cLam(r,f,t,p)$cp(p) = 0; lLam(r,f,p)$ap(p) = 0; *If calibrated to land alloaction or number of animal levels clam(r,f,t,p)$(cbr(r,f,t,p) <> 0) = calibuc.m(r,f,t,p); llam(r,f,p) $(lbr(r,f,p) <> 0) = calibul.m(r,f,p); *------------------------------------------------------------------------------- $onText * Early specification - By Howitt, 1995; Howitt and Mean 1983; Bauer and Kasnakodlu 1990; * Schmitz 1994; Arfini and Paris 1995 * However, Evidence from Cypris (2000) shows that the approach causes strong overreactions * to changes in economic incentivesi.e high implied elasticities cGam(r,f,t,p)$(cbr(r,f,t,p) <> 0) = clam(r,f,t,p)/cbr(r,f,t,p); lGam(r,f,p) $(lbr(r,f,p) <> 0) = llam(r,f,p) /lbr(r,f,p); cAlpha(r,f,t,p)$(CBR(r,f,t,p) <> 0) = RCDAVC1(r,t,p); lAlpha(r,f,p)$(lBR(r,f,p) <> 0) = RLDAVC1(r,p); * Using this, the elasticity will 1.0 $offText $onText * By (Paris 1988) * Although this is generally more realistic property of (aggregate) producer response. * However,the quantitative specification remains arbitrary cGam(r,f,t,p)$(cbr(r,f,t,p) <> 0) = (RCDAVC1(r,t,p)+clam(r,f,t,p))/cbr(r,f,t,p); lGam(r,f,p)$(lbr(r,f,p) <> 0) = (RLDAVC1(r,p)+llam(r,f,p))/lbr(r,f,p); cAlpha(r,f,t,p) = 0; lAlpha(r,f,p) = 0; * Using this, the elasticity will be 1.0 $offText $onText * Average cost approach * By Heckelei and Britz (2000) cGam(r,f,t,p)$(CBR(r,f,t,p) <> 0) = 2*clam(r,f,t,p) / cbr(r,f,t,p)$cp(p); lGam(r,f,p)$(lBR(r,f,p) <> 0) = 2*llam(r,f,p) / lbr(r,f,p)$ap(p); cAlpha(r,f,t,p)$(CBR(r,f,t,p) <> 0) = RCDAVC1(r,t,p) - cLam(r,f,t,p); lAlpha(r,f,p)$(lBR(r,f,p) <> 0) = RLDAVC1(r,p) - lLam(r,f,p); * using this elasticity will be 0.5 $offText * Horner et. al. (1992) gives the idea that prefered activities is more elastic * if the shadow price of an activity constraint is small compared to observed variable * cost. On the other hand, supply is less elastic if the shadow price of an activity * is large compared to observed variable cost. * Check the elasticity of each activity *----------------------------------------------------------------------------------------------- * Calibration using supply elasticity estimates *$onText Table elas(r,f,p) 'prior econometric estimates of supply elasticities' * from ... Wmaize YMaize Wheat Soya Sorghum sunflower FState.f1 0.66 0.57 1.14 0.35 0.55 1.15 * assuming f2 is less reactive than f1 base on lower lever of asset especially land and operating capital * the ratio is similar to asset ratio FState.f2 0.19 0.16 0.33 0.10 0.16 0.33 + Beef_Cattle mutton_Sheep pork_Pig Broilers_chicken Layers_eggs Dairy_cattle FState.f1 0.074 0.101 0.170 0.276 0.123 0.112 * FState.f1 0.32 0.41 0.4 0.75 0.328 0.32 * assuming f2 is less reactive than f1 FState.f2 0.037 0.051 0.085 0.138 0.062 0.056; * FState.f2 0.09 0.12 0.11 0.21 0.094 0.09 * Check the elasticity of each activity cGam(r,f,t,p) $(cbr(r,f,t,p) <> 0) = (clam(r,f,t,p) + RCDAVC1(r,t,p))/(elas(r,f,p)*cbr(r,f,t,p)$cp(p)); lGam(r,f,p) $(lbr(r,f,p) <> 0) = (llam(r,f,p) + RLDAVC1(r,p)) /(elas(r,f,p)*lbr(r,f,p)$ap(p)); cAlpha(r,f,t,p)$(cbr(r,f,t,p) <> 0) = ((clam(r,f,t,p) + RCDAVC1(r,t,p))*(elas(r,f,p)-1))/elas(r,f,p); lAlpha(r,f,p) $(lbr(r,f,p) <> 0) = ((llam(r,f,p) + RLDAVC1(r,p)) *(elas(r,f,p)-1))/elas(r,f,p); * RLDAVC1(r,p) + lLam(r,f,p) - lgam(r,f,p)*lbr(r,f,p)$ap(p); *$offText *----------------------------------------------------------------------------------------------- display clam, llam, RCDAVC1, calpha, lalpha, cgam, lgam, RLDAVC1; *$exit *=============================================================================== * 3rd stage - Unconstrained non-linear caliberated model *=============================================================================== * Using the values of alphe and gama to specify the function * & use the function to generate the base solution Variable ncx 'nonlinear crop activities' nlx 'nonlinear livestock activities' nlpobj 'nonliner objective function value' ntbal nclpobj nllpobj nplpobj nflpobj nrlpobj nnlpobj; Positive Variable ncx, nlx * nclpobj * nllpobj * nplpobj * nflpobj * nrlpobj ; Equation nrcon1 'regional arable constraints (arable land shadow prices at region level)' nrcon2 'regional irrigable land constraints (irrigable land shadow prices at region level)' nrcon3 'regional grazing land constraints (grazing land shadow prices at region level)' nrcon4 'regional land constraints (land shadow prices at region level)' nrcon5 nrcon6 nFcon1 'farm type arable land upper constraints (arable land shadow prices at farm type level)' nFcon2 'farm type irrigable land upper constrains (irrigable land shadow prices at farm type level)' nFcon3 'farm type grazing land upper constraints (grazing land shadow prices at farm type level)' nFcon4 'farm type land upper constraints (land shadow prices at farm type level)' nlpgm 'total farm proft' nfcon5 nFcon6 nlpobj_ nclpobj_ nllpobj_ nplpobj_ nflpobj_ nrlpobj_ nnlpobj_ tlanduse; * --- Regional resources are scaled to 10000 units nRcon1.scale(r,'aland') = 10000; nrcon2.scale(r,"irrigland") = 10000; nRcon3.scale(r,"gland") = 10000; nRcon4.scale(r,"land") = 10000; nrcon5.scale(r,"iwater") = 10000000; nRcon6.scale(r,"labour") = 100000; * --- Farm-level resources are scaled to 10 units nfcon1.scale(r,f,'aland') = 10; nfcon2.scale(r,f,"irrigland") = 10; nfcon3.scale(r,f,"gland") = 1; nfcon4.scale(r,f,"land") = 10; nfcon5.scale(r,f,"iwater") = 10000; * fcon6.scale(r,f,"labour") = 10; * --- Regional production, consumption and trade balance are scaled to 100,000 units ncx.scale(r,f,'dry','wmaize') = 10; ncx.scale(r,f,'dry','ymaize') = 10; ncx.scale(r,f,'dry','wheat') = 10; ncx.scale(r,'f1','irrig','sorghum') = 0.1; ncx.scale(r,'f2','irrig','wheat') = 0.1; nlx.scale(r,f,'beef-cattle') = 10; nlx.scale(r,f,'dairy-cattle') = 1; nlx.scale(r,f,'mutton-sheep') = 100; nlx.scale(r,f,'pork-pig') = 1; nlx.scale(r,f,'chicken-broilers') = 1000; nlx.scale(r,f,'chicken-eggs') = 100; nclpobj_.scale(r,f,t,p) = 1000; nllpobj_.scale(r,f,p) = 1000; nflpobj_.scale(r,'f2') = 100; nflpobj_.scale(r,'f1') = 100000; nnlpobj_.scale = 10000; * a. Regional land quality constraints nRcon1(r,"aland").. sum((f,t,p), ncx(r,f,t,p)*cres(r,t,p,"aland")*nf(r,f)) =l= RLC(r,"aland"); nrcon2(r,"irrigland")$t("irrig").. sum((f,p), ncx(r,f,"irrig",p)*cres(r,"irrig",p,"irrigland")*nf(r,f)) =l= RLC(r,"irrigland"); nRcon3(r,"gland").. sum((f,p), nlx(r,f,p)*lres(r,p,"gland")*nf(r,f)) =l= RLC(r,"gland"); nRcon4(r,"land").. sum((f,t,p), ncx(r,f,t,p)*cres(r,t,p,"aland")*nf(r,f)) + sum((f,p), nlx(r,f,p)*lres(r,p,"gland")*nf(r,f)) =l= RLC(r,"land"); nrcon5(r,"iwater")$t("irrig").. sum((f,p), ncx(r,f,"irrig",p)*cres(r,"irrig",p,"iwater")*nf(r,f)) =l= RLC(r,"iwater"); nRcon6(r,"labour").. sum((f,t,p), ncx(r,f,t,p)*cres(r,t,p,"labour")*nf(r,f)) + sum((f,p),nlx(r,f,p)*lres(r,p,"labour")*nf(r,f)) =l= RLC(r,"labour"); * b. Farm-type land limits nFcon1(r,f,"aland").. sum((t,p), ncx(r,f,t,p)*cres(r,t,p,"aland")) =l= FLC(r,f,"aland"); nFcon2(r,f,"irrigland")$t("irrig").. sum(p, ncx(r,f,"irrig",p)*cres(r,"irrig",p,"irrigland")) =l= FLC(r,f,"irrigland"); nFcon3(r,f,"gland").. sum(p, nlx(r,f,p)*lres(r,p,"gland")) =l= FLC(r,f,"gland"); nFcon4(r,f,"land").. sum((t,p), ncx(r,f,t,p)*cres(r,t,p,"aland")) + sum(p, nlx(r,f,p)*lres(r,p,"gland")) =l= FLC(r,f,"land"); nFcon5(r,f,"iwater")$t("irrig").. sum(p, ncx(r,f,"irrig",p)*cres(r,"irrig",p,"iwater")) =l= FLC(r,f,"iwater"); * nFcon6(r,f,'capital').. * sum((t,p), ncx(r,f,t,p)*CDAVC(r,t,p)) + sum(p, nlx(r,f,p)*LDAVC(r,p)) =l= FLC(r,f,'capital'); *------------------------------------------------------------------------------- * 4. Policy constraints? * Objective function nclpobj_(r,f,t,p)$cp(p).. ( * add profits from cropping activities over tech * FECMR(r,f,t,p) (FECY(r,f,t,p)*Eprice(r,p) + byprod(r,p)+ policy_var(r,'p_sup')) - (calpha(r,f,t,p) * (sum(res, cres(r,t,p,res)*cost(r,p,res)) * + policy_var(r,'interest')*(sum(res, cres(r,t,p,res)*cost(r,p,res))) * - policy_var(r,'d_rebate')* policy_var(r,'d_per')*cres(r,t,p,'fuel')*cost(r,p,'fuel')) * * (IPPI(r,'2004')/(sum(it, IPPI(r,it))/card(it)))+ * cLam(r,f,t,p) - cgam(r,f,t,p)*cbr(r,f,t,p)$cp(p) + 0.5*cgam(r,f,t,p)*ncx(r,f,t,p)))*ncx(r,f,t,p) =e= nclpobj(r,f,t,p)$cp(p); nllpobj_(r,f,p)$ap(p).. ( * add profits from cropping activities over tech * FELMR(r,f,p) (FELY(r,f,p)*Eprice(r,p) + byprod(r,p)+ policy_var(r,'p_sup')) - (lalpha(r,f,p) * (sum(res, lres(r,p,res)*cost(r,p,res)) * + policy_var(r,'interest')*(sum(res, lres(r,p,res)*cost(r,p,res))) * - policy_var(r,'d_rebate')* policy_var(r,'d_per')*lres(r,p,'fuel')*cost(r,p,'fuel')) * * (IPPI(r,'2004')/(sum(it, IPPI(r,it))/card(it))) * + lLam(r,f,p) - lgam(r,f,p)*lbr(r,f,p)$ap(p) + 0.5*lgam(r,f,p)*nlx(r,f,p)))*nlx(r,f,p) =e= nllpobj(r,f,p); * gross margin at farm level nplpobj_(r,f,p).. * add profits from cropping activities sum(t, nclpobj(r,f,t,p)$cp(p)) * add profit from cropping activities + nllpobj(r,f,p)$ap(p) =e= nplpobj(r,f,p); nflpobj_(r,f).. sum(p, nplpobj(r,f,p)) * subtract revenue risk component - farm_fac(r,f,'rap')*(sum(p, sum(p1, (sum(t, ncx(r,f,t,p)$cp(p)) + nlx(r,f,p)$ap(p))*CovRMR(r,p,p1) * (sum(t, ncx(r,f,t,p1)$cp(p1)) + nlx(r,f,p1)$ap(p1))))) * subtract agricultural land tax as a fixed cost - FLC(r,f,'land')*policy_var(r,'l_tax')*policy_var(r,'l_price') * subtract water tariff (to show whether farmers will choose to irrigate or not) - FLC(r,f,'iwater')*policy_var(r,'w_tariff') * add income from rentable property and adjust for depreciation or transaction cost (40%) * Carolina Trivelli (1997) * 1. Increase in transaction costs in the output or input market * Decreases the real net rent received by the tenant/landowner * 2. Increase in landowners fix costs (depreciation, maintenance costs) * Reduces the net rent that could be obtained from land. Also induces renting instead of buying. * 3. Increase in searching, bargaining and transfer costs in the land market * Reduces the net rents that could be obtained from land. Also induces renting instead of buying. * 4. Increases in real interest rate * Changes the opportunity cost of investments, makes more attractive other sectors + (FLC(r,f,'dryland') - sum(p$cp(p), ncx(r,f,'dry',p)*cres(r,'dry',p,'dryland'))) * policy_var(r,'dryrent') *0.6 + (FLC(r,f,'irrigland') - sum(p$cp(p), ncx(r,f,'irrig',p)*cres(r,'irrig',p,'irrigland')))* policy_var(r,'irrigrent')*0.6 + (FLC(r,f,'gland') - sum(p$ap(p), nlx(r,f,p) *lres(r,p,'gland'))) * policy_var(r,'grent') *0.6 =e= nflpobj(r,f); nrlpobj_(r).. sum(f, nflpobj(r,f)) =e= nrlpobj(r); nnlpobj_.. sum(r, nrlpobj(r)) =e= nnlpobj; *--------------------------------------------------------------------------------- * The small positive lower bound can be particularly useful in nonlinear * programming where functions may not be defined at zero. * Any variable initialization to meaning values ???????? * this lower bound assumes farmers cannot quit. * It's better to leave it at zero since farmers have options of leasing farm land * if found not profitable to produce ncx.l(r,f,t,p) = 0; nlx.l(r,f,p) = 0; * setting initial conditions? * It is sometimes also necessary to set the current level of a variable. * This is particularly true in nonlinear programming where it is advisable to * pick starting solutions because results may depend on initial variable values. * cx.l(r,f,t,p)$(CBR(r,f,t,p) > 0) = cbr(r,f,t,p); * lx.l(r,f,p) $(LBR(r,f,p) > 0) = lbr(r,f,p); * ncx.l(r,f,t,p)$(CBR(r,f,t,p) > 0 ) = cbr(r,f,t,p); * nlx.l(r,f,p) = lbr(r,f,p); * Any bound to some variables to avoid numerical difficulties ?????? * Parameter tlanduse; * ncx.up(r,f,t,p) = 100*cbr(r,f,t,p); * nlx.up(r,f,p) = 100*lbr(r,f,p); Model SARASprimal / nrcon1 nrcon2 nrcon3 nrcon4 nrcon5 nrcon6 nfcon1 nfcon2 nfcon3 nfcon4 nfcon5 * nfcon6 * nrss_ * nprd_ nclpobj_ nllpobj_ nplpobj_ nflpobj_ nrlpobj_ nnlpobj_ /; *-------------------------------------------------------------------------------- SARASprimal.scaleOpt = 1; * SARASprimal.optFile = 1; solve SARASprimal using nlp maximizing nnlpobj; display cbr, ncx.l, lbr, nlx.l; *------------------------------------------------------------------------------- *=============================================================================== *?* Results - Check calibration by comparing base allocation with optimal allocation *=============================================================================== Parameter LPerdif 'percent diffference in livestock activity' CPerdif 'percent diffference in cropping activitity' Perdif; CPerdif(r,f,t,p)$cbr(r,f,t,p) = (ncx.l(r,f,t,p) - cbr(r,f,t,p))/cbr(r,f,t,p)*100; CPerdif(r,f,t,p)$(abs(CPerdif(r,f,t,p) <= .0001)) = 0; LPerdif(r,f,p) $lbr(r,f,p) = (nlx.l(r,f,p) - lbr(r,f,p)) /lbr(r,f,p) *100; LPerdif(r,f,p) $(abs(LPerdif(r,f,p) <= .0001)) = 0; display lperdif, cperdif; *------------------------------------------------------------------------------- *$exit Parameter nbas5_rss cbas5_rss m_cdd 'model solution - crop activity levels' m_rcdd m_ldd 'model solution - stock activity levels' m_rldd o_cdd 'observed - activity level - crop production' o_ldd 'observed - activity level - stock production' def_cdd 'percentage difference observed and optimal solution - crops' def_ldd 'percentage difference observed and optimal solution - stocks' o_fss 'observed - supply - farm level' m_fss 'model solution supply - farm level' o_rss 'observed - supply - regional' m_rss 'model solution - supply - regional' m_pgm 'optimal gross marging - crop level' m_fgm 'optimal gross marging - farm-type level' m_rgm 'optimal gross marging - regional level' m_tbal 'optiaml trade balance' m_fres m_rres o_fres o_rres def_fres def_rres m_css m_pss m_lss o_css o_lss m_land_tax m_water_tariff m_land_rent m_land_rented d_rss d_tbal d_fss m_pdd m_rpdd o_pdd def_pdd def_css m_cgm m_lgm m_scss def_pss o_pss def_lss; * model solution - activity level m_cdd(r,f,t,p) = ncx.l(r,f,t,p)$cp(p)*nf(r,f); m_rcdd(r,t,p) = sum(f, m_cdd(r,f,t,p)); m_pdd(r,f,p) = sum(t, m_cdd(r,f,t,p)); m_rpdd(r,p) = sum(f, m_pdd(r,f,p)); m_ldd(r,f,p) = nlx.l(r,f,p)$ap(p)*nf(r,f); m_rldd(r,p) = sum(f, m_ldd(r,f,p)); * observed - activity level o_cdd(r,f,t,p) = cbr(r,f,t,p)$cp(p)*nf(r,f); o_ldd(r,f,p) = lbr(r,f,p)$ap(p) *nf(r,f); o_pdd(r,f,p) = sum(t, o_cdd(r,f,t,p)); * % difference - activity levels def_cdd(r,f,t,p)$(o_cdd(r,f,t,p) <> 0) = (m_cdd(r,f,t,p)$cp(p) - o_cdd(r,f,t,p)$cp(p))/o_cdd(r,f,t,p)$cp(p)*100; def_pdd(r,f,p) $(o_pdd(r,f,p) <> 0) = (m_pdd(r,f,p) - o_pdd(r,f,p)) /o_pdd(r,f,p) *100; def_ldd(r,f,p) $(o_ldd(r,f,p) <> 0) = (m_ldd(r,f,p)$ap(p) - o_ldd(r,f,p)$ap(p)) /o_ldd(r,f,p)$ap(p) *100; * model solution - supply at activity level m_css(r,f,t,p) = m_cdd(r,f,t,p)$cp(p)*FECY(r,f,t,p); m_pss(r,f,p) = sum(t, m_css(r,f,t,p)); m_lss(r,f,p) = m_ldd(r,f,p)$ap(p)*FEMY(r,f,p); * observed - supply at activity level o_css(r,f,t,p) = o_cdd(r,f,t,p)$cp(p)*FECY(r,f,t,p); o_pss(r,f,p) = sum(t, o_css(r,f,t,p)); o_lss(r,f,p) = o_ldd(r,f,p)$ap(p)*FEMY(r,f,p); * % difference - supply def_css(r,f,t,p)$(o_css(r,f,t,p) <> 0) = (m_css(r,f,t,p)$cp(p) - o_css(r,f,t,p)$cp(p))/o_css(r,f,t,p)$cp(p)*100; def_pss(r,f,p) $(o_pss(r,f,p) <> 0) = (m_pss(r,f,p) - o_pss(r,f,p)) /o_pss(r,f,p) *100; def_lss(r,f,p) $(o_lss(r,f,p) <> 0) = (m_lss(r,f,p)$ap(p) - o_lss(r,f,p)$ap(p)) /o_lss(r,f,p)$ap(p) *100; *---------------------------------------------------------------------------------------------------- * model solution - expenditure on resource use m_fres(r,f,res) = sum((t,p)$cp(p), ncx.l(r,f,t,p)*cres(r,t,p,res)*cost(r,p,res))*nf(r,f) + sum(p$ap(p), nlx.l(r,f,p) *lres(r,p,res) *cost(r,p,res))*nf(r,f); m_rres(r,res) = sum(f, m_fres(r,f,res)); * observed - expenditure on resource use o_fres(r,f,res) = sum((t,p)$cp(p), cbr(r,f,t,p)*cres(r,t,p,res)*cost(r,p,res))*nf(r,f) + sum(p$ap(p), lbr(r,f,p) *lres(r,p,res) *cost(r,p,res))*nf(r,f); o_rres(r,res) = sum(f, o_fres(r,f,res)); * % difference - expenditure on resource use def_fres(r,f,res)$(m_fres(r,f,res) <> 0) = (o_fres(r,f,res) - m_fres(r,f,res))/m_fres(r,f,res)*100; def_rres(r,res) $(m_rres(r,res) <> 0) = (o_rres(r,res) - m_rres(r,res)) /m_rres(r,res) *100; *$onText * observed - supply o_fss(r,f,p) = sum(t, cbr(r,f,t,p)$cp(p)*FECY(r,f,t,p)*nf(r,f)) + lbr(r,f,p)$ap(p)*FEMY(r,f,p)*nf(r,f); * model solution - supply m_fss(r,f,p) = sum(t, ncx.l(r,f,t,p)$cp(p)*FECY(r,f,t,p)*nf(r,f)) + nlx.l(r,f,p)$ap(p)*FEMY(r,f,p)*nf(r,f); * does is calibrate? d_fss(r,f,p)$(o_fss(r,f,p) <> 0) = (m_fss(r,f,p) - o_fss(r,f,p))/o_fss(r,f,p)*100; * observed - supply o_rss(r,p) = sum(f, o_fss(r,f,p)); * model solution - supply m_rss(r,p) = sum(f, m_fss(r,f,p)); d_rss(r,p)$(o_rss(r,p) <> 0) = (m_rss(r,p) - o_rss(r,p))/o_rss(r,p)*100; * optimal/model trade balance m_tbal(r,p) = m_rss(r,p) - rcc(r,p); d_tbal(r,p) = (m_tbal(r,p) - rpx(r,p))/rpx(r,p)*100; * delete differences below 0.0001 d_tbal(r,p)$(abs(d_tbal(r,p)) <= 0.0001 ) = 0; * model solution - farm income m_cgm(r,f,t,p)$(cbr(r,f,t,p) <> 0) = FECMR(r,f,t,p)$cp(p) - RCDAVC1(r,t,p); m_lgm(r,f,p) = FELMR(r,f,p)$ap(p) - RLDAVC1(r,p); * model solution - activity level * m_cdd(r,f,t,p) = ncx.l(r,f,t,p)$cp(p); * m_ldd(r,f,p) = nlx.l(r,f,p)$ap(p); m_land_tax(r,f) = FLC(r,f,'land') *policy_var(r,'l_tax')*policy_var(r,'l_price'); m_water_tariff(r,f) = FLC(r,f,'iwater')*policy_var(r,'w_tariff'); * m_land_rent(r,f,res) = (FLC(r,f,'land') - (sum((t,p)$cp(p), ncx.l(r,f,t,p)) * + sum(p$ap(p), nlx.l(r,f,p)*lres(r,p,"gland"))))*(policy_var(r,'rent')); m_land_rented(r,f) = (FLC(r,f,'land') - (sum((t,p)$cp(p), ncx.l(r,f,t,p)) + sum(p$ap(p), nlx.l(r,f,p)*lres(r,p,"gland")))); display * o_cdd * m_cdd * def_cdd * m_pdd * m_rpdd * o_pdd * d_pdd * o_ldd * m_ldd * def_ldd m_fres m_rres o_fres o_rres def_fres def_rres * o_fss * m_fss * d_fss * o_rss * m_rss * rpro * d_rss * m_tbal * d_tbal * rpx * m_cgm * m_lgm * m_fgm * m_rgm * m_land_tax * m_water_tariff * m_land_rent * m_land_rented * m_css * m_pss *$offText ; *------------------------------------------------------------------------------- *$exit *------------------------------------------------------------------------------- * COMPUTE MARGINAL COST OF BEARING RISK *------------------------------------------------------------------------------- * Incorporating Kuhn-Tucker conditions into the E-V solutions to arrive at the * marginal cost of bearing risk (-2*RapX'S). this will help to adjust the optimal * shadow prices by adjusting the risk (Mcarl & Spreen, 2004): * resource cost is related with marginal GM and a marignal cost of bearing risk Parameter p_mcrisk 'marginal cost of bearing risk for each activity for farm type' p_covar1 'risk premium for farm type' p_fmcrisk 'marginal cost of bearing risk for each activity per each farm unit R per ha (animal)' p_fcovar1 'risk premium for each farm unit R per ha (or animal)'; p_mcrisk(r,f,p) = -2*farm_fac(r,f,'rap')*(sum(t, ncx.l(r,f,t,p)$cp(p)) + nlx.l(r,f,p)$ap(p))*CovRMR(r,p,p); p_covar1(r,f,p) = 2*farm_fac(r,f,'rap')*(sum(t, ncx.l(r,f,t,p)$cp(p)) + nlx.l(r,f,p)$ap(p))*CovRMR(r,p,p); p_fmcrisk(r,f,p) = -2*farm_fac(r,f,'rap')*(sum(t, ncx.l(r,f,t,p)$cp(p)) + nlx.l(r,f,p)$ap(p))*CovRMR(r,p,p)/nf(r,f); p_fcovar1(r,f,p) = 2*farm_fac(r,f,'rap')*(sum(t, ncx.l(r,f,t,p)$cp(p)) + nlx.l(r,f,p)$ap(p))*CovRMR(r,p,p)/nf(r,f); display p_mcrisk, p_covar1, p_fmcrisk, p_fcovar1; *------------------------------------------------------------------------------- *$exit *=============================================================================== *$onText * shadow price or opportunity cost of resources Parameter r_aland 'shadow price or opportunity cost of aland at region level' r_iland 'shadow price or opportunity cost of irrigable land at region level' r_gland 'shadow price or opportunity costof grass land at region level' r_land 'shadow price or opportunity costof land at region level' r_iwater r_labour f_aland 'shadow price or opportunity cost of aland at farm level' f_iland 'shadow price or opportunity cost of irrigable land at farm level' f_gland 'shadow price or opportunity costof grass land at farm level' f_land 'shadow price or opportunity costof land at farm level' f_iwater f_capital; r_aland(r,"aland") = nrcon1.m(r,'aland'); r_iland(r,"irrigland") = nrcon2.m(r,'irrigland'); r_gland(r,"gland") = nrcon3.m(r,'gland'); r_land(r,"land") = nrcon4.m(r,'land'); r_iwater(r,"iwater") = nrcon5.m(r,'iwater'); r_labour(r,"labour") = nrcon6.m(r,'labour'); f_aland(r,f,'aland') = nfcon1.m(r,f,'aland'); f_iland(r,f,'irrigland') = nfcon2.m(r,f,'irrigland'); f_gland(r,f,'gland') = nfcon3.m(r,f,'gland'); f_land(r,f,'land') = nfcon4.m(r,f,'land'); f_iwater(r,f,"iwater") = nfcon5.m(r,f,'iwater'); * f_capital(r,f,'capital') = nfcon6.m(r,f,'capital'); * display r_aland, r_iland, r_gland, r_land, r_iwater, r_labour, f_aland, f_iland, f_gland, f_land, f_iwater; *$offText *=============================================================================== *$exit *=============================================================================== *$onText * marginal opportunity cost of an ha of activities or a unit of livestock * marginal opportunity cost = Net or Gross margin - total opportunity cost Parameter r_dry 'marginal opportunity cost of an ha of a crop activity at regional level' r_irrig 'marginal opportunity cost of a livestock activity unit at regional level' r_stock 'marginal opportunity cost of a livestock activity unit at regional level' f_dry 'marginal opportunity cost of an ha of a crop activity at farm level' f_irrig 'marginal opportunity cost of a livestock activity unit at farm level' f_stock 'marginal opportunity cost of a livestock activity unit at farm level'; * at farm type levels f_dry(r,f,'dry',p)$cp(p) = FECMR(r,f,'dry',p) - sum(res, cres(r,'dry',p,res) *f_aland(r,f,'aland')); f_irrig(r,f,'irrig',p)$cp(p) = FECMR(r,f,'irrig',p) - sum(res, cres(r,'irrig',p,res)*f_iland(r,f,'irrigland')); f_stock(r,f,p)$ap(p) = FELMR(r,f,p) - sum(res, lres(r,p,res) *f_gland(r,f,'gland')); * at region levels r_dry(r,'dry',p) = sum(f, FECMR(r,f,'dry',p) - sum(res, cres(r,'dry',p,res) *r_aland(r,'aland'))) /card(f); r_irrig(r,'irrig',p) = sum(f, FECMR(r,f,'irrig',p) - sum(res, cres(r,'irrig',p,res)*r_iland(r,'irrigland')))/card(f); r_stock(r,p) = sum(f, FELMR(r,f,p) - sum(res, lres(r,p,res) *r_gland(r,'gland'))) /card(f); * Compare with dual values of calibration constraints display f_dry, f_irrig, cLam, f_stock, r_dry, r_irrig, r_stock, llam; *$offText *=============================================================================== *$exit *=============================================================================== * a quick check on the calibration. mc = vmp *$onText Parameter mcc 'marginal cost crop' mcc1 mcl 'marginal cost livestock' mcl1 vmpc 'value of marginal product' vmpl 'value of marginal product'; mcc(r,f,t,p)$(cbr(r,f,t,p) <> 0) = calpha(r,f,t,p) + cgam(r,f,t,p)*ncx.l(r,f,t,p)$cp(p); mcc1(r,f,t,p)$(cbr(r,f,t,p) <> 0) = RCDAVC1(r,t,p) + clam(r,f,t,p); mcl(r,f,p)$(lbr(r,f,p) <> 0) = lalpha(r,f,p) + lgam(r,f,p) *nlx.l(r,f,p)$ap(p); mcl1(r,f,p)$(lbr(r,f,p) <> 0) = RLDAVC1(r,p) + llam(r,f,p); vmpc(r,f,t,p)$(cbr(r,f,t,p) <> 0) = FECMR(r,f,t,p) - Mcc(r,f,t,p); vmpl(r,f,p)$(lbr(r,f,p) <> 0) = FELMR(r,f,p) - mcl(r,f,p); display mcc, mcc1, vmpc, mcl, mcl1, vmpl; *$offText *=============================================================================== *$exit *=============================================================================== * MODEL VALIDATION *=============================================================================== *$onText * Generate marginal cost curve elasticity to calibrate the curvature of the cost function * base on the calibration parameters generated in stage 2. Check the consistency wrt either * 2. price elasticities of ss found in literature (Heckelei, 2003); Parameter c_elas 'equilibrium elasticities implied by the calibrated cost functions i.e unrestricted PMP calibration - crops' l_elas 'equilibrium elasticities implied by the calibrated cost functions i.e unrestricted PMP calibration - stocks'; * 1. It may not be rational to igonre the effect of farm type on elasticities * effieciency changes per activity within and over individual farms * (machineries and equaipments; less efficient farms fold up; increased share in * total production of more efficient farms,etc. etc.) * Therefore we consider the effect of farm type on elasticities (Helming, 2005) c_elas(r,f,t,p)$(cbr(r,f,t,p) > 0 and cgam(r,f,t,p) > 0) = Eprice(r,p)/(cgam(r,f,t,p)*cbr(r,f,t,p)); l_elas(r,f,p)$(lbr(r,f,p) > 0 and lgam(r,f,p) > 0) = EPrice(r,p)/(lgam(r,f,p) *lbr(r,f,p)); display c_elas, l_elas; *$exit *$onText *---------------------------------------------------------------- * Calculating the supply elasticity implied by the PMP parameters. * Calculation acreage supply response to 1 percent change in gross margin *------------------------------------------------------------------------------- * Assume constant yields, supply elasticity = (dx/mc)(*gross margin/x.l) * which equals elas = (davc + lam)/(gam*x.l) (Heckelei, 2003; Howitt, 2005) * And since the research objectives is to examine the substitution between enterprise * (dryland and irrigaged) rather than individual crops the potential impact of changes * in farm industry structure (i.e increasing the representation of emerging farmtyp) * onthe level of resource use and regional output supply then (Brennan, 2005) * Thi is preferable moreso that the elasticities for the enterprise and or the * farm types in question are not known or available * --- increase of gross margin by 1 percent * (it is observed that varying GM increase gives varying elasticities) * (it is therefore recommended to give average increase rather than * abitrary increase before concluding whether the model calibrates to * prior elasticities or not since there is alwasy times series data on * gross margin variation * find the cov or prices increase i.e do prices move in the same direction?; * or do they co-integrate if they do by same proportion? * constnt yield and DAVC is assumed as Parameter celas 'acreage response to 1 percent change in gross margin' lelas 'stock response to 1 percent change in gross margin' rcss r_celas r_lelas rs_celas start1; loop(p2, * increasee or decrease price EPrice(r,p) = EPrice(r,p)/1.01; * SARASprimal.optFile = 1; solve SARASprimal using nlp maximizing nnlpobj; * percentage change in land allocation and tech celas(r,f,t,p)$(cbr(r,f,t,p) <> 0) = (ncx.l(r,f,t,p) - cbr(r,f,t,p))/cbr(r,f,t,p)*100; lelas(r,f,p) $(lbr(r,f,p) <> 0) = (nlx.l(r,f,p) - lbr(r,f,p)) /lbr(r,f,p) *100; r_celas(r,p)$(sum((f,t),cbr(r,f,t,p)) <> 0 ) = (sum((f,t), (celas(r,f,t,p)/100*cbr(r,f,t,p)*nf(r,f)*FECY(r,f,t,p) + cbr(r,f,t,p)*nf(r,f)*FECY(r,f,t,p)) -cbr(r,f,t,p)*nf(r,f)*FECY(r,f,t,p)))/sum((f,t), cbr(r,f,t,p)*nf(r,f)*FECY(r,f,t,p))*100; r_lelas(r,p)$(sum(f, lbr(r,f,p)) <> 0 ) = (sum(f, (lelas(r,f,p)/100*lbr(r,f,p)*nf(r,f)*FELY(r,f,p) + lbr(r,f,p)*nf(r,f)*FELY(r,f,p)) -lbr(r,f,p)*nf(r,f)*FELY(r,f,p)))/sum(f, lbr(r,f,p)*nf(r,f)*FELY(r,f,p))*100; EPrice(r,p) = EPrice(r,p)*1.01; ); * Write the results to the excel conformable file. use the Excel regression to * calculate the point elasticity (own-price and cross) of supply display celas, lelas, r_celas, r_lelas; *$offText *------------------------------------------------------------------------------- *$exit *=============================================================================== * POLICY/MARKET ENVIRONMENT SIMULATION *=============================================================================== * SIMULATION * FOR EACH SIMULATION COMPUTE THE * 1. SUPPLY RESPONSE * 2. CHANGES IN CROPPING PATTERN/RESOURCE USE/LAND ALLOCATION/RISK MANAGEMENT-PORTIFOLIO SELECTION * 3. FARM INDUSTRY STRUCUTRE * 4. TRADE BALANCE/SELF-SUFFICIENCY *=============================================================================== * FORECAST THE SUPPLY FUNCTION acreage/activity response (supply funcion) to changes in price *=============================================================================== * Generate both own-price and cross price elasticity at base price and activity levels * note that response differ for basis and non-basis activities * 1. use the gams parameterization loop to parametrically increase teh price of each crop in 5 10% steps. * 2. use the results with the excel regression to fit a regression and * get elasticity @ base price and activity levels; * 3. use the regression to calculate the point elasticity of supply at the quantity of X activity level * the formula = e = (1/slope)*P/X * i. Parameterisation of the price of each crop/livestock starting a 50% reduction * and increasing by twelve 5% steps. Using the Excel regression to calculate the * point leasticity of supply of ech crop at the base price and quantity * ii. check is the regression elasticy similar to the calibration elasticity? * iii. modify the parameterisation loop and show the effect of a crop price eg. * wmaize on the amount of other crops produced. Calculate the cross elasticity * of supply atht ebase wmaize price $onText Set LP1 / 1*10 /; Parameter shift1 'loop shifter' Pricelp1 'run price' lp1_css 'run activity levels crops' lp1_rcss 'run supply levels crops' lp1_lss 'run activity levestock' lp1_rlss 'run supply levels' lp1_rss lp1_fss bas_nf; Scalar step1 / 0.010 / start2 / 1 /; * Eprice(r,p) = Eprice(r,p)*0.5; loop(lp1, * and increasing by ten 1% steps Eprice(r,p) = Eprice(r,p)/start2; solve SARASprimal using nlp maximizing nnlpobj; Pricelp1(lp1,r,p) = Eprice(r,p); lp1_rss(lp1,r,p) = sum((f,t), ncx.l(r,f,t,p)) + sum(f, nlx.l(r,f,p)); lp1_fss(lp1,r,f,p)= sum(t, ncx.l(r,f,t,p)) + nlx.l(r,f,p); shift1(lp1) = start2; start2 = start2 + step1; ); display shift1, Pricelp1; option lp1_fss :3:2:1; display lp1_fss; *------------------------------------------------------------------------------- $offText *$exit *------------------------------------------------------------------------------- * APPLICation *------------------------------------------------------------------------------- *$onText *=============================================================================== * 3. Regional Supply Response to Land redistribution: (increase in lrad farmers) * Trend in and proposed (planned) number of emerging farmers settlement * Increasing Number of emmerging farms : 30% land transfer *------------------------------------------------------------------------------- Parameter Bas_nf bas_flc trans_flc run_nf2 trans_nf trans_fss deftrans_fss 'change in farm type supply' trans_rss deftrans_rss 'change in regional supply' trans_tbal deftrans_tbal 'change in trade balance' trans_fres deftrans_fres trans_rres deftrans_rres trans_cdd deftrans_cdd trans_rcdd deftrans_rcdd trans_pdd deftrans_pdd trans_rpdd deftrans_rpdd trans_ldd deftrans_ldd trans_rldd deftrans_rldd; * Base number of farms in each farm type bas_nf(r,f) = nf(r,f); * Base resource levels at farm type levels bas_flc(r,f,res) = flc(r,f,res); * number of farms must be integer * Scinario - * 1. transfer 30% of land resources from f1 to establish more of f2 farm type * only about only 2.5% has been transfered so far, there remains 27.5 to be transfered. * 2. this implies increasing number of f2 * 3. coupled with decreasing number of f1 and changing farm size for remaining f1 * assuming the rate of farm folding up is geometric, then number of farm units in 2014 is given by * ar^n-1 when a = 8531 in 2002, r = fincrease(r,'f'); n = 13 * 1. projected land transfer and corresponding changes in the number of farm units * run_nf(r,f,yr)$(yes$(ord(yr) > card(ot))) = nf(r,f) + farm_fac(r,f,'fgrowth'); * nf(r,f) = run_nf(r,f,ft) ; run_nf(r,f,yr)$(yes$(ord(yr) > card(ot))) = nf(r,f) + card(ot)*farm_fac(r,f,'fgrowth'); trans_nf(r,'f1') = run_nf(r,'f1','2015'); nf(r,'f1') = trans_nf(r,'f1') ; FLC(r,'f1',res)$fix(res) = (0.725*bas_nf(r,'f1')*Bas_FLC(r,'f1',res))/nf(r,'f1'); trans_flc(r,'f1',res) = FLC(r,'f1',res); run_nf2(r,'f2') = round(0.275*bas_nf(r,'f1')*Bas_FLC(r,'f1','land')/bas_flc(r,'f2','land')) + Bas_nf(r,'f2'); nf(r,'f2') = run_nf2(r,'f2'); * 4. projected farm level yield with technical progress FECY(r,f,t,p) = FECY(r,f,t,p)*(1 + farm_fac(r,f,'ctfp')); FELY(r,f,p) = FELY(r,f,p) *(1 + farm_fac(r,f,'ltfp')); FEMY(r,f,p) = FEMY(r,f,p) *(1 + farm_fac(r,f,'ltfp')); solve SARASprimal using nlp maximizing nnlpobj; *=============================================================================== * RESOURCE DEMAND (EXPENDITURE APPROACH) *------------------------------------------------------------------------------- * effect on expenditure on resource use trans_fres(r,f,res) = sum((t,p)$cp(p), ncx.l(r,f,t,p)*cres(r,t,p,res)*cost(r,p,res))*nf(r,f) + sum(p$ap(p), nlx.l(r,f,p) *lres(r,p,res) *cost(r,p,res))*nf(r,f); deftrans_fres(r,f,res)$(m_fres(r,f,res) <> 0) = (trans_fres(r,f,res) - m_fres(r,f,res))/m_fres(r,f,res)*100; deftrans_fres(r,f,res)$(abs(deftrans_fres(r,f,res)) <= 0.0001) = 0; trans_rres(r,res) = sum(f, trans_fres(r,f,res)); deftrans_rres(r,res)$(m_rres(r,res) <> 0)= (trans_rres(r,res) - m_rres(r,res))/m_rres(r,res)*100; deftrans_rres(r,res)$(abs(deftrans_rres(r,res)) <= 0.0001) = 0; *------------------------------------------------------------------------------- *=============================================================================== * ACTIVITY LEVEL *------------------------------------------------------------------------------- * effect on activity level at technology level - dryland and irrigated trans_cdd(r,f,t,p) = ncx.l(r,f,t,p)$cp(p)*nf(r,f); deftrans_cdd(r,f,t,p)$(m_cdd(r,f,t,p) <> 0) = (trans_cdd(r,f,t,p) - m_cdd(r,f,t,p))/m_cdd(r,f,t,p)*100; deftrans_cdd(r,f,t,p)$(abs(deftrans_cdd(r,f,t,p)) <= 0.0001) = 0; * effect on activity level - crops trans_pdd(r,f,p) = sum(t, trans_cdd(r,f,t,p)); deftrans_pdd(r,f,p)$(m_pdd(r,f,p) <> 0) = (trans_pdd(r,f,p) - m_pdd(r,f,p))/m_pdd(r,f,p)*100; deftrans_pdd(r,f,p)$(abs(deftrans_pdd(r,f,p)) <= 0.0001) = 0; * effect on activity level - stock trans_ldd(r,f,p) = nlx.l(r,f,p)$ap(p)*nf(r,f); deftrans_ldd(r,f,p)$(m_ldd(r,f,p) <> 0) = (trans_ldd(r,f,p) - m_ldd(r,f,p))/m_ldd(r,f,p)*100; deftrans_ldd(r,f,p)$(abs(deftrans_ldd(r,f,p)) <= 0.0001) = 0; * At region level * effect on activity level at technology level trans_rcdd(r,t,p) = sum(f, trans_cdd(r,f,t,p)$cp(p)); deftrans_rcdd(r,t,p)$(m_rcdd(r,t,p) <> 0) = (trans_rcdd(r,t,p) - m_rcdd(r,t,p))/m_rcdd(r,t,p)*100; deftrans_rcdd(r,t,p)$(abs(deftrans_rcdd(r,t,p)) <= 0.0001) = 0; * effect on activity level - crop trans_rpdd(r,p) = sum(f, trans_pdd(r,f,p)$cp(p)); deftrans_rpdd(r,p)$(m_rpdd(r,p) <> 0) = (trans_rpdd(r,p) - m_rpdd(r,p))/m_rpdd(r,p)*100; deftrans_rpdd(r,p)$(abs(deftrans_rpdd(r,p)) <= 0.0001) = 0; * effect on activity level stock trans_rldd(r,p) = sum(f, trans_ldd(r,f,p)$ap(p)); deftrans_rldd(r,p)$(m_rldd(r,p) <> 0) = (trans_rldd(r,p) - m_rldd(r,p))/m_rldd(r,p)*100; deftrans_rldd(r,p)$(abs(deftrans_rldd(r,p)) <= 0.0001) = 0; *=============================================================================== *=============================================================================== * SUPPLY AND TRADE *------------------------------------------------------------------------------- * impact on supply at farm-level trans_fss(r,f,p) = (sum(t, ncx.l(r,f,t,p)$cp(p)*FECY(r,f,t,p)*nf(r,f)) + nlx.l(r,f,p)$ap(p)*FEMY(r,f,p)*nf(r,f)); deftrans_fss(r,f,p)$(m_fss(r,f,p) <> 0 ) = (trans_fss(r,f,p) - m_fss(r,f,p))/m_fss(r,f,p)*100; deftrans_fss(r,f,p)$(abs(deftrans_fss(r,f,p)) <= 0.0001) = 0; * impact on supply at region level trans_rss(r,p) = sum(f, trans_fss(r,f,p)); deftrans_rss(r,p)$(m_rss(r,p) <> 0 )= (trans_rss(r,p) - m_rss(r,p))/m_rss(r,p)*100; deftrans_rss(r,p)$(abs(deftrans_rss(r,p)) <= 0.0001) = 0; * impact on trade balances trans_tbal(r,p) = trans_rss(r,p) - rcc(r,p); deftrans_tbal(r,p)$(m_tbal(r,p) <> 0) = (trans_tbal(r,p)- m_tbal(r,p))/m_tbal(r,p)*100; deftrans_tbal(r,p)$(abs(deftrans_tbal(r,p)) <= 0.0001) = 0; *=============================================================================== option decimals = 2; display bas_nf; nf(r,f) = bas_nf(r,f); FLC(r,f,res) = bas_FLC(r,f,res); * This should give an indication of capital investiment in the industry to empower the emerging farmers; display Bas_nf bas_flc trans_flc run_nf2 trans_nf *------------------------------------------------------------------------------- $onText * resource demand by expenditure m_fres trans_fres deftrans_fres m_rres trans_rres deftrans_rres $offText *------------------------------------------------------------------------------ *------------------------------------------------------------------------------ *$onText * Farm level and regional supply * m_fss * trans_fss deftrans_fss * m_rss * trans_rss deftrans_rss * trade balance * m_tbal * trans_tbal * deftrans_tbal *$offText *------------------------------------------------------------------------------ *$onText * Farm level activity level * m_cdd * trans_cdd deftrans_cdd * m_rcdd * trans_rcdd deftrans_rcdd * m_pdd * trans_pdd deftrans_pdd * m_rpdd * trans_rpdd deftrans_rpdd * m_ldd * trans_ldd deftrans_ldd * m_rldd * trans_rldd deftrans_rldd ; *$offText