Programmable Financial Derivatives