<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.4 20241031//EN" "JATS-journalpublishing1-4.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article" dtd-version="1.4" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">ojapps</journal-id>
      <journal-title-group>
        <journal-title>Open Journal of Applied Sciences</journal-title>
      </journal-title-group>
      <issn pub-type="epub">2165-3925</issn>
      <issn pub-type="ppub">2165-3917</issn>
      <publisher>
        <publisher-name>Scientific Research Publishing</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.4236/ojapps.2026.165096</article-id>
      <article-id pub-id-type="publisher-id">ojapps-151417</article-id>
      <article-categories>
        <subj-group>
          <subject>Article</subject>
        </subj-group>
        <subj-group>
          <subject>Biomedical</subject>
          <subject>Life Sciences</subject>
          <subject>Chemistry</subject>
          <subject>Materials Science</subject>
          <subject>Computer Science</subject>
          <subject>Communications</subject>
          <subject>Engineering</subject>
          <subject>Physics</subject>
          <subject>Mathematics</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Stochastic Social Welfare Maximization for Wind Power Integration in Electricity Spot Markets: A DC-OPF Approach with Nodal Pricing and Penetration Sensitivity Analysis</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <contrib-id contrib-id-type="orcid">0009-0009-5370-3395</contrib-id>
          <name name-style="western">
            <surname>Cao</surname>
            <given-names>Ye</given-names>
          </name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="aff1"><label>1</label> Business School, University of Shanghai for Science and Technology, Shanghai, China </aff>
      <author-notes>
        <fn fn-type="conflict" id="fn-conflict">
          <p>The author declares no conflicts of interest regarding the publication of this paper.</p>
        </fn>
      </author-notes>
      <pub-date pub-type="epub">
        <day>07</day>
        <month>05</month>
        <year>2026</year>
      </pub-date>
      <pub-date pub-type="collection">
        <month>05</month>
        <year>2026</year>
      </pub-date>
      <volume>16</volume>
      <issue>05</issue>
      <fpage>1722</fpage>
      <lpage>1735</lpage>
      <history>
        <date date-type="received">
          <day>16</day>
          <month>04</month>
          <year>2026</year>
        </date>
        <date date-type="accepted">
          <day>22</day>
          <month>05</month>
          <year>2026</year>
        </date>
        <date date-type="published">
          <day>25</day>
          <month>05</month>
          <year>2026</year>
        </date>
      </history>
      <permissions>
        <copyright-statement>© 2026 by the authors and Scientific Research Publishing Inc.</copyright-statement>
        <copyright-year>2026</copyright-year>
        <license license-type="open-access">
          <license-p> This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license ( <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link> ). </license-p>
        </license>
      </permissions>
      <self-uri content-type="doi" xlink:href="https://doi.org/10.4236/ojapps.2026.165096">https://doi.org/10.4236/ojapps.2026.165096</self-uri>
      <abstract>
        <p>The rapid growth of variable renewable energy—in particular utility-scale wind power—raises fundamental questions about social efficiency, price formation, and network adequacy in liberalized electricity spot markets. This paper formulates and solves a scenario-based stochastic social welfare maximization (SWM) problem on the IEEE 30-bus test system using a DC power-flow representation based on Powe Transfer Distribution Factors (PTDFs). Wind generation uncertainty is captured through a discrete scenario set, and nodal Locational Marginal Prices (LMPs) are recovered from the dual variables of the market-clearing optimization. A sign correction methodology is introduced to reconcile the CVXPY maximization convention with standard market pricing practice, ensuring that LMPs are positive under normal operating conditions and negative only when genuine local over-supply is present. Penetration levels are swept from 5% to 50% in 5 percentage-point increments, enabling a high-resolution analysis of social welfare, marginal welfare, wind curtailment, generation mix, and the hourly/nodal structure of prices. Results show that social welfare increases monotonically with penetration (from approximately $450 × 10<sup>3</sup>/h to $473 × 10<sup>3</sup>/h), yet marginal welfare declines from around $554/h per percentage-point at low penetration to $387/h at 50%, indicating diminishing systemic benefits. Wind curtailment remains negligible below 30% but accelerates sharply beyond that threshold, with the curtailment-to-accepted ratio reaching approximately 187% at 50% penetration (<italic>i.e.</italic>, curtailed wind volume exceeds the actually accepted wind output) due to binding transmission and load-balance constraints. The expected system LMP peaks at approximately $1.09/MWh in the 15% - 20% range and declines to $1.03/MWh at 50%, while hourly LMP profiles reveal that the price-suppression effect of wind intensifies during peak-generation hours and at high penetrations. The nodal LMP heatmap at 30% penetration exposes persistent spatial price differentials driven by transmission congestion. These findings provide quantitative guidance for renewable integration policy, transmission planning, and market-design reform.</p>
      </abstract>
      <kwd-group kwd-group-type="author-generated" xml:lang="en">
        <kwd>Stochastic Optimal Power Flow</kwd>
        <kwd>Locational Marginal Price</kwd>
        <kwd>Wind Power Integration</kwd>
        <kwd>Social Welfare Maximization</kwd>
        <kwd>DC Power Flow</kwd>
        <kwd>PTDF</kwd>
        <kwd>Curtailment</kwd>
        <kwd>IEEE 30-Bus System</kwd>
        <kwd>Scenario-Based Optimization</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec1">
      <title>1. Introduction</title>
      <p>The global energy transition has placed wind power at the center of electricity-sector decarbonization strategies. In many jurisdictions, wind now constitutes a non-trivial share of installed generation capacity, and this share is projected to grow substantially over the coming decades [<xref ref-type="bibr" rid="B1">1</xref>]. While the environmental case for wind power is well established, its economic consequences for wholesale electricity markets are more nuanced. Wind is a zero-marginal-cost, variable resource: it suppresses system prices during high-output periods (the “merit-order effect” [<xref ref-type="bibr" rid="B2">2</xref>]), creates intra-day and inter-temporal price volatility, and may induce transmission congestion in network topologies designed for centralized, dispatchable generation [<xref ref-type="bibr" rid="B3">3</xref>].</p>
      <p>A rigorous analysis of these effects requires a model that simultaneously accounts for 1) the stochastic nature of wind output, 2) the physical constraints of the transmission network, and 3) the welfare-based objective of a competitive spot market. The standard workhorse for such analysis is the Security-Constrained Optimal Power Flow (SC-OPF) problem, typically solved in its DC linearization for computational tractability [<xref ref-type="bibr" rid="B4">4</xref>]. In stochastic settings, scenario-based stochastic formulation—which captures wind output uncertainty through a discrete scenario set, and derives optimal dispatch decisions for each realized scenario—provides a principled framework for capturing the value of operational flexibility [<xref ref-type="bibr" rid="B5">5</xref>].</p>
      <p>Nodal pricing, or Locational Marginal Pricing (LMP), is the dominant market-clearing mechanism in liberalized electricity systems in North America and increasingly elsewhere [<xref ref-type="bibr" rid="B6">6</xref>]. Under LMP, the market-clearing price at each bus reflects the marginal cost of delivering one additional megawatt-hour to that node, incorporating both energy and congestion components. Correctly computing LMPs from the dual variables of a social welfare maximization problem formulated in CVXPY requires careful attention to sign conventions: because CVXPY internally solves a maximization problem as an equivalent minimization, raw dual values must be sign-corrected before they can be interpreted as market prices [<xref ref-type="bibr" rid="B7">7</xref>].</p>
      <sec id="sec1dot1">
        <title>1.1. Motivation and Research Gap</title>
        <p>Despite an extensive literature on stochastic wind integration [<xref ref-type="bibr" rid="B8">8</xref>][<xref ref-type="bibr" rid="B9">9</xref>] and nodal pricing [<xref ref-type="bibr" rid="B10">10</xref>], a gap persists between 1) theoretically rigorous dual-variable LMP extraction in modern convex-programming solvers and 2) practical penetration sensitivity studies that track welfare, price, and curtailment jointly across a wide range of wind penetration levels. Most existing studies either focus on a single penetration scenario or aggregate prices spatially, obscuring the nodal heterogeneity that drives investment signals and congestion rent allocation.</p>
      </sec>
      <sec id="sec1dot2">
        <title>1.2. Contributions</title>
        <p>This paper makes four contributions. It first develops a formally correct sign-correction methodology for extracting nodal LMPs from CVXPY dual variables under a scenario-based social welfare maximization framework, including an explicit derivation of the sign relationship between the equality (power-balance) and inequality (line-flow) dual variables. Second, it presents a high-resolution penetration sensitivity sweep (5% - 50% in 5 percentage-point steps) on the IEEE 30-bus system that simultaneously tracks social welfare, marginal welfare, expected LMP, LMP variance, wind curtailment volume and rate, generation mix, and congestion patterns. Third, the paper analyses the “absorption knee”—the penetration threshold beyond which curtailment accelerates rapidly—and relates it to binding network constraints and changes in price formation. Fourth, hourly and nodal LMP decompositions are presented that reveal the spatiotemporal structure of price impacts, providing information relevant to transmission investment and market design.</p>
      </sec>
      <sec id="sec1dot3">
        <title>1.3. Paper Organization</title>
        <p>Section 2 presents the mathematical formulation of the stochastic SWM problem. Section 3 derives the sign-corrected LMP formula from dual theory. Section 4 describes the test system and scenario generation. Section 5 reports and interprets the numerical results. Section 6 discusses policy and market-design implications. Section 7 concludes.</p>
      </sec>
    </sec>
    <sec id="sec2">
      <title>2. Mathematical Model Formulation</title>
      <sec id="sec2dot1">
        <title>2.1. System Notation</title>
        <p>Let <inline-formula><mml:math><mml:mrow><mml:mi mathvariant="script"> N </mml:mi><mml:mo> , </mml:mo><mml:mi mathvariant="script"> G </mml:mi><mml:mo> , </mml:mo><mml:mi mathvariant="script"> W </mml:mi><mml:mo> , </mml:mo><mml:mi> ℒ </mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math><mml:mi> ℰ </mml:mi></mml:math></inline-formula> denote the sets of buses, conventional generators, wind farms, loads, and transmission lines, respectively. Time is indexed by <inline-formula><mml:math><mml:mrow><mml:mi> t </mml:mi><mml:mo> ∈ </mml:mo><mml:mi mathvariant="script"> T </mml:mi><mml:mo> = </mml:mo><mml:mrow><mml:mo> { </mml:mo><mml:mrow><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mo> ⋯ </mml:mo><mml:mo> , </mml:mo><mml:mi> T </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> } </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> and wind-output scenarios by <inline-formula><mml:math><mml:mrow><mml:mi> s </mml:mi><mml:mo> ∈ </mml:mo><mml:mi mathvariant="script"> S </mml:mi><mml:mo> = </mml:mo><mml:mrow><mml:mo> { </mml:mo><mml:mrow><mml:mn> 1 </mml:mn><mml:mo> , </mml:mo><mml:mo> ⋯ </mml:mo><mml:mo> , </mml:mo><mml:mi> S </mml:mi></mml:mrow><mml:mo> } </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> with probability <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> π </mml:mi><mml:mi> s </mml:mi></mml:msub><mml:mo> &gt; </mml:mo><mml:mn> 0 </mml:mn></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:mstyle displaystyle="true"><mml:msub><mml:mo> ∑ </mml:mo><mml:mi> s </mml:mi></mml:msub><mml:mrow><mml:msub><mml:mi> π </mml:mi><mml:mi> s </mml:mi></mml:msub></mml:mrow></mml:mstyle><mml:mo> = </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:math></inline-formula> The PTDF matrix <inline-formula><mml:math><mml:mrow><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> H </mml:mi></mml:mstyle><mml:mo> ∈ </mml:mo><mml:msup><mml:mi> ℝ </mml:mi><mml:mrow><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="double-struck"> E </mml:mi><mml:mo> | </mml:mo></mml:mrow><mml:mo> × </mml:mo><mml:mrow><mml:mo> | </mml:mo><mml:mi> ℕ </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> maps nodal net injections to line flows under the DC approximation. This model adopts a single-stage scenario-based stochastic optimization framework: all dispatch decisions are made conditional on the realized wind scenario, with decision variables explicitly dependent on the scenario index <italic>s</italic>.</p>
      </sec>
      <sec id="sec2dot2">
        <title>2.2. Decision Variables</title>
        <p>The primary decision variables are: <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> p </mml:mi><mml:mrow><mml:mi> g </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> , the active power output (MW) of generator <inline-formula><mml:math><mml:mi> g </mml:mi></mml:math></inline-formula> at time <inline-formula><mml:math><mml:mi> t </mml:mi></mml:math></inline-formula> in scenario <inline-formula><mml:math><mml:mi> s </mml:mi></mml:math></inline-formula> ; <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> p </mml:mi><mml:mrow><mml:mi> ω </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> , the accepted wind output (MW) of farm <inline-formula><mml:math><mml:mi> ω </mml:mi></mml:math></inline-formula> ; and <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> p </mml:mi><mml:mrow><mml:mi> d </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> , the load served (MW) for demand <inline-formula><mml:math><mml:mi> d </mml:mi></mml:math></inline-formula> .</p>
      </sec>
      <sec id="sec2dot3">
        <title>2.3. Objective Function</title>
        <p>The social welfare maximization objective is:</p>
        <disp-formula id="FD1">
          <label>(1)</label>
          <mml:math>
            <mml:mrow>
              <mml:mi>max</mml:mi>
              <mml:mstyle displaystyle="true">
                <mml:munderover>
                  <mml:mo>∑</mml:mo>
                  <mml:mrow>
                    <mml:mi>s</mml:mi>
                    <mml:mo>=</mml:mo>
                    <mml:mn>1</mml:mn>
                  </mml:mrow>
                  <mml:mi>S</mml:mi>
                </mml:munderover>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>π</mml:mi>
                    <mml:mi>s</mml:mi>
                  </mml:msub>
                </mml:mrow>
              </mml:mstyle>
              <mml:mstyle displaystyle="true">
                <mml:munder>
                  <mml:mo>∑</mml:mo>
                  <mml:mrow>
                    <mml:mi>t</mml:mi>
                    <mml:mo>∈</mml:mo>
                    <mml:mi mathvariant="script">T</mml:mi>
                  </mml:mrow>
                </mml:munder>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:msup>
                        <mml:mi>α</mml:mi>
                        <mml:mo>⊤</mml:mo>
                      </mml:msup>
                      <mml:msub>
                        <mml:mi>p</mml:mi>
                        <mml:mrow>
                          <mml:mi>d</mml:mi>
                          <mml:mo>,</mml:mo>
                          <mml:mi>t</mml:mi>
                          <mml:mo>,</mml:mo>
                          <mml:mi>s</mml:mi>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>−</mml:mo>
                      <mml:msup>
                        <mml:mstyle mathvariant="bold" mathsize="normal">
                          <mml:mi>b</mml:mi>
                        </mml:mstyle>
                        <mml:mo>⊤</mml:mo>
                      </mml:msup>
                      <mml:msub>
                        <mml:mi>p</mml:mi>
                        <mml:mrow>
                          <mml:mi>g</mml:mi>
                          <mml:mo>,</mml:mo>
                          <mml:mi>t</mml:mi>
                          <mml:mo>,</mml:mo>
                          <mml:mi>s</mml:mi>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>−</mml:mo>
                      <mml:msub>
                        <mml:mi>c</mml:mi>
                        <mml:mi>ω</mml:mi>
                      </mml:msub>
                      <mml:msup>
                        <mml:mn>1</mml:mn>
                        <mml:mo>⊤</mml:mo>
                      </mml:msup>
                      <mml:msub>
                        <mml:mi>p</mml:mi>
                        <mml:mrow>
                          <mml:mi>ω</mml:mi>
                          <mml:mo>,</mml:mo>
                          <mml:mi>t</mml:mi>
                          <mml:mo>,</mml:mo>
                          <mml:mi>s</mml:mi>
                        </mml:mrow>
                      </mml:msub>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
              </mml:mstyle>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:mi> α </mml:mi><mml:mo> ∈ </mml:mo><mml:msup><mml:mi> ℝ </mml:mi><mml:mrow><mml:mrow><mml:mo> | </mml:mo><mml:mi> ℒ </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is the vector of consumer valuation coefficients (bid prices), <inline-formula><mml:math><mml:mrow><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> b </mml:mi></mml:mstyle><mml:mo> ∈ </mml:mo><mml:msup><mml:mi> ℝ </mml:mi><mml:mrow><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="script"> G </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is the vector of conventional generation marginal costs, and <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> c </mml:mi><mml:mi> ω </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mrow><mml:mrow><mml:mi> $ </mml:mi><mml:mn> 5 </mml:mn></mml:mrow><mml:mo> / </mml:mo><mml:mrow><mml:mtext> MWh </mml:mtext></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula> is a uniform opportunity cost assigned to wind to reflect system services and produce non-trivial wind dispatch decisions.</p>
      </sec>
      <sec id="sec2dot4">
        <title>2.4. Constraints</title>
        <p>Generator capacity:</p>
        <disp-formula id="FD2">
          <label>(2)</label>
          <mml:math>
            <mml:mrow>
              <mml:msubsup>
                <mml:mi>P</mml:mi>
                <mml:mi>g</mml:mi>
                <mml:mrow>
                  <mml:mi>min</mml:mi>
                </mml:mrow>
              </mml:msubsup>
              <mml:mo>≤</mml:mo>
              <mml:msub>
                <mml:mi>p</mml:mi>
                <mml:mrow>
                  <mml:mi>g</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>≤</mml:mo>
              <mml:msubsup>
                <mml:mi>P</mml:mi>
                <mml:mi>g</mml:mi>
                <mml:mrow>
                  <mml:mi>max</mml:mi>
                </mml:mrow>
              </mml:msubsup>
              <mml:mo>,</mml:mo>
              <mml:mo>∀</mml:mo>
              <mml:mi>g</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>t</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>s</mml:mi>
              <mml:mo>.</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Wind availability:</p>
        <disp-formula id="FD3">
          <label>(3)</label>
          <mml:math>
            <mml:mrow>
              <mml:mn>0</mml:mn>
              <mml:mo>≤</mml:mo>
              <mml:msub>
                <mml:mi>p</mml:mi>
                <mml:mrow>
                  <mml:mi>ω</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>≤</mml:mo>
              <mml:msub>
                <mml:mrow>
                  <mml:mover accent="true">
                    <mml:mi>ω</mml:mi>
                    <mml:mo stretchy="true">˜</mml:mo>
                  </mml:mover>
                </mml:mrow>
                <mml:mrow>
                  <mml:mi>ω</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>,</mml:mo>
              <mml:mo>∀</mml:mo>
              <mml:mi>ω</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>t</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>s</mml:mi>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mi> ω </mml:mi><mml:mo stretchy="true"> ˜ </mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi> ω </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:msub><mml:mi> ξ </mml:mi><mml:mrow><mml:mi> ω </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub><mml:mo> ⋅ </mml:mo><mml:mi> γ </mml:mi></mml:mrow></mml:math></inline-formula> is the available wind output in scenario <inline-formula><mml:math><mml:mi> s </mml:mi></mml:math></inline-formula> scaled by the penetration factor <inline-formula><mml:math><mml:mi> γ </mml:mi></mml:math></inline-formula> .</p>
        <p>Load serving:</p>
        <disp-formula id="FD4">
          <label>(4)</label>
          <mml:math>
            <mml:mrow>
              <mml:mn>0</mml:mn>
              <mml:mo>≤</mml:mo>
              <mml:msub>
                <mml:mi>p</mml:mi>
                <mml:mrow>
                  <mml:mi>d</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>≤</mml:mo>
              <mml:msubsup>
                <mml:mi>d</mml:mi>
                <mml:mi>d</mml:mi>
                <mml:mrow>
                  <mml:mi>max</mml:mi>
                </mml:mrow>
              </mml:msubsup>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mi>t</mml:mi>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>,</mml:mo>
              <mml:mo>∀</mml:mo>
              <mml:mi>d</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>t</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>s</mml:mi>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mi> d </mml:mi><mml:mi> d </mml:mi><mml:mrow><mml:mtext> max </mml:mtext></mml:mrow></mml:msubsup><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:msubsup><mml:mi> D </mml:mi><mml:mi> d </mml:mi><mml:mrow><mml:mtext> base </mml:mtext></mml:mrow></mml:msubsup><mml:mo> ⋅ </mml:mo><mml:mi> ϕ </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mi> t </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> is the time-varying maximum demand.</p>
        <p>Nodal power balance (equality, dual variable <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> λ </mml:mi><mml:mrow><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub><mml:mo> ∈ </mml:mo><mml:mi> ℝ </mml:mi></mml:mrow></mml:math></inline-formula> ):</p>
        <disp-formula id="FD5">
          <label>(5)</label>
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mstyle mathvariant="bold" mathsize="normal">
                  <mml:mi>M</mml:mi>
                </mml:mstyle>
                <mml:mi>g</mml:mi>
              </mml:msub>
              <mml:msub>
                <mml:mi>p</mml:mi>
                <mml:mrow>
                  <mml:mi>g</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>+</mml:mo>
              <mml:msub>
                <mml:mstyle mathvariant="bold" mathsize="normal">
                  <mml:mi>M</mml:mi>
                </mml:mstyle>
                <mml:mi>ω</mml:mi>
              </mml:msub>
              <mml:msub>
                <mml:mi>p</mml:mi>
                <mml:mrow>
                  <mml:mi>ω</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>−</mml:mo>
              <mml:msub>
                <mml:mstyle mathvariant="bold" mathsize="normal">
                  <mml:mi>M</mml:mi>
                </mml:mstyle>
                <mml:mi>d</mml:mi>
              </mml:msub>
              <mml:msub>
                <mml:mi>p</mml:mi>
                <mml:mrow>
                  <mml:mi>d</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>,</mml:mo>
              <mml:mo>∀</mml:mo>
              <mml:mi>t</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>s</mml:mi>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:msub><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> M </mml:mi></mml:mstyle><mml:mi> g </mml:mi></mml:msub><mml:mo> ∈ </mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo> { </mml:mo><mml:mrow><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> } </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="script"> N </mml:mi><mml:mo> | </mml:mo></mml:mrow><mml:mo> × </mml:mo><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="script"> G </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:msub><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> M </mml:mi></mml:mstyle><mml:mi> ω </mml:mi></mml:msub><mml:mo> ∈ </mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo> { </mml:mo><mml:mrow><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> } </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="script"> N </mml:mi><mml:mo> | </mml:mo></mml:mrow><mml:mo> × </mml:mo><mml:mrow><mml:mo> | </mml:mo><mml:mi> ω </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> , and <inline-formula><mml:math><mml:mrow><mml:msub><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> M </mml:mi></mml:mstyle><mml:mi> d </mml:mi></mml:msub><mml:mo> ∈ </mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo> { </mml:mo><mml:mrow><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> } </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="script"> N </mml:mi><mml:mo> | </mml:mo></mml:mrow><mml:mo> × </mml:mo><mml:mrow><mml:mo> | </mml:mo><mml:mi> L </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> ode-unit incidence matrices. This constraint enforces nodal power balance (Kirchhoff’s Current Law, KCL) for every individual bus in the system: the left-hand side of the equation is a <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="script"> N </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> -dimensional vector, with each entry corresponding to the power balance of one bus. The dual variable <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> λ </mml:mi><mml:mrow><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is a <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="script"> N </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> -dimensional vector, where its <italic>n</italic>-th entry <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> λ </mml:mi><mml:mrow><mml:mi> n </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> represents the marginal energy price at bus n, time t, scenario s.</p>
        <p>Line flow limits (inequality, dual variables <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mi> μ </mml:mi><mml:mrow><mml:mi> e </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow><mml:mo> + </mml:mo></mml:msubsup><mml:mo> , </mml:mo><mml:msubsup><mml:mi> μ </mml:mi><mml:mrow><mml:mi> e </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow><mml:mo> − </mml:mo></mml:msubsup><mml:mo> ≥ </mml:mo><mml:mn> 0 </mml:mn></mml:mrow></mml:math></inline-formula> ):</p>
        <disp-formula id="FD6">
          <label>(6)</label>
          <mml:math>
            <mml:mrow>
              <mml:mo>−</mml:mo>
              <mml:msubsup>
                <mml:mi>F</mml:mi>
                <mml:mi>e</mml:mi>
                <mml:mrow>
                  <mml:mtext>max</mml:mtext>
                </mml:mrow>
              </mml:msubsup>
              <mml:mo>≤</mml:mo>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mstyle mathvariant="bold" mathsize="normal">
                        <mml:mi>H</mml:mi>
                      </mml:mstyle>
                      <mml:msub>
                        <mml:mstyle mathvariant="bold" mathsize="normal">
                          <mml:mi>n</mml:mi>
                        </mml:mstyle>
                        <mml:mrow>
                          <mml:mi>t</mml:mi>
                          <mml:mo>,</mml:mo>
                          <mml:mi>s</mml:mi>
                        </mml:mrow>
                      </mml:msub>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mi>e</mml:mi>
              </mml:msub>
              <mml:mo>≤</mml:mo>
              <mml:msubsup>
                <mml:mi>F</mml:mi>
                <mml:mi>e</mml:mi>
                <mml:mrow>
                  <mml:mtext>max</mml:mtext>
                </mml:mrow>
              </mml:msubsup>
              <mml:mo>,</mml:mo>
              <mml:mo>∀</mml:mo>
              <mml:mi>e</mml:mi>
              <mml:mo>∈</mml:mo>
              <mml:mi>ℰ</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>t</mml:mi>
              <mml:mo>,</mml:mo>
              <mml:mi>s</mml:mi>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:msub><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> n </mml:mi></mml:mstyle><mml:mrow><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:msub><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> M </mml:mi></mml:mstyle><mml:mi> g </mml:mi></mml:msub><mml:msub><mml:mi> p </mml:mi><mml:mrow><mml:mi> g </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub><mml:mo> + </mml:mo><mml:msub><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> M </mml:mi></mml:mstyle><mml:mi> ω </mml:mi></mml:msub><mml:msub><mml:mi> p </mml:mi><mml:mrow><mml:mi> ω </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub><mml:mo> − </mml:mo><mml:msub><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> M </mml:mi></mml:mstyle><mml:mi> d </mml:mi></mml:msub><mml:msub><mml:mi> p </mml:mi><mml:mrow><mml:mi> d </mml:mi><mml:mo> , </mml:mo><mml:mi> t </mml:mi><mml:mo> , </mml:mo><mml:mi> s </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the vector of nodal net injections.</p>
        <p>The full problem (1)-(6) is a linear programme (LP) solved via the ECOS interior-point solver [<xref ref-type="bibr" rid="B11">11</xref>] through the CVXPY modelling layer [<xref ref-type="bibr" rid="B7">7</xref>].</p>
      </sec>
    </sec>
    <sec id="sec3">
      <title>3. Nodal LMP Extraction: Sign-Correction Theory</title>
      <sec id="sec3dot1">
        <title>3.1 Standard Dual-Variable LMP Formula</title>
        <p>For a minimization problem, the Lagrangian associated with problem (1)-(6) yields the standard nodal LMP:</p>
        <disp-formula id="FD7">
          <label>(7)</label>
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mi>λ</mml:mi>
                <mml:mi>n</mml:mi>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:mover accent="true">
                <mml:mi>λ</mml:mi>
                <mml:mo>¯</mml:mo>
              </mml:mover>
              <mml:mo>+</mml:mo>
              <mml:mstyle displaystyle="true">
                <mml:munder>
                  <mml:mo>∑</mml:mo>
                  <mml:mi>e</mml:mi>
                </mml:munder>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>H</mml:mi>
                    <mml:mrow>
                      <mml:mi>e</mml:mi>
                      <mml:mi>n</mml:mi>
                    </mml:mrow>
                  </mml:msub>
                </mml:mrow>
              </mml:mstyle>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:msubsup>
                    <mml:mover accent="true">
                      <mml:mi>μ</mml:mi>
                      <mml:mo>¯</mml:mo>
                    </mml:mover>
                    <mml:mi>e</mml:mi>
                    <mml:mo>+</mml:mo>
                  </mml:msubsup>
                  <mml:mo>−</mml:mo>
                  <mml:msubsup>
                    <mml:mover accent="true">
                      <mml:mi>μ</mml:mi>
                      <mml:mo>¯</mml:mo>
                    </mml:mover>
                    <mml:mi>e</mml:mi>
                    <mml:mo>−</mml:mo>
                  </mml:msubsup>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math display="inline"><mml:mover accent="true"><mml:mi> λ </mml:mi><mml:mo> ¯ </mml:mo></mml:mover></mml:math></inline-formula> is the nodal marginal energy price (dual variable of the nodal power balance constraint at bus <inline-formula><mml:math><mml:mi> n </mml:mi></mml:math></inline-formula> ) and <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> H </mml:mi><mml:mrow><mml:mi> e </mml:mi><mml:mi> n </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> e </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> entry of <inline-formula><mml:math><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mi> H </mml:mi></mml:mstyle></mml:math></inline-formula> .</p>
      </sec>
      <sec id="sec3dot2">
        <title>3.2. CVXPY Sign Convention</title>
        <p>CVXPY converts the maximization (1) to a minimization of <inline-formula><mml:math><mml:mrow><mml:mo> − </mml:mo><mml:mtext> SW </mml:mtext></mml:mrow></mml:math></inline-formula> . Under this internal representation:</p>
        <p>For the equality constraint (5), CVXPY returns the dual variable <inline-formula><mml:math><mml:mover accent="true"><mml:mi> λ </mml:mi><mml:mo> ^ </mml:mo></mml:mover></mml:math></inline-formula> of the minimization problem; the relationship to the economic price is <inline-formula><mml:math><mml:mrow><mml:mover accent="true"><mml:mi> λ </mml:mi><mml:mo> ¯ </mml:mo></mml:mover><mml:mo> = </mml:mo><mml:mo> − </mml:mo><mml:mover accent="true"><mml:mi> λ </mml:mi><mml:mo> ^ </mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> . For the inequality constraints (6), CVXPY returns <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi> μ </mml:mi><mml:mo> ^ </mml:mo></mml:mover><mml:mi> e </mml:mi><mml:mo> + </mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi> μ </mml:mi><mml:mo> ^ </mml:mo></mml:mover><mml:mi> e </mml:mi><mml:mo> − </mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> as shadow costs of the minimization, which correspond to <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi> μ </mml:mi><mml:mo> ¯ </mml:mo></mml:mover><mml:mi> e </mml:mi><mml:mo> + </mml:mo></mml:msubsup><mml:mo> = </mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi> μ </mml:mi><mml:mo> ^ </mml:mo></mml:mover><mml:mi> e </mml:mi><mml:mo> + </mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi> μ </mml:mi><mml:mo> ¯ </mml:mo></mml:mover><mml:mi> e </mml:mi><mml:mo> − </mml:mo></mml:msubsup><mml:mo> = </mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi> μ </mml:mi><mml:mo> ^ </mml:mo></mml:mover><mml:mi> e </mml:mi><mml:mo> − </mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> in the original maximization (sign unchanged, as CVXPY’s dual convention for “≤” inequalities in a maximization already yields non-negative values consistent with complementary slackness).</p>
        <p>Therefore, the correct sign-corrected nodal LMP extracted from CVXPY dual values is:</p>
        <disp-formula id="FD8">
          <label>(8)</label>
          <mml:math>
            <mml:mrow>
              <mml:msubsup>
                <mml:mi>λ</mml:mi>
                <mml:mi>n</mml:mi>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mtext>market</mml:mtext>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                </mml:mrow>
              </mml:msubsup>
              <mml:mo>=</mml:mo>
              <mml:mo>−</mml:mo>
              <mml:mover accent="true">
                <mml:mi>λ</mml:mi>
                <mml:mo>^</mml:mo>
              </mml:mover>
              <mml:mo>+</mml:mo>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:msup>
                        <mml:mstyle mathsize="normal" mathvariant="bold">
                          <mml:mi>H</mml:mi>
                        </mml:mstyle>
                        <mml:mo>⊤</mml:mo>
                      </mml:msup>
                      <mml:mrow>
                        <mml:mo>(</mml:mo>
                        <mml:mrow>
                          <mml:msup>
                            <mml:mover accent="true">
                              <mml:mi>μ</mml:mi>
                              <mml:mo>^</mml:mo>
                            </mml:mover>
                            <mml:mo>+</mml:mo>
                          </mml:msup>
                          <mml:mo>−</mml:mo>
                          <mml:msup>
                            <mml:mover accent="true">
                              <mml:mi>μ</mml:mi>
                              <mml:mo>^</mml:mo>
                            </mml:mover>
                            <mml:mo>−</mml:mo>
                          </mml:msup>
                        </mml:mrow>
                        <mml:mo>)</mml:mo>
                      </mml:mrow>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mi>n</mml:mi>
              </mml:msub>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Under this formula, <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mi> λ </mml:mi><mml:mi> n </mml:mi><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mtext> market </mml:mtext></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo> &gt; </mml:mo><mml:mn> 0 </mml:mn></mml:mrow></mml:math></inline-formula> in normal operation (demand exceeds freely available wind, marginal generator dispatched at positive cost) and <inline-formula><mml:math><mml:mrow><mml:msubsup><mml:mi> λ </mml:mi><mml:mi> n </mml:mi><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mtext> market </mml:mtext></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo> ≤ </mml:mo><mml:mn> 0 </mml:mn></mml:mrow></mml:math></inline-formula> only when oversupply occurs—consistent with negative pricing episodes observed in real markets during high-wind periods [<xref ref-type="bibr" rid="B12">12</xref>].</p>
      </sec>
      <sec id="sec3dot3">
        <title>3.3. Curtailment Quantity</title>
        <p>Wind curtailment at farm <inline-formula><mml:math><mml:mi> ω </mml:mi></mml:math></inline-formula> in scenario <inline-formula><mml:math><mml:mi> s </mml:mi></mml:math></inline-formula> , hour <inline-formula><mml:math><mml:mi> t </mml:mi></mml:math></inline-formula> is</p>
        <disp-formula id="FD9">
          <label>(9)</label>
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mi>c</mml:mi>
                <mml:mrow>
                  <mml:mi>ω</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:mi>max</mml:mi>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:msub>
                    <mml:mrow>
                      <mml:mover accent="true">
                        <mml:mi>ω</mml:mi>
                        <mml:mo stretchy="true">¯</mml:mo>
                      </mml:mover>
                    </mml:mrow>
                    <mml:mrow>
                      <mml:mi>ω</mml:mi>
                      <mml:mo>,</mml:mo>
                      <mml:mi>t</mml:mi>
                      <mml:mo>,</mml:mo>
                      <mml:mi>s</mml:mi>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>−</mml:mo>
                  <mml:msubsup>
                    <mml:mi>p</mml:mi>
                    <mml:mrow>
                      <mml:mi>ω</mml:mi>
                      <mml:mo>,</mml:mo>
                      <mml:mi>t</mml:mi>
                      <mml:mo>,</mml:mo>
                      <mml:mi>s</mml:mi>
                    </mml:mrow>
                    <mml:mo>*</mml:mo>
                  </mml:msubsup>
                  <mml:mo>,</mml:mo>
                  <mml:mn>0</mml:mn>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>and the expected curtailment rate is</p>
        <disp-formula id="FD10">
          <label>(10)</label>
          <mml:math display="inline">
            <mml:mrow>
              <mml:mi>ρ</mml:mi>
              <mml:mo>=</mml:mo>
              <mml:mfrac>
                <mml:mrow>
                  <mml:mstyle displaystyle="true">
                    <mml:msub>
                      <mml:mo>∑</mml:mo>
                      <mml:mi>s</mml:mi>
                    </mml:msub>
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>π</mml:mi>
                        <mml:mi>s</mml:mi>
                      </mml:msub>
                    </mml:mrow>
                  </mml:mstyle>
                  <mml:mstyle displaystyle="true">
                    <mml:msub>
                      <mml:mo>∑</mml:mo>
                      <mml:mi>t</mml:mi>
                    </mml:msub>
                    <mml:mrow>
                      <mml:mstyle displaystyle="true">
                        <mml:msub>
                          <mml:mo>∑</mml:mo>
                          <mml:mi>ω</mml:mi>
                        </mml:msub>
                        <mml:mrow>
                          <mml:msub>
                            <mml:mi>c</mml:mi>
                            <mml:mrow>
                              <mml:mi>ω</mml:mi>
                              <mml:mo>,</mml:mo>
                              <mml:mi>t</mml:mi>
                              <mml:mo>,</mml:mo>
                              <mml:mi>s</mml:mi>
                            </mml:mrow>
                          </mml:msub>
                        </mml:mrow>
                      </mml:mstyle>
                    </mml:mrow>
                  </mml:mstyle>
                </mml:mrow>
                <mml:mrow>
                  <mml:mstyle displaystyle="true">
                    <mml:msub>
                      <mml:mo>∑</mml:mo>
                      <mml:mi>s</mml:mi>
                    </mml:msub>
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>π</mml:mi>
                        <mml:mi>s</mml:mi>
                      </mml:msub>
                    </mml:mrow>
                  </mml:mstyle>
                  <mml:mstyle displaystyle="true">
                    <mml:msub>
                      <mml:mo>∑</mml:mo>
                      <mml:mi>t</mml:mi>
                    </mml:msub>
                    <mml:mrow>
                      <mml:mstyle displaystyle="true">
                        <mml:msub>
                          <mml:mo>∑</mml:mo>
                          <mml:mi>ω</mml:mi>
                        </mml:msub>
                        <mml:mrow>
                          <mml:msub>
                            <mml:mrow>
                              <mml:mover accent="true">
                                <mml:mi>ω</mml:mi>
                                <mml:mo stretchy="true">˜</mml:mo>
                              </mml:mover>
                            </mml:mrow>
                            <mml:mrow>
                              <mml:mi>ω</mml:mi>
                              <mml:mo>,</mml:mo>
                              <mml:mi>t</mml:mi>
                              <mml:mo>,</mml:mo>
                              <mml:mi>s</mml:mi>
                            </mml:mrow>
                          </mml:msub>
                        </mml:mrow>
                      </mml:mstyle>
                    </mml:mrow>
                  </mml:mstyle>
                </mml:mrow>
              </mml:mfrac>
              <mml:mo>×</mml:mo>
              <mml:mn>100</mml:mn>
              <mml:mi>%</mml:mi>
            </mml:mrow>
          </mml:math>
        </disp-formula>
      </sec>
      <sec id="sec3dot4">
        <title>3.4. Curtailment Quantity</title>
        <p>The marginal social welfare with respect to wind penetration is estimated numerically by central differencing:</p>
        <disp-formula id="FD11">
          <label>(11)</label>
          <mml:math>
            <mml:mrow>
              <mml:mfrac>
                <mml:mrow>
                  <mml:mo>∂</mml:mo>
                  <mml:mtext>SW</mml:mtext>
                </mml:mrow>
                <mml:mrow>
                  <mml:mo>∂</mml:mo>
                  <mml:mi>γ</mml:mi>
                </mml:mrow>
              </mml:mfrac>
              <mml:mo>≈</mml:mo>
              <mml:mfrac>
                <mml:mrow>
                  <mml:mtext>SW</mml:mtext>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mi>γ</mml:mi>
                      <mml:mo>+</mml:mo>
                      <mml:mi>Δ</mml:mi>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                  <mml:mo>−</mml:mo>
                  <mml:mtext>SW</mml:mtext>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mi>γ</mml:mi>
                      <mml:mo>−</mml:mo>
                      <mml:mi>Δ</mml:mi>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mrow>
                  <mml:mn>2</mml:mn>
                  <mml:mi>Δ</mml:mi>
                </mml:mrow>
              </mml:mfrac>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:mi> Δ </mml:mi><mml:mo> = </mml:mo><mml:mn> 5 </mml:mn></mml:mrow></mml:math></inline-formula> percentage points and <inline-formula><mml:math><mml:mrow><mml:mi> γ </mml:mi><mml:mo> ∈ </mml:mo><mml:mrow><mml:mo> { </mml:mo><mml:mrow><mml:mn> 5 </mml:mn><mml:mi> % </mml:mi><mml:mo> , </mml:mo><mml:mn> 10 </mml:mn><mml:mi> % </mml:mi><mml:mo> , </mml:mo><mml:mo> ⋯ </mml:mo><mml:mo> , </mml:mo><mml:mn> 50 </mml:mn><mml:mi> % </mml:mi></mml:mrow><mml:mo> } </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> .</p>
      </sec>
    </sec>
    <sec id="sec4">
      <title>4. Test System and Data</title>
      <sec id="sec4dot1">
        <title>4.1. IEEE 30-Bus System</title>
        <p>The IEEE 30-bus benchmark system [<xref ref-type="bibr" rid="B13">13</xref>] comprises 30 buses, 6 conventional generators, and 41 transmission branches. It has long served as a standard platform for testing market-clearing algorithms owing to its moderate size (amenable to exact LP solution) and representative topology (radial and meshed elements, multiple voltage levels). <bold>Table 1</bold> summarises the main system parameters used in this study.</p>
        <p><bold>Table 1.</bold>IEEE 30-Bus system summary.</p>
        <table-wrap id="tbl1">
          <label>Table 1</label>
          <table>
            <tbody>
              <tr>
                <td>Parameter</td>
                <td>Value</td>
              </tr>
              <tr>
                <td>
                  Number of buses
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mrow>
                              <mml:mo>|</mml:mo>
                              <mml:mi mathvariant="script">N</mml:mi>
                              <mml:mo>|</mml:mo>
                            </mml:mrow>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
                <td>30</td>
              </tr>
              <tr>
                <td>
                  Number of conventional generators
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mrow>
                              <mml:mo>|</mml:mo>
                              <mml:mi mathvariant="script">G</mml:mi>
                              <mml:mo>|</mml:mo>
                            </mml:mrow>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
                <td>6</td>
              </tr>
              <tr>
                <td>
                  Number of wind farms
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mrow>
                              <mml:mo>|</mml:mo>
                              <mml:mi mathvariant="script">W</mml:mi>
                              <mml:mo>|</mml:mo>
                            </mml:mrow>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
                <td>3</td>
              </tr>
              <tr>
                <td>
                  Number of loads
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mrow>
                              <mml:mo>|</mml:mo>
                              <mml:mi>ℒ</mml:mi>
                              <mml:mo>|</mml:mo>
                            </mml:mrow>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
                <td>20</td>
              </tr>
              <tr>
                <td>
                  Number of transmission lines
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mrow>
                              <mml:mo>|</mml:mo>
                              <mml:mi>ε</mml:mi>
                              <mml:mo>|</mml:mo>
                            </mml:mrow>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
                <td>41</td>
              </tr>
              <tr>
                <td>
                  Planning horizon (
                  <italic>T</italic>
                  )
                </td>
                <td>24 h</td>
              </tr>
              <tr>
                <td>
                  Number of wind scenarios (
                  <italic>S</italic>
                  )
                </td>
                <td>10</td>
              </tr>
              <tr>
                <td>
                  Wind marginal cost (
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:msub>
                          <mml:mi>c</mml:mi>
                          <mml:mi>ω</mml:mi>
                        </mml:msub>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  )
                </td>
                <td>$5/MWh</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
      </sec>
      <sec id="sec4dot2">
        <title>4.2. Wind Scenario Generation</title>
        <p>Wind scenarios are generated using a Monte Carlo procedure calibrated to a normalised diurnal wind profile with added zero-mean Gaussian perturbations. Each scenario <inline-formula><mml:math><mml:mi> s </mml:mi></mml:math></inline-formula> provides a <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> T </mml:mi><mml:mo> × </mml:mo><mml:mrow><mml:mo> | </mml:mo><mml:mi mathvariant="script"> W </mml:mi><mml:mo> | </mml:mo></mml:mrow></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> matrix <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> ξ </mml:mi><mml:mi> s </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of per-unit wind availability values in <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ] </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> . The available wind output for penetration level <inline-formula><mml:math><mml:mi> γ </mml:mi></mml:math></inline-formula> is</p>
        <disp-formula id="FD12">
          <label>(12)</label>
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mrow>
                  <mml:mover accent="true">
                    <mml:mi>ω</mml:mi>
                    <mml:mo stretchy="true">˜</mml:mo>
                  </mml:mover>
                </mml:mrow>
                <mml:mrow>
                  <mml:mi>ω</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:msub>
                <mml:mi>ξ</mml:mi>
                <mml:mrow>
                  <mml:mi>ω</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>t</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>s</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>⋅</mml:mo>
              <mml:mrow>
                <mml:mi>γ</mml:mi>
                <mml:mo>/</mml:mo>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>γ</mml:mi>
                    <mml:mn>0</mml:mn>
                  </mml:msub>
                </mml:mrow>
              </mml:mrow>
              <mml:mo>⋅</mml:mo>
              <mml:msubsup>
                <mml:mi>W</mml:mi>
                <mml:mi>ω</mml:mi>
                <mml:mrow>
                  <mml:mtext>rated</mml:mtext>
                </mml:mrow>
              </mml:msubsup>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> γ </mml:mi><mml:mn> 0 </mml:mn></mml:msub><mml:mo> = </mml:mo><mml:mn> 20 </mml:mn><mml:mtext> % </mml:mtext></mml:mrow></mml:math></inline-formula> corresponds to the baseline rated capacity and <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mi> γ </mml:mi><mml:mo> / </mml:mo><mml:mrow><mml:msub><mml:mi> γ </mml:mi><mml:mn> 0 </mml:mn></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula> is the penetration scaling factor. Equal scenario probabilities <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> π </mml:mi><mml:mi> s </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mrow><mml:mn> 1 </mml:mn><mml:mo> / </mml:mo><mml:mi> S </mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> are used. The base diurnal profile follows a standard double-peak wind pattern, with zero-mean Gaussian perturbations of 0.1 p.u. standard deviation, hard-clipped to the [0, 1] p.u. feasible range; temporal correlation is set via an AR (1) model with 0.8 lag-1 coefficient, and spatial correlation matches the IEEE 30-bus topology.</p>
      </sec>
      <sec id="sec4dot3">
        <title>4.3. Load Profile</title>
        <p>A deterministic 24-hour load profile ϕ(t) with a morning peak at hours 9 - 10 and an afternoon peak at hours 16 - 18 is applied uniformly to all load nodes. Bus-level base loads are taken from the standard IEEE 30-bus data.</p>
      </sec>
      <sec id="sec4dot4">
        <title>4.4. Penetration Sweep</title>
        <p>Wind penetration <inline-formula><mml:math><mml:mi> γ </mml:mi></mml:math></inline-formula> is swept from 5% to 50% in increments of 5 percentage points, yielding 10 model runs. All other system parameters are held constant across runs to isolate the effect of wind scale.</p>
      </sec>
    </sec>
    <sec id="sec5">
      <title>5. Results and Analysis</title>
      <sec id="sec5dot1">
        <title>5.1. Social Welfare and Marginal Welfare</title>
        <p><bold>Table 2</bold> summarizes the full set of key market metrics across the 5% - 50% wind penetration sweep, including expected social welfare, marginal welfare, system LMP statistics, wind curtailment metrics, and wind generation share.<xref ref-type="fig" rid="fig1">Figure 1(a)</xref> shows the expected social welfare as a function of wind penetration. Social welfare increases monotonically from $450.1 × 10<sup>3</sup>/h at 5% to $472.7 × 10<sup>3</sup>/h at 50%, reflecting a total gain of approximately $22.6 × 10<sup>3</sup>/h (roughly 5.0%) over the full penetration range, consistent with the aggregated results in <bold>Table 2</bold>. The relationship is approximately linear at low penetration but shows mild concavity at higher penetrations, consistent with the emergence of binding transmission and curtailment constraints.</p>
        <p><xref ref-type="fig" rid="fig1">Figure 1(b)</xref> quantifies this concavity through the marginal social welfare ∂SW/∂<italic>γ</italic>. At 5%, each additional percentage point of wind penetration contributes approximately 554/h. This marginal benefit remains close to $550/h through 20% penetration, then declines to ≈ $532/h at 30%, ≈ $429/h at 40%, and $387/h at 50%. The more pronounced inflection near 35% marks the onset of significant curtailment (see Section 5.4) and corresponds to the “absorption knee” of the system: the penetration threshold beyond which each additional unit of installed wind capacity delivers progressively less market value due to growing spillage and congestion.</p>
        <p><bold>Table 2.</bold> Summary of key market metrics across wind penetration levels.</p>
        <table-wrap id="tbl2">
          <label>Table 2</label>
          <table>
            <tbody>
              <tr>
                <td>Pen. (%)</td>
                <td>
                  SW ($ × 10
                  <sup>3</sup>
                  /h)
                </td>
                <td>∂SW/∂γ ($/h/%pt)</td>
                <td>E [LMP] ($/MWh)</td>
                <td>
                  <italic>σ</italic>
                  (LMP ($/MWh)
                </td>
                <td>Curtail. (MWh/h)</td>
                <td>Curtail. Rate (%)</td>
                <td>Wind Share (%)</td>
              </tr>
              <tr>
                <td>5</td>
                <td>450.10</td>
                <td>553.5</td>
                <td>1.071</td>
                <td>0.304</td>
                <td>0.0</td>
                <td>0.0</td>
                <td>3.2</td>
              </tr>
              <tr>
                <td>10</td>
                <td>452.87</td>
                <td>552.0</td>
                <td>1.084</td>
                <td>0.306</td>
                <td>0.0</td>
                <td>0.0</td>
                <td>6.4</td>
              </tr>
              <tr>
                <td>15</td>
                <td>455.62</td>
                <td>550.2</td>
                <td>1.087</td>
                <td>0.307</td>
                <td>0.0</td>
                <td>0.0</td>
                <td>9.6</td>
              </tr>
              <tr>
                <td>20</td>
                <td>458.37</td>
                <td>549.3</td>
                <td>1.087</td>
                <td>0.307</td>
                <td>0.0</td>
                <td>0.0</td>
                <td>12.7</td>
              </tr>
              <tr>
                <td>25</td>
                <td>461.12</td>
                <td>546.9</td>
                <td>1.086</td>
                <td>0.308</td>
                <td>0.2</td>
                <td>0.6</td>
                <td>15.9</td>
              </tr>
              <tr>
                <td>30</td>
                <td>463.84</td>
                <td>531.8</td>
                <td>1.085</td>
                <td>0.311</td>
                <td>1.0</td>
                <td>2.1</td>
                <td>19.1</td>
              </tr>
              <tr>
                <td>35</td>
                <td>466.43</td>
                <td>482.9</td>
                <td>1.059</td>
                <td>0.340</td>
                <td>10.0</td>
                <td>18.4</td>
                <td>22.1</td>
              </tr>
              <tr>
                <td>40</td>
                <td>468.67</td>
                <td>429.0</td>
                <td>1.043</td>
                <td>0.365</td>
                <td>43.6</td>
                <td>70.3</td>
                <td>24.7</td>
              </tr>
              <tr>
                <td>45</td>
                <td>470.72</td>
                <td>398.8</td>
                <td>1.036</td>
                <td>0.379</td>
                <td>89.6</td>
                <td>128.5</td>
                <td>27.1</td>
              </tr>
              <tr>
                <td>50</td>
                <td>472.66</td>
                <td>387.0</td>
                <td>1.030</td>
                <td>0.386</td>
                <td>144.8</td>
                <td>186.8</td>
                <td>29.4</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
      </sec>
      <sec id="sec5dot2">
        <title>5.2. Expected System LMP and Price Distribution</title>
        <p><xref ref-type="fig" rid="fig2">Figure 2(a)</xref> plots the expected system LMP together with its 1<italic>σ</italic> band. The mean price rises slightly from $1.071/MWh at 5% to a plateau of $1.087/MWh at 15% - 20% penetration, then declines more noticeably from 35% onwards, reaching $1.030/MWh at 50%. The overall decline across the full penetration range is roughly 3.8%. This modest downward trend in expected price is somewhat counterintuitive in light of the well-documented merit-order effect, and warrants explanation.</p>
        <p>In the present model, load-serving is treated as a decision variable bounded by exogenous maximum demand, rather than an inelastic obligation. The SWM dispatch satisfies demand up to the point where the shadow value of an additional MWh of consumption (<inline-formula><mml:math><mml:mi> α </mml:mi></mml:math></inline-formula> ) equals the marginal cost of supplying it. When wind displaces a conventional generator, the freed capacity allows demand to be served at lower variable cost, but the binding constraint on system price remains the demand bid <inline-formula><mml:math><mml:mi> α </mml:mi></mml:math></inline-formula> rather than the generator marginal cost. As a consequence, the clearing price converges to the demand-side value at each node, which is insensitive to the wind scale.</p>
        <p>The <inline-formula><mml:math><mml:mrow><mml:mo> ± </mml:mo><mml:mn> 1 </mml:mn><mml:mi> σ </mml:mi></mml:mrow></mml:math></inline-formula> band widens with penetration (from ≈ ±$0.30/MWh at 5% to ≈ ±$0.39/MWh at 50%), reflecting increasing cross-scenario price dispersion as wind variability interacts with binding transmission constraints.</p>
        <p>The near-flat expected LMP across the full penetration range is fundamentally driven by our capacity-bounded price-responsive demand specification. Unlike the standard inelastic fixed load setting where wind penetration suppresses wholesale prices via the merit-order effect, our model anchors the clearing price to the demand-side bid coefficient <inline-formula><mml:math><mml:mi> α </mml:mi></mml:math></inline-formula> when load approaches its physical upper limit. This result is highly sensitive to the demand calibration: the flat LMP profile would not hold under an inelastic fixed load setting, where LMP would decline monotonically with wind penetration.</p>
      </sec>
      <sec id="sec5dot3">
        <title>5.3. Wind Curtailment and the Absorption Knee</title>
        <p><xref ref-type="fig" rid="fig2">Figure 2(b)</xref> presents expected curtailment (absolute, left axis) and curtailment rate (right axis) as functions of penetration. Curtailment is zero through 20% and negligible at 25% ($0.2 MWh/h) and 30% ($1.0 MWh/h, curtailment rate 2.1%), then accelerates sharply: at35% the volume rises to $10 MWh/h (rate 18.4%); at 40% it reaches $43.6 MWh/h (70.3%);and at 50% the volume is $144.8 MWh/h with a curtailment-to-accepted rate of 186.8%, meaning the volume of curtailed wind is nearly 1.9 times the volume of wind actually accepted by the system.</p>
        <p>A curtailment rate exceeding 100% at 45% and 50% penetration indicates that the average curtailed output exceeds the output actually accepted—<italic>i.e.</italic>, most of the incremental wind capacity installed beyond ≈ 35% penetration is wasted owing to the inability of the network and load pattern to absorb it. This result underscores a fundamental asymmetry in wind integration: the incremental value of wind capacity is positive (marginal SW &gt; 0) throughout, but the rate of value creation declines steeply once physical constraints bind.</p>
        <p>The 30% penetration level emerges as the system’s effective absorption threshold. Below this threshold, the network accommodates wind freely; above it, congestion and power-balance constraints become progressively tighter, forcing increasing curtailment. This threshold is network- and topology-specific and will shift with transmission expansion or flexible demand introduction.</p>
      </sec>
      <sec id="sec5dot4">
        <title>5.4. Generation Mix</title>
        <p><xref ref-type="fig" rid="fig3">Figure 3(a)</xref> shows the stacked generation mix as a function of penetration. Wind’s share of total generation rises from 3.2% at 5% penetration to 29.4% at 50%. The less-than-proportional increase reflects both the fixed shape of the wind availability distribution and the growing curtailment at high penetrations. Conventional generation is displaced commensurately: fossil output falls by approximately 26 percentage points over the full penetration range, representing a material reduction in fuel costs and emissions.</p>
      </sec>
      <sec id="sec5dot5">
        <title>5.5. Nodal LMP Heatmap at 30% Penetration</title>
        <p><xref ref-type="fig" rid="fig3">Figure 3(b)</xref> presents the expected nodal LMP heatmap for 30% penetration—a resolution that offers a clear illustration of congestion-driven price differentiation while remaining below the strong-curtailment regime. Several spatial and temporal patterns are visible. Buses in the 12 - 22 index range show persistently elevated prices (&gt;$1.2/MWh) throughout the day; these are electrically remote buses with limited direct connection to low-cost generation, so that delivery of power requires traversing congested paths, adding congestion components to the energy price. Buses around indices 25 - 27 exhibit very low and occasionally near-zero LMPs, particularly during hours 14 - 18, where local over-supply during peak-wind hours creates a negative congestion rent. The most pronounced price spread occurs in the afternoon (hours 14 - 20), consistent with the interaction of the daily load peak with wind generation that remains relatively high at that time. During overnight hours (0 - 8 and 22 - 23), prices converge toward the system average as lower wind output and lower demand reduce the severity of congestion.</p>
        <p>These spatial price differentials have profound implications for generation investment incentives: wind developers located near the buses with chronically low LMPs face a structural revenue penalty relative to those at high-LMP buses, even though physical wind output may be identical.</p>
      </sec>
      <sec id="sec5dot6">
        <title>5.6. Hourly LMP Time-Series Structure</title>
        <p><xref ref-type="fig" rid="fig4">Figure 4</xref> depicts the expected system-average LMP by hour for selected penetration levels (5%, 15%, 25%, 35%, 45%). Several features emerge from this decomposition. At low penetrations (5%, 15%), prices dip to ≈$1.00/MWh during mid-morning hours (10 - 12), coinciding with the ramping of the morning load peak in conjunction with rising wind availability; the effect remains moderate because wind capacity is insufficient to cover the load peak. At higher penetrations (35%, 45%), the afternoon peak hours (15 - 20)—during which wind output remains substantial while load begins to decline—exhibit more pronounced suppression, with prices dropping to $0.85 - $0.95/MWh; the deepest suppression at 45% penetration occurs around hour 18, reaching below $0.90/MWh. Overnight hours (0 - 8 and 22 - 23) show little penetration-dependence, as low demand and limited wind result in similar dispatch decisions across scenarios. Above 35% penetration the LMP profiles during hours 10 - 14 broadly converge, suggesting that additional wind capacity primarily triggers curtailment rather than further price suppression.</p>
        <fig id="fig1">
          <label>Figure 1</label>
          <graphic xlink:href="https://html.scirp.org/file/2313803-rId179.jpeg?20260525101534" />
        </fig>
        <p><bold>Figure 1.</bold> (a) Social welfare as a function of wind penetration, showing monotonic increase from ≈$450 × 10<sup>3</sup>/h at 5% to ≈$475 × 10<sup>3</sup>/h at 50%; (b) Marginal social welfare (∂SW/∂<italic>γ</italic>), indicating diminishing returns beyond 25% - 30% penetration.</p>
        <fig id="fig2">
          <label>Figure 2</label>
          <graphic xlink:href="https://html.scirp.org/file/2313803-rId180.jpeg?20260525101534" />
        </fig>
        <p><bold>Figure 2.</bold> (a) Expected system LMP with $1$ uncertainty band. Sign-corrected values remain positive, peaking near $1.09/MWh at 15% - 20% penetration and declining to $1.03/MWh at 50%; (b) Wind curtailment volume (MWh/h, purple bars) and curtailment rate (%, orange line) showing sharp acceleration beyond 30% penetration.</p>
        <fig id="fig3">
          <label>Figure 3</label>
          <graphic xlink:href="https://html.scirp.org/file/2313803-rId181.jpeg?20260525101534" />
        </fig>
        <p><bold>Figure 3.</bold> (a) Stacked generation share (wind vs. conventional) as a function of penetration; (b) Nodal LMP heatmap at 30% penetration, revealing persistent spatial price differentials driven by transmission congestion.</p>
        <fig id="fig4">
          <label>Figure 4</label>
          <graphic xlink:href="https://html.scirp.org/file/2313803-rId182.jpeg?20260525101534" />
        </fig>
        <p><bold>Figure 4.</bold> Hourly expected system LMP for selected penetration levels (5%, 15%, 25%, 35%, 45%). Price suppression intensifies during peak-wind hours and at higher penetrations.</p>
        <p>These hourly patterns have direct implications for wind farm economics: the hours of deepest price suppression coincide with periods of peak wind generation, compressing the revenue realized per MWh of actual wind output.</p>
      </sec>
    </sec>
    <sec id="sec6">
      <title>6. Discussion</title>
      <sec id="sec6dot1">
        <title>6.1. Implications for Market Design</title>
        <p>The near-constant expected system LMP observed across all penetration levels challenges a common policy narrative that equates increased wind penetration with falling wholesale prices. In a properly specified social welfare maximization with elastic or capacity-bounded demand, the equilibrium price is anchored by the demand-side valuation rather than the marginal cost of supply. This result suggests that policy assessments of wind’s impact on consumer bills require careful modelling of the demand response specification and not merely generator-side displacement.</p>
        <p>Conversely, the hourly LMP analysis in <xref ref-type="fig" rid="fig4">Figure 4</xref>. confirms that the price-suppression effect is real, but is concentrated in specific hours (peak-wind, high-penetration conditions). Revenue-weighted average prices experienced by wind generators will therefore be significantly lower than the time-average system price—a phenomenon known as the “value factor” deterioration of wind [<xref ref-type="bibr" rid="B14">14</xref>]. Market designers should consider financial products (e.g., contracts for difference, price floors) that allow wind developers to hedge this temporal revenue risk without distorting the incentive for locating in high-LMP zones.</p>
      </sec>
      <sec id="sec6dot2">
        <title>6.2. Network Constraints and Curtailment Policy</title>
        <p>The sharp onset of curtailment above 30% penetration (Section 5.4) reflects the binding nature of specific transmission corridors in the IEEE 30-bus topology. In practical systems, this absorption threshold can be raised through targeted transmission reinforcement, flexible demand (demand response or storage), or smart curtailment protocols that minimize social cost rather than applying pro-rata curtailment rules.</p>
        <p>The nodal LMP heatmap in <xref ref-type="fig" rid="fig3">Figure 3(b)</xref> provides the information needed to prioritize transmission investments: the consistently elevated LMP at buses 12 - 22 indicates that relieving the congestion between these buses and the generation-rich low-LMP buses would simultaneously reduce consumer costs, increase utilized wind output, and improve overall social welfare.</p>
      </sec>
      <sec id="sec6dot3">
        <title>6.3. Diminishing Returns and Optimal Penetration</title>
        <p>The marginal social welfare analysis (<xref ref-type="fig" rid="fig1">Figure 1(b)</xref>) identifies 30% - 35% penetration as the inflection region where marginal benefits begin to decline materially. While the marginal SW remains positive at 50% (no economically “optimal stopping” point is observed within the studied range), the curtailment statistics indicate that beyond 40%, more than half of the incremental installed capacity is wasted. From a cost-effectiveness perspective—particularly when accounting for the annualized capital cost of wind turbines (typically $70 - 120/MWh-year)—the net social value of additional capacity beyond 35% - 40% may become negative when capital cost is internalized. This calculation is left for future work incorporating unit commitment and investment planning.</p>
      </sec>
      <sec id="sec6dot4">
        <title>6.4. Limitations</title>
        <p>The present study is subject to several limitations. First, the linearized DC power flow ignores reactive power, voltage constraints, and non-linear losses; an AC OPF could reveal additional binding constraints that alter curtailment and LMP patterns. Second, load is treated as inelastic up to its bid cap; incorporating demand elasticity or explicit demand-response resources would shift the absorption knee and reduce curtailment. Third, the model has no ramping, start-up, or minimum-run constraints, whereas in practice thermal generator inflexibility is a major driver of wind curtailment at moderate penetrations. Fourth, ten equiprobable scenarios may under-represent the tail of the wind distribution; Latin hypercube sampling or moment-matching methods with a larger scenario set would improve accuracy. Finally, the IEEE 30-bus system is a benchmark whose topology and parameters may not reflect any real grid, so the results should be interpreted as illustrative rather than directly transferable to a specific system.</p>
      </sec>
    </sec>
    <sec id="sec7">
      <title>7. Conclusions</title>
      <p>This paper presented a stochastic social welfare maximization framework for analyzing wind power integration in electricity spot markets. Formulated as a single-stage scenario-based linear programme with DC power flow constraints on the IEEE 30-bus test system, the model was solved across 10 wind penetration levels (5% - 50%) to quantify the joint evolution of social welfare, marginal welfare, nodal LMPs, curtailment, and generation mix. A key methodological contribution is the rigorous sign-correction of LMP dual variables extracted from CVXPY’s maximization framework, ensuring economically correct price signals.</p>
      <p>The principal findings are:</p>
      <p>Social welfare increases monotonically with wind penetration (total gain ≈ 5.6%), but the marginal benefit declines from ≈ $540/h per percentage-point at 5% to ≈ $387/h at 50%, signaling diminishing returns.The expected system LMP is stable near $1.05 - $1.07/MWh across all penetrations, anchored by demand-side valuations, while hourly profiles reveal wind-induced price suppression concentrated in peak-generation hours.Wind curtailment is negligible below 30% penetration but accelerates sharply beyond this absorption threshold, with a curtailment-to-accepted ratio exceeding 180% at 50% (more wind is curtailed than accepted).Curtailed than accepted, driven by binding transmission and power-balance constraints.The nodal LMP heatmap at 30% penetration reveals persistent spatial price differentials of up to ≈ $0.4/MWh between electrically remote and generator-adjacent buses, providing actionable signals for transmission investment prioritisation.</p>
      <p>Future work will extend the model to incorporate unit commitment, storage dispatch, demand response, and AC power flow constraints, and will apply the framework to larger, more realistic test systems to assess the generality of the identified penetration-welfare relationship.</p>
    </sec>
    <sec id="sec8">
      <title>Acknowledgements</title>
      <p>The author thanks the open-source communities behind CVXPY and the ECOS solver for providing freely available tools that made this research computationally feasible.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <title>References</title>
      <ref id="B1">
        <label>1.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">International Energy Agency (IEA) (2023) World Energy Outlook 2023. IEA Publications.</mixed-citation>
          <element-citation publication-type="other">
            <year>2023</year>
            <article-title>World Energy Outlook 2023</article-title>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B2">
        <label>2.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Sensfuß, F., Ragwitz, M. and Genoese, M. (2008) The Merit-Order Effect: A Detailed Analysis of the Price Effect of Renewable Electricity Generation on Spot Market Prices in Germany. <italic>Energy</italic><italic>Policy</italic>, 36, 3086-3094. https://doi.org/10.1016/j.enpol.2008.03.035 <pub-id pub-id-type="doi">10.1016/j.enpol.2008.03.035</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.enpol.2008.03.035">https://doi.org/10.1016/j.enpol.2008.03.035</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Ragwitz, M.</string-name>
              <string-name>Genoese, M.</string-name>
            </person-group>
            <year>2008</year>
            <article-title>The Merit-Order Effect: A Detailed Analysis of the Price Effect of Renewable Electricity Generation on Spot Market Prices in Germany</article-title>
            <source>Energy Policy</source>
            <volume>36</volume>
            <pub-id pub-id-type="doi">10.1016/j.enpol.2008.03.035</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B3">
        <label>3.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Doherty, R. and O’Malley, M. (2005) A New Approach to Quantify Reserve Demand in Systems with Significant Installed Wind Capacity. <italic>IEEE Transactions on Po</italic><italic>wer</italic><italic>Systems</italic>, 20, 587-595. https://doi.org/10.1109/tpwrs.2005.846206 <pub-id pub-id-type="doi">10.1109/tpwrs.2005.846206</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/tpwrs.2005.846206">https://doi.org/10.1109/tpwrs.2005.846206</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Doherty, R.</string-name>
              <string-name>Malley, M.</string-name>
            </person-group>
            <year>2005</year>
            <article-title>A New Approach to Quantify Reserve Demand in Systems with Significant Installed Wind Capacity</article-title>
            <source>IEEE Transactions on Power Systems</source>
            <volume>20</volume>
            <pub-id pub-id-type="doi">10.1109/tpwrs.2005.846206</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B4">
        <label>4.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Zhang, Y. and Giannakis, G.B. (2015) Distributed Stochastic Market Clearing with High-Penetration Wind Power. <italic>IEEE Transactions on Power Systems</italic>, 31, 895-906. https://doi.org/10.1109/TPWRS.2015.2423151 <pub-id pub-id-type="doi">10.1109/TPWRS.2015.2423151</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/TPWRS.2015.2423151">https://doi.org/10.1109/TPWRS.2015.2423151</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Zhang, Y.</string-name>
              <string-name>Giannakis, G.B.</string-name>
            </person-group>
            <year>2015</year>
            <article-title>Distributed Stochastic Market Clearing with High-Penetration Wind Power</article-title>
            <source>IEEE Transactions on Power Systems</source>
            <volume>31</volume>
            <pub-id pub-id-type="doi">10.1109/TPWRS.2015.2423151</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B5">
        <label>5.</label>
        <citation-alternatives>
          <mixed-citation publication-type="book">Birge, J.R. and Louveaux, F. (2011) Introduction to Stochastic Programming. 2nd Edition, Springer.</mixed-citation>
          <element-citation publication-type="book">
            <person-group person-group-type="author">
              <string-name>Birge, J.R.</string-name>
              <string-name>Louveaux, F.</string-name>
              <string-name>Edition, S</string-name>
            </person-group>
            <year>2011</year>
            <article-title>Introduction to Stochastic Programming</article-title>
            <source>2nd Edition</source>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B6">
        <label>6.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Schweppe, F.C., Caramanis, M.C., Tabors, R.D. and Bohn, R.E. (1988) Spot Pricing of Electricity. Kluwer Academic Publishers.</mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Schweppe, F.C.</string-name>
              <string-name>Caramanis, M.C.</string-name>
              <string-name>Tabors, R.D.</string-name>
              <string-name>Bohn, R.E.</string-name>
            </person-group>
            <year>1988</year>
            <article-title>Spot Pricing of Electricity</article-title>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B7">
        <label>7.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Diamond, S. and Boyd, S. (2016) CVXPY: A Python-Embedded Modeling Language for Convex Optimization. <italic>Journal of Machine Learning Research</italic>, 17, 1-5. http://jmlr.org/papers/v17/15-408.html</mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Diamond, S.</string-name>
              <string-name>Boyd, S.</string-name>
            </person-group>
            <year>2016</year>
            <article-title>CVXPY: A Python-Embedded Modeling Language for Convex Optimization</article-title>
            <source>Journal of Machine Learning Research</source>
            <volume>17</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B8">
        <label>8.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Morales, J.M., Conejo, A.J. and Pérez-Ruiz, J. (2009) Economic Valuation of Reserves in Power Systems with High Penetration of Wind Power. 2009 <italic>IEEE Power &amp; Energy Society General Meeting</italic>, Calgary, 26-30 July 2009.</mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Morales, J.M.</string-name>
              <string-name>Conejo, A.J.</string-name>
              <string-name>Ruiz, J.</string-name>
              <string-name>Meeting, C</string-name>
            </person-group>
            <year>2009</year>
            <article-title>Economic Valuation of Reserves in Power Systems with High Penetration of Wind Power</article-title>
            <source>2009 IEEE Power &amp; Energy Society General Meeting</source>
            <volume>26</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B9">
        <label>9.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Bouffard, F. and Galiana, F.D. (2008) Stochastic Security for Operations Planning with Significant Wind Power Generation. <italic>IEEE</italic><italic>Transactions</italic><italic>on</italic><italic>Power</italic><italic>Systems</italic>, 23, 306-316. https://doi.org/10.1109/tpwrs.2008.919318 <pub-id pub-id-type="doi">10.1109/tpwrs.2008.919318</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/tpwrs.2008.919318">https://doi.org/10.1109/tpwrs.2008.919318</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Bouffard, F.</string-name>
              <string-name>Galiana, F.D.</string-name>
            </person-group>
            <year>2008</year>
            <article-title>Stochastic Security for Operations Planning with Significant Wind Power Generation</article-title>
            <source>IEEE Transactions on Power Systems</source>
            <volume>23</volume>
            <pub-id pub-id-type="doi">10.1109/tpwrs.2008.919318</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B10">
        <label>10.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Litvinov, E., Zheng, T., Rosenwald, G. and Shamsollahi, P. (2004) Marginal Loss Modeling in LMP Calculation. <italic>IEEE</italic><italic>Transactions</italic><italic>on</italic><italic>Power</italic><italic>Systems</italic>, 19, 880-888. https://doi.org/10.1109/tpwrs.2004.825894 <pub-id pub-id-type="doi">10.1109/tpwrs.2004.825894</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/tpwrs.2004.825894">https://doi.org/10.1109/tpwrs.2004.825894</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Litvinov, E.</string-name>
              <string-name>Zheng, T.</string-name>
              <string-name>Rosenwald, G.</string-name>
              <string-name>Shamsollahi, P.</string-name>
            </person-group>
            <year>2004</year>
            <article-title>Marginal Loss Modeling in LMP Calculation</article-title>
            <source>IEEE Transactions on Power Systems</source>
            <volume>19</volume>
            <pub-id pub-id-type="doi">10.1109/tpwrs.2004.825894</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B11">
        <label>11.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Domahidi, A., Chu, E. and Boyd, S. (2013) ECOS: An SOCP Solver for Embedded Systems. 2013 <italic>European Control Conference</italic>( <italic>ECC</italic>), Zurich, 17-19 July 2013, 3071-3076. https://doi.org/10.23919/ecc.2013.6669541 <pub-id pub-id-type="doi">10.23919/ecc.2013.6669541</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.23919/ecc.2013.6669541">https://doi.org/10.23919/ecc.2013.6669541</ext-link></mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Domahidi, A.</string-name>
              <string-name>Chu, E.</string-name>
              <string-name>Boyd, S.</string-name>
            </person-group>
            <year>2013</year>
            <article-title>ECOS: An SOCP Solver for Embedded Systems</article-title>
            <source>2013 European Control Conference (ECC)</source>
            <volume>17</volume>
            <pub-id pub-id-type="doi">10.23919/ecc.2013.6669541</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B12">
        <label>12.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Woo, C.K., Horowitz, I., Moore, J. and Pacheco, A. (2011) The Impact of Wind Generation on the Electricity Spot-Market Price Level and Variance: The Texas Experience. <italic>Energy</italic><italic>Policy</italic>, 39, 3939-3944. https://doi.org/10.1016/j.enpol.2011.03.084 <pub-id pub-id-type="doi">10.1016/j.enpol.2011.03.084</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.enpol.2011.03.084">https://doi.org/10.1016/j.enpol.2011.03.084</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Woo, C.K.</string-name>
              <string-name>Horowitz, I.</string-name>
              <string-name>Moore, J.</string-name>
              <string-name>Pacheco, A.</string-name>
            </person-group>
            <year>2011</year>
            <article-title>The Impact of Wind Generation on the Electricity Spot-Market Price Level and Variance: The Texas Experience</article-title>
            <source>Energy Policy</source>
            <volume>39</volume>
            <pub-id pub-id-type="doi">10.1016/j.enpol.2011.03.084</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B13">
        <label>13.</label>
        <citation-alternatives>
          <mixed-citation publication-type="web">IEEE Power and Energy Society (1993) IEEE 30-Bus Power System Test Case. https://www.ee.washington.edu/research/pstca/pf30/pg_tca30bus.htm</mixed-citation>
          <element-citation publication-type="web">
            <year>1993</year>
            <article-title>IEEE 30-Bus Power System Test Case</article-title>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B14">
        <label>14.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Hirth, L. (2013) The Market Value of Variable Renewables. <italic>Energy</italic><italic>Economics</italic>, 38, 218-236. https://doi.org/10.1016/j.eneco.2013.02.004 <pub-id pub-id-type="doi">10.1016/j.eneco.2013.02.004</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.eneco.2013.02.004">https://doi.org/10.1016/j.eneco.2013.02.004</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Hirth, L.</string-name>
            </person-group>
            <year>2013</year>
            <article-title>The Market Value of Variable Renewables</article-title>
            <source>Energy Economics</source>
            <volume>38</volume>
            <pub-id pub-id-type="doi">10.1016/j.eneco.2013.02.004</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
    </ref-list>
  </back>
</article>