Added policy executer file for remotely executing
This commit is contained in:
@@ -2,17 +2,27 @@ import plotly.graph_objects as go
|
||||
import numpy as np
|
||||
import pytz
|
||||
import pandas as pd
|
||||
import os
|
||||
|
||||
incremental_bids = "../../data/incremental_bids.csv"
|
||||
decremental_bids = "../../data/decremental_bids.csv"
|
||||
incremental_bids = "data/incremental_bids.csv"
|
||||
decremental_bids = "data/decremental_bids.csv"
|
||||
|
||||
class ImbalancePriceCalculator:
|
||||
def __init__(self, method: int = 1) -> None:
|
||||
def __init__(self, method: int = 1, data_path: str = "../../") -> None:
|
||||
self.method = method
|
||||
self.load_bids()
|
||||
self.data_path = data_path
|
||||
|
||||
# check if pickle of bid_ladder exists: data/bid_ladder.pkl
|
||||
if not os.path.isfile(self.data_path + "data/bid_ladder.pkl"):
|
||||
print("Bid ladder pickle not found, loading bids and generating bid ladder...")
|
||||
self.load_bids()
|
||||
self.bid_ladder.to_pickle(self.data_path + "data/bid_ladder.pkl")
|
||||
else:
|
||||
print("Bid ladder pickle found, loading bid ladder...")
|
||||
self.bid_ladder = pd.read_pickle(self.data_path + "data/bid_ladder.pkl")
|
||||
|
||||
def load_bids(self):
|
||||
df = pd.read_csv(incremental_bids, sep=";")
|
||||
df = pd.read_csv(self.data_path + incremental_bids, sep=";")
|
||||
df["Datetime"] = pd.to_datetime(df["Datetime"], utc=True)
|
||||
|
||||
# sort by Datetime, Activation Order, Bid Price
|
||||
@@ -21,7 +31,7 @@ class ImbalancePriceCalculator:
|
||||
# next we need to calculate the cummulative bids for every datetime
|
||||
incremental_cum_df = df.groupby(["Datetime"]).apply(self.generate_bid_ladder)
|
||||
|
||||
df = pd.read_csv(decremental_bids, sep=";")
|
||||
df = pd.read_csv(self.data_path + decremental_bids, sep=";")
|
||||
df["Datetime"] = pd.to_datetime(df["Datetime"], utc=True)
|
||||
decremental_cum_df = df.groupby(["Datetime"]).apply(self.generate_bid_ladder, incremental=False)
|
||||
|
||||
@@ -129,7 +139,8 @@ class ImbalancePriceCalculator:
|
||||
MIPS = self.get_imbalance_price_vectorized(datetimes, np.abs(NRVS))
|
||||
MDPS = self.get_imbalance_price_vectorized(datetimes, -np.abs(NRVS))
|
||||
|
||||
return calculate_imbalance_price(-NRV_PREVS, -NRVS, MIPS, MDPS)
|
||||
return calculate_imbalance_price(-NRV_PREVS, -NRVS, MIPS, MDPS)
|
||||
|
||||
|
||||
def calculate_imbalance_price(SI_PREV, SI, MIP, MDP):
|
||||
# Convert parameters to numpy arrays for vectorized operations
|
||||
|
||||
Reference in New Issue
Block a user