In a large mixing bowl whisk together all the marinade ingredients beside the chicken. Mix in the chicken until fully coated, then tightly cover and rest in the fridge for 3-24 hours (aim for the latter if you can). Take out the fridge 30 minutes before needed.
Add 1 tbsp oil to a large pan over medium-high heat. Once hot, use tongs to pluck out half of the chicken and space it out in the pan. Leave to fry until lightly charred on the bottom, then flip the pieces and continue frying until charred on the other side and cooked through the centre (around 3 minutes per side - keep in mind it'll continue cooking later). Remove and store in a bowl to one side and repeat with the second batch, adding more oil as needed. Keep the leftover marinade in the bowl!
Turn the heat down to medium, top up with more oil if needed, then add in the onion. Gently fry until soft and golden, then add in the garlic, ginger, ground coriander, turmeric, garam masala, cinnamon, cardamom and cloves. Fry for a minute, then add the chicken stock and coconut cream. Swiftly stir to bind the coconut cream (it'll split at first but will come back together). Add the ground almonds and scrape in the leftover marinade from the bowl.
Give it a stir and simmer for 6-8 minutes to thicken slightly. Turn off the heat and leave it to stop bubbling, then carefully transfer it to a blender and pulse until smooth.
Pour the sauce back into the pan and stir in the salt and sugar. Stir in the cooked chicken alongside all the resting juices, then bring to a gentle simmer. Cook for around 18-20 minutes until the sauce thickens. Turn off the heat and once the bubbles die down, stir in the yoghurt. Check for seasoning and adjust with salt and sugar if desired, then serve up and enjoy!