Preheat oven to 350 degrees F. Grease a 9 by 13-inch baking dish with butter.
In a large bowl, stir together the eggs, cream, and Parmesan. In a bowl, whisk together the flour, sugar, baking powder, cayenne, chipotle, and garlic. Stir the flour mixture into the egg mixture and set aside.
Heat the butter and oil in a large skillet over medium-low heat. Add the onions and cook, stirring, until caramelized, about 25 minutes. Add the water chestnuts and cook for another 5 minutes.
Stir the onion mixture into the egg mixture and spoon into the greased baking dish. Sprinkle with slivered almonds and bake until the pudding is set, about 30 minutes.