Solving optimal order execution with dynamic programming and convex optimization
This is a medium-difficulty coding problem that combines principles from market microstructure with algorithmic optimization. It tests whether you can translate a real quantitative trading constraint—minimizing market impact when splitting large orders—into an efficient integer allocation algorithm.
The core insight is that the cost function's convexity (beta > 1) means spreading the order evenly across buckets is typically better than concentrating it in a few. However, finding the optimal integer allocation is non-trivial: a greedy approach of always splitting the highest-cost bucket fails because of discrete constraints, and brute force becomes infeasible at scale. Strong solutions leverage either dynamic programming or recognize the structure of the relaxed (continuous) problem and intelligently round the solution while respecting the integer constraint.
- Convex optimization and the role of the exponent beta in spreading decisions
- Integer programming relaxation and rounding strategies
- Greedy refinement and local search for constrained allocation
- Handling edge cases where N approaches Q or Q is very large