A model to test the national market for instantaneous reserves (vSPD_NMIR)

  • Last post 23 September 2016
Phil Bishop posted this 01 July 2016

The Authority and the system operator are jointly working on a project to introduce a national market for instantaneous reserves. For more information about this project go here or here.

The ZIP file attached to this discussion contains a modified version of vSPD that can be used to test wholesale market outcomes under various national market for instantaneous reserves scenarios. The model is a standalone test version of vSPD. When the implementation of the national market for instantaneous reserves is complete, the relevant functionality from this test model will be incorporated into our production version of vSPD.

A readme.txt file inside the attached ZIP file contains instructions on how to use vSPD_NMIR.


Attached files

Order by: Standard | Newest | Votes
Phil Bishop posted this 23 September 2016

We committed the latest version of our vSPD codes, complete with all modifications to handle the national market for reserves, to our vSPD GitHub repository today. Next week, we'll upload the zip file on the EMI vSPD page.


Tuong Nguyen posted this 19 September 2016

Hi Michael,

Please see my comments below.

Q1. Which risks should be adjusted? is this limited to Manual, Manual_ECE, GENRISK, GENRISK_ECE?

A1. Yes

Q2. Is the adjustment made for both islands and products; NI/SI, 6/60?

A2. Yes, the adjustment is made for both islands and product.  Note that:

a. 60 MW is the maximum static sharing. 

b. Before 17th December 2014, there was no SIR sharing and the max FIR sharing was 25MW in summer/50MW in winter occurred with the winter/summer line ratings changeover on 10 May and 20 October at 0700.

c. From 12:00 on Wednesday 17th December 2014, the system operator began modelling 60MW of FIR reserve sharing on the HVDC year-round.

d. From 12:00 29th Sep 2015 the system operator began modelling 60MW of SIR reserve sharing on the HVDC year-round.




mburlace posted this 19 September 2016

Hey guys, 

Can you confirm the appropriate adjustment to account for the interim reserve sharing in the i_freeReserve Parameter when testing the model with the daily FP gdx files?

Which risks should be adjusted? is this limited to Manual, Manual_ECE, GENRISK, GENRISK_ECE

Is the adjustment made for both islands and products; NI/SI, 6/60?

Should the adjustment be made on the absolute or exact value?



Tuong Nguyen posted this 06 September 2016

If you are interested in knowing more about the SPD formulation, the SO has created a software specification page on their website. They will use this page to publish the RTM Specification and the latest SPD formulation. The page can be found at https://www.transpower.co.nz/system-operator/key-documents/software-specifications.


Matthew Keir posted this 31 August 2016

The system operator is running a set of workshops at the end of September that may be of interest to those following this discussion.

Amongst other topics, they will be addressing reserves and frequency management. These discussions will have a particular focus on National Market for Instantaneous Reserve (NMIR) as they build towards implementation later this year.

More information and registration details are available on their website.



Tuong Nguyen posted this 28 August 2016

Hi Rosie,

The SO is working on the SPD formulation and will upload the latest SPD formulation version to their website soon - maybe later this week? Meanwhile, we can upload the draft of the SPD formulation for you - see UG-SD-025_SPD_Model_Formulation_v11_draft_F.pdf attached to this post.

Please note that this is just a draft version and may well be different from the final version. Also, it will be slightly different from the current test version of vSPD_NMIR. We are working hard to get vSPD updated. We will only publish another vSPD version after the final SPD formulation is confirmed by the SO.



Attached files

Phil Bishop posted this 22 August 2016

We have been asked how SPD and RMT will work in conjunction with one another in the context of the NMIR project. The two tools are readily understood in isolation but folk have asked about possible convergence issues due to HVDC oscillations, i.e. the MILP part of SDP (with deadzones).

The NMIR project team is aware of this issue and the SO has confirmed to the Authority that the problem will be resolved.


Rosie Read Mer posted this 21 August 2016

Hi guys,
Is there a proposed SPD formulation available to match this proposed implementation?
I can reverse engineer one from the model file if necessary, but I'd rather not if there is one floating around already.


Tuong Nguyen posted this 11 August 2016

Hi All,

I just recieved an email from a market participant asking if there is a manageable way to create more NIRM test cases based on the currently available daily gdx files?

The differences between the NIRM gdx and current gdx are the new parameters that required for NIRM model. In order to test NIRM using the current daily gdx, user need to modify the code in vSPDSolve.gms file (located under Program folder)  so that vSPD program will not load the new parameters from gdx files but the values of new parameters are entered mannually. 

The snippet of vSPDSolve code below illustrate how to test vSPD_NIRM using current daily gdx. The italic code is removed (commented out) and the bold code are added to enter the values of new parameters mannually. 

* NIRM - Loading data for reserve sharing
if( UseShareReserve,
execute_load i_tradePeriodFKCEnabled, i_tradePeriodRPStatus
i_tradePeriodReserveRoundPower, i_tradePeriodReserveSharing
i_tradePeriodModulationRisk, i_tradePeriodRoundPower2Mono
i_tradePeriodBipole2Mono, i_tradePeriodReserveSharingPoleMin
i_tradePeriodHVDCcontrolBand, i_tradePeriodHVDCcableDischarge
i_tradePeriodHVDClossScalingFactor, i_tradePeriodReserveEffectiveFactor
i_tradePeriodSharedNFRfactor, i_tradePeriodSharedNFRLoadOffset ;
i_tradePeriodFKCEnabled(tp) = 1 ;
i_tradePeriodRPStatus(tp) = 1 ;
i_tradePeriodReserveRoundPower(tp,resC) = 1 ;
i_tradePeriodReserveSharing(tp,resC) = 1 ;
i_tradePeriodModulationRisk(tp,riskC) = 30 ;
i_tradePeriodRoundPower2Mono(tp) = 52.5 ;
i_tradePeriodBipole2Mono(tp) = 190 ;
i_tradePeriodReserveSharingPoleMin(tp) = 35 ;
i_tradePeriodHVDCcontrolBand(tp,fd) = 250 ;
i_tradePeriodHVDCcableDischarge(tp) = 0 ;
i_tradePeriodHVDClossScalingFactor(tp) = 1 ;
i_tradePeriodSharedNFRfactor(tp) = 0.01 ;
i_tradePeriodReserveEffectiveFactor(tp,ild,resC,riskC) = 0.8;

i_tradePeriodSharedNFRloadOffset(tp,'SI')              = 500  ;  

i_tradePeriodFKCEnabled(tp) = 0 ;
i_tradePeriodRPStatus(tp) = 0 ;
i_tradePeriodReserveRoundPower(tp,resC) = 0 ;
i_tradePeriodReserveSharing(tp,resC) = 0 ;
i_tradePeriodModulationRisk(tp,riskC) = 0 ;
i_tradePeriodRoundPower2Mono(tp) = 0 ;
i_tradePeriodBipole2Mono(tp) = 0 ;
i_tradePeriodReserveSharingPoleMin(tp) = 0 ;
i_tradePeriodHVDCcontrolBand(tp,fd) = 0 ;
i_tradePeriodHVDCcableDischarge(tp) = 0 ;
i_tradePeriodHVDClossScalingFactor(tp) = 0 ;
i_tradePeriodSharedNFRfactor(tp) = 0 ;
i_tradePeriodReserveEffectiveFactor(tp,ild,resC,riskC) = 0 ;

i_tradePeriodSharedNFRloadOffset(tp,'SI')              = 500  ;  
) ;

Please note that the current vSPD_NIRM is only for testing and there can be changes in the future.

If you have any issues or questions, post them in the forum and we'll take a look.

Note that the current system has static reserve share on HVDC. We need to subtract this static reserve sharing amount from net free reserve when applying NIRM to the current FP. Failing to do this will over-estimate the benefit of NIRM. 

Hope this helps

Tuong Nguyen