Following modules are used to build an alorithm to find solution to markowitz portfolio optimization problem via breaking it into smaller ones using hierarchical risk parity method. Both of these problems are formalized in terms of ising model that can be solved using following approaches:
- Bruteforce
- Trivial genetic algorithm
- D-wave
- Simulated coherent ising machine (SimCIM)
- Kerberos module from D-wave hybrid with option to use SimCIM for subproblems instead of D-wave
Simplified version of algorithm building is following:
Class BinaryProblem
includes methods - solvers to handle with problems of form
BinaryQuadraticModel (BQM). Subclasses Portfolio
and Partitioning
solve portfolio optimization and matrix partitioning problems accordingly.
Portfolio
build it's BQM from risk matrix, average and prices. Partitioning
for similar
purposes takes any square matrix (including risk matrix). Both use inherited method to solve
their BQMs.
For more details take a look into examples files in general and main example
particularly. Also don't hesitate to explore comments to source code.