Text this: Dynamic Programming for Designing and Valuing Two-Dimensional Financial Derivatives