This is the Python SDK for building MarketMakers for GridWorks. GridWorks uses distributed actors to balance the electric grid, and MarketMakers are the actors brokering this grid balancing via the markets they run for energy and balancing services.
This SDK is available as the gridworks-marketmaker pypi package. Documentation specific to using this SDK is available here. If this is your first time with GridWorks code, please start with the main GridWorks doc.
MarketMakers support grid balancing by running markets. They are geared to serve millions of coordinated and intelligent Transactive Devices, represented in their markets by AtomicTNodes. The veracity of the ex-poste energy and power data provided by AtomicTNodes to the MarketMaker is backed up via a series of GridWorks Certificates globally visible on the Algorand blockchain. These include the foundational TaDeeds that establish ownership of the underlying Transactive Device, and the TaTradingRights that give the AtomicTNode authority to represent the Transactive Device in its MarketMaker's markets.
These are directions for running this code as the MarketMaker in the Millinocket tutorial. These directions assume you have already started docker sandbox and the GridWorks dev rabbit broker, as described in the Demo prep.
-
Clone this repo
-
Using python 3.10.* or greater, create virtual env inside this repo
python -m venv venv source venv/bin/activate pip install -e .
3.Run the FastAPI half of the MarketMaker:
./millinocket_api.sh
- http://localhost:7997/ shows market maker information
- http://localhost:7997/get-time/ shows the current time of the simulation
- Run the rabbit actor half of the MarketMaker:
python millinocket_mm.py
NOTE: This requires a TimeCoordinator and at least one AtomicTNode in order for time to move forward.
Contributions are very welcome. To learn more, see the Contributor Guide.
Distributed under the terms of the MIT license, Gridworks Marketmaker is free and open source software.
If you encounter any problems, please file an issue along with a detailed description.
This project was generated from @cjolowicz's Hypermodern Python Cookiecutter template.