There are 2 prize tracks in the Green Battery Hack

🤑The Trading Track

This track has two components

  1. As part of the Trading Track all teams will get to keep a function of the money they make (assuming they make more than $50) by trading their simulated battery.
  2. In addition, a final Trading Prize will be awarded to the team who uses machine learning to earn the most simulated money throughout the competition. This prize comes with an additional $500 over the cash otherwise awarded as part of the Trading Track.

Algorithms will earn money in by trading against live energy data between the 20th of April and the 7th of May.

The final earnings of each team are calculated as:

$$ Earnings = Live Earnings - Baseline Earnings $$

Where baseline earnings are the money earned by the baseline MovingAveragePolicy on the live dataset (which the competition organizers will run on the live dataset themselves). This policy is defined below and is included in the starting repo.

import pandas as pd
from collections import deque
import numpy as np
from policies.policy import Policy

class MovingAveragePolicy(Policy):
    def __init__(self, window_size=5):
        """
        Constructor for the MovingAveragePolicy.

        :param window_size: The number of past market prices to consider for the moving average (default: 5).
        """
        super().__init__()
        self.window_size = window_size
        self.price_history = deque(maxlen=window_size)

    def act(self, external_state, internal_state):
        market_price = external_state['price']
        self.price_history.append(market_price)

        if len(self.price_history) == self.window_size:
            moving_average = np.mean(self.price_history)
            
            if market_price > moving_average:
                charge_kW = -internal_state['max_charge_rate']
            else:
                charge_kW = internal_state['max_charge_rate']
        else:
            charge_kW = 0

        return 0, charge_kW

    def load_historical(self, external_states: pd.DataFrame):   
        for price in external_states['price'].values:
            self.price_history.append(price)

💡 The Innovation Track

The Innovation Prize will go to the most innovative use of machine learning for energy trading. 1st and 2nd places will be awarded according to set judging criteria. These Criteria are below:

Social Good: If implemented at scale could this solution lead to socially positive outcomes, such as reduced energy prices for Australian households, or reduced emissions?

Innovation: Does this solution do something new and exciting with machine learning which pushes the bound of what is being done currently with energy trading?

Commercial Viability: Is there a clear path for this solution to be used to trade energy in a way that is commercially sustainable?

Execution: Was the machine learning solution implemented correctly? Did it trade as it was expected to? Were those trades effective? Even if the algorithm did not make the most money, if it successfully did something else, such as always charging when the market was green, or responding very quickly to sharp increases or decreases in price.