Heat the olive oil in a large pot over medium heat. Once the oil is glistening, add the onion and cook, stirring occasionally, until softened, about 5 minutes. Add the garlic and ginger and cook until fragrant, about 1 more minute.
Add the carrots, stock, cinnamon, nutmeg, and salt. Increase the heat to high and bring to a boil, then reduce the heat to a simmer. Cover and cook until the carrots are tender, about 20 minutes.
Add the coconut milk. Using an immersion blender, blend the soup in the pot until smooth, about 2-3 minutes. (Alternatively, transfer the soup to the base of a blender, let cool briefly, and blend until smooth.)
Ladle the soup into bowls and season with pepper. Top with a drizzle of coconut milk, cilantro, and macadamia nuts if using, for added flavor and texture.