Apply the Redington immunization conditions to match asset and liability duration and convexity
A set of liabilities is given along with two or more assets, and you must construct a portfolio that satisfies Redington immunization.
Write three conditions: PV_assets = PV_liabilities, Modified duration of assets = modified duration of liabilities, and Convexity of assets > convexity of liabilities. Solve the first two as a linear system for asset weights, then verify the convexity inequality at the end. The convexity check is what makes the immunization work for small rate moves.
Redington: equal PV, equal duration, asset convexity > liability convexity.