
﻿ Potential of wind power projects under the Clean Development Mechanism in India Results : CDM Potential of Wind Power Projects in India Considerable variation has been observed in the reported values of the PLF of the wind power plants in the CDM Project Design Documents ( Table 5 ) . Therefore , in this study to estimate the CDM potential of wind power projects in India the PLF of the wind power plants have been taken as 25 % . There are five regional grids within the country – the Northern , Western , Southern , Eastern and North-Eastern . Therefore , the CO2 emissions mitigation potential through wind power projects in India is estimated on the basis of the regional grids , whose emission factors have been calculated by the Central Electricity Authority ( CEA ) of the Government of India in 2006. Table 6 presents the estimated values of CDM potential through wind power projects in India on the basis of the regional baselines . We now do a sensitivity analysis with regards to additionality determination . The case of lax additionality assumes that all wind power projects submitted are registered . The median case assumes that the rejection rate remains at the current level ( 2 out of 18 projects , i. e. 11 % ) . The case of stringent additionality assumes that 50 % of the projects are registered . In the lax additionality case , gross annual CER potential of wind power in India reaches 86 million . Similarly , based on the technical potential of wind power projects in India the CDM potential has been estimated as 25 million tonne . Among all the states in India , Gujarat has the largest CO2 emissions mitigation potential through wind power ( 19 million tonne ) followed by Andhra Pradesh ( 15.6 million tonne ) , Madhya Pradesh ( 10.8 million tonne ) , Karnataka ( 12.5 million tonne ) , Rajasthan ( 8.9 million tonne ) , and so on ( Table 6 ) . The annual electricity generation by wind power projects based on the gross and technical potential is also given in Table 6. With 25 % PLF of wind power projects the annual gross electricity generation potential has been estimated at 99 TWh whereas the annual technical electricity generation potential has been estimated at 28 TWh . Table 7 presents the projected values of the cumulative capacity of wind power and likely CER generation using the logistic model described in the Methods section while Figure 5 shows the development over time . It may be noted that with the current trend of dissemination of wind power projects in the country , around 22 GW capacity could be installed up to the end of first crediting period in the SS scenario whereas in the OS scenario 36 GW capacity could be installed . Up to the the year 2020 , more than 44 GW capacity of the wind power projects are expected to be installed that would generate 87 million CERs . Discussion : How the CDM could be applied to the Diffusion of Wind Power Projects ? The CDM was slow to take off as after the Marrakech Accords of 2001 it took another three years to define the bulk of the rules . The CDM Executive Board ( EB ) which is the body defining the CDM rules surprised many observers by taking a rigorous stance on critical issues such as baseline and additionality determination ( see below ) . Once the key rules were in place , a " gold rush " happened in 2005 and 2006. Over 1500 projects were submitted with an estimated CER volume of about 1.5 billion . However , the volume share of renewable energy projects has been less than expected due to the high attractiveness of projects reducing industrial gases and methane from waste . Out of the 1478 CDM projects submitted to the EB , 456 projects had been registered by the EB till 20th December , 2006 [ 32,33 ] . 183 CDM projects related to wind energy of which 47 have been registered , 9 requested registration and 127 were at the validation stage [ 33 ] . Figure 6 presents the status of the wind power projects from India . Out of the 89 projects submitted to the UNFCCC , 18 projects had been registered and two projects had submitted the request for registration . 67 projects were at the validation stage whereas 2 projects had been rejected by the EB . The quantification of GHG benefits of a CDM project is done by means of a " baseline " . A baseline describes the ( theoretical ) emissions that would have occurred in case the CDM project was not implemented . The amounts of CERs that can be earned by the project are then calculated as the difference of baseline emissions and project emissions . The CO2 emissions mitigation benefits associated with a wind power project depend upon the amount of electricity saved . To estimate the CDM potential of wind power project in the country , the approved consolidated baseline methodology for grid-connected electricity generation from renewable sources ACM0002 ( Version 06 ) has been used . For the small scale CDM ( SSC ) projects , the small scale methodology AMS-I . D. " Grid connected renewable electricity generation " in its version of 23rd December 2006 [ 34 ] can be used which explicitly mentions wind power for electricity generation . In India , most of the wind power projects are grid connected and substitute grid electricity . Therefore , for such systems , the baseline is the kWh produced by the renewable generating unit multiplied by an emission coefficient ( measured in g CO2eq . /kWh ) calculated in a transparent and conservative manner . This coefficient is 800 g CO2eq . /kWh for a grid where all generators use exclusively fuel oil and/or diesel fuel , whereas it is the weighted average of the so-called operating margin ( emission factor of all thermal power plants serving the grid ) and build margin ( emission factor of the most recently built plants that provide 20 % of the grid 's electricity ) . For wind power , the weight of the operating margin is 0.75 while the build margin is weighted at 0.25 . Alternatively , project developers can use the weighted average emissions of the current generation mix but this will always be less than the emission factor derived previously and thus unattractive . For intermittent and non-dispatchable generation types such as wind and solar photovoltaic , ACM0002 allows to weigh the operating margin ( OM ) and build margin ( BM ) at 75 % and 25 % , respectively , however , in this study we have used combines margin by using equal weights for OM and BM as given in CEA document [ 35 ] . To maintain the environmental integrity of the Kyoto Protocol , CERs are given only for " additional " activities that would otherwise not be expected to occur [ 36 ] . Therefore , any CDM project requires careful analysis of additionality . This has probably been the most contentious point in the development of the CDM and also resulted in great confusion amongst project developers [ 37,38 ] . The Kyoto Protocol stops short of requiring project proponents to show strict financial additionality – that the CDM revenue makes an uneconomic project economic – and left scope for the CDM EB to refine the demonstration of additionality . The EB subsequently took a fairly strict interpretation of additionality and developed an additionality tool which formally is voluntary but which has become de facto mandatory as it was incorporated in most baseline methodologies . The additionality tool requires an investment analysis and/or a barrier analysis to determine whether the CDM project is the most attractive realistic alternative . This means that the project can be profitable and additional as long as developers can show that another project type was even more profitable . It is estimated that wind power in many countries is already competitive with fossil fuel and nuclear power if social/environmental costs are considered [ 28 ] . However , in India , in terms of costs per kWh in grid-connected areas , costs of wind power are higher than electricity provided by a coal plant projects thus be additional at any rate . The unit cost of electricity generation is 0.05 €/kWh for coal and 0.06 €/kWh for fuel oil based system whereas in case of wind , the unit cost of electricity generation is 0.07 €/kWh in the best locations . The problem with this reasoning is that if wind projects are used to displace expensive grid electricity for industrial consumers ( priced at 0.09 €/kWh [ 39 ] ) , they are invariably the most attractive alternative unless they are built in locations with low wind speed . The situation for wind projects that supply to the grid at the state-guaranteed feed-in tariff is less clear ; the attractiveness depends on the level of the tariff . As the investment test will not be passed by most wind projects ( or only if they omit the tax incentives , as has been done by a project that achieved registration ) , project developers will use the barrier test . The barrier of higher capital cost compared to fossil fuel power plants is not really credible due to the abundance of capital for wind power in India and thus is mentioned only rarely . More credible barriers are low capacity utilization factor , and possible reduction in feed-in tariffs . The former depends on the siting of the project . The latter is very important as shown by the policy of Rajasthan ( see Table 3 ) and other states . In 2001 , Tamil Nadu Electricity Board ( TNEB ) changed its policy and froze the power purchase tariff for wind energy at Rs 2.70 per kWh with no escalation till 2006 and had informed that this power purchase tariff would be reviewed at 2006 and a new tariff would be fixed then . This was a major barrier for establishing new wind farms as other renewable energy plants continued to get a higher tariff . For instance , the power purchase tariff for electricity from an industrial waste/municipal waste based generation was Rs 3.49 for the year 2005 as against Rs 2.70 for wind energy . This policy encourages investors to invest in other renewable energy plants . Reduction in power purchase tariff was a major investment barrier . Moreover , feed-in-tariffs may be replaced by the Availability Based Tariff ( ABT ) in which the generators with firm delivery of power against commitment will start getting more prices for the generated power , whereas wind power producers cannot guarantee supply of electricity and will be thus receive lower rates . For the projects that substitute grid electricity at industrial tariffs , there is the risk that the wind power benefit will melt down as liberalization permits industrial electricity consumers to choose the supplier in a competitive environment . Some projects have also highlighted the technological risks associated with new types of wind turbines . Lack of familiarity and experience with such new technologies can lead to perceptions of greater technical risk than for conventional energy sources . Doing the investment test – case study A 125 MW wind project in Karnataka calculated an IRR of 7.3 % . At that rate , the project would clearly be unattractive for an investor . However , the picture changes if one analyzes the project more closely . If one uses industry averages for the investment cost ( Rs 5 crore per MW ) , the IRR is 11 % . If one includes the accelerated depreciation of 80 % in the first year and the 10 year income tax holiday , the IRR reaches 22 % ( personal communication by Mr. Sanjeev Chadha ) . It would be difficult to find serious alternatives that are more attractive . Nevertheless , the project was registered by the EB . Table 5 presents the additionality arguments of Indian wind power projects . 14 projects out of 20 have carried out investment and barrier analysis for the justification of additionality whereas 6 projects carried out the barrier analysis only . An assessment of the PDD 's indicates that the investment analysis is not convincing in most of the cases . Two wind projects from India were rejected due to lack of additionality . The rejection was mainly due to the following statement in the annual report of the company that had invested in the projects : " The project is extremely beneficial on a standalone basis and has a payback period of three years with an internal rate of return in excess of 28 per cent . In addition to hedging Bajaj Auto 's power costs , this investment also provides sales tax incentives and an income tax shield " [ 40 ] . 