Heat oil in a heavy saucepan. Add cinnamon, cloves and cardamom and fry for 1 minute. Add onion, saute until soft, stirring occasionally.
Add garlic and ginger and fry for 3 minutes, stirring frequently. Add lamb cubes and fry until brown, about 5 minutes.
Whisk yogurt, saffron mixture, salt and chili powder together and add to lamb cubes. Cook for 5 minutes.
Grind almonds with enough water to form a thick paste. Add paste and whole chilies to lamb cubes, stir well to mix paste with gravy. Simmer for 5 minutes over low heat.
Add coconut milk, reduce heat to low, cover and simmer for 35-40 minutes or until lamb is cooked through and tender. Uncover the pan for the last 10 minutes of cooking.
Transfer to a warmed dish and serve at once.