
Coordinate Day-ahead Bidding with Continuous Intraday Trading
New research on how to calculate optimal day-ahead bids that account for the option to rebalance a portfolio in the EPEX SPOT continuous intraday market.
QUASAR® can solve problems with thousands of stages as well as high-dimensional uncertainty and has been in daily operation by numerous companies for many years.
Any parameter in the objective function or constraints can be represented by stochastic time series models.
QUASAR®’s modeling language is easy-to-use and lets users model decision problems as if they were conventional linear programming problems.
QUASAR® makes it easy to add a dynamic risk measure such as conditional value-at-risk to the objective function. Don’t just measure your risk, optimize it!
Interfaces for Python, Java, Scala, Matlab, which follow these languages’ coding styles.
Transform any model into an operational tool for end users with QUASAR Cloud®. Upload models, connect with company data, setup optimization runs, create custom dashboards and reports.
The sheer size of our reservoir makes it necessary that our hydropower storage assets must be managed over the medium term, when there is still significant uncertainty about future hydrologic inflows and power prices. Our asset management therefore clearly benefits from stochastic modeling, but only with QUASAR, we are able to solve the stochastic optimization problem in hourly time steps over a three-year planning horizon.
The business environment of energy utilities and energy traders is changing constantly, which makes dealing with uncertainty a daily challenge. To cope with this change, flexible and user-friendly tools are required. QUASAR’s Jupyter integration combines productivity, flexibility, and usability in one tool, which makes it a pleasure to prototype and analyze models for everyday’s work tasks.
# parameters
T, q, K, C = 12, 0.1, 100, 25
# import pandas -> quasar
df = pandas.read_csv("prices.csv", index_col=[0,1])
ts = TimeSeriesSample.from_df(df)
# decision model
model = quasar.DecisionProblem()
# starting state
s = {-1 : 25}
# multiple stages
for t in range(T):
# decision variables
s[t] = model.add_variable(t, "storage", ub=K)
c = model.add_variable(t, "charge", ub=C)
r = model.add_variable(t, "release", ub=C)
# constraints
s[t] == s[t-1] + (1-q)*c - r
# objective with random variable
model.obj += rand("price") * (r - c)
# optimize problem
opt = quasar.DynamicOptimizer(model, ts)
opt.solve()
# simulate decision process
sim = opt.policy.simulate(sample_size=1000)
# visulize decision
sim.plot_decision("storage", kind="fanchart")
# descriptive statistics
sim.df.rewards.groupby(level="stage").describe()
An example from operations management – invest into production capacity under uncertain demand and then control production and inventories over subsequent periods.
Simple arbitrage model for battery storage optimization under price uncertainty. Demonstrates how to turn policy simulation output into a simple decision rule of when to buy and when to sell.
Spot-based valuation of a storage for natural gas over the course of one year. Model prices as one-factor model. Learn how to approximate storage value and delta positions.
Cost minimization of a simple hydro-thermal system with a single reservoir under uncertainty about natural inflows. The notebooks demonstrates how to discretize a sample of a non-stationary inflow process.
Oftentimes, stochastic programming means sacrificing detail, because existing solvers either use scenario trees or backwards dynamic programming that do not scale.
QUASAR® enables detailed models without sacrificing scalability. Using a clever combination of math programming and machine learning, QUASAR® solves even the most complex optimization problems with hundreds of random variables, thousands of time stages, and millions of scenarios at an unprecedented speed.
QUASAR®
|
Stochastic Programming
|
Dynamic Programming
|
|
Solution approaches | Scenario Lattices + Approximate Dual Dynamic Programming | Linear program + scenario tree | Least squares Monte Carlo / Backwards Recursion |
Recombining scenarios | |||
Multiple stages | |||
Continuous variables | |||
Large number of variables | |||
Average complexity | linear in number of nodes | exponential in number of stages | exponential in number of decision variables |
The technology behind QUASAR® is built on a decade of theoretical and experimental research and backed by rock solid mathematics. Solution quality and performance is independently accredited by top-level published peer-reviewed research.
New research on how to calculate optimal day-ahead bids that account for the option to rebalance a portfolio in the EPEX SPOT continuous intraday market.
Learn how to calculate the extrinsic value of storage when using an empirical model of term structure dynamics.
Learn how to optimize a hydropower planning in hourly time granularity under uncertainty about day-ahead electricity prices and natural inflows.