Preheat oven to 400°F with a rack in the center.
Place the prepared shells (but but not yet the bodies) into a large roasting pan. Pour in the oil and toss to coat evenly.
Roast until quite pale and beginning to brown, about an hour.
Stir in the onion, carrot, and celery and return to oven. Roast until vegetables are beginning to brown, about 40 minutes.
Stir in the garlic and tomato paste and return to oven for 10 minutes.
Pour in the wine, and stir, scraping up any brown bits from the bottom of the pan. Return to oven for five minutes more.
Add the water, thyme, bay leaves, peppercorns, and salt, if using. Return to oven for about two hours, until liquid is reduced by 1/3 or so and stock is a rich golden brown. You will not necessarily see the stock simmering, but you should begin to see it reducing after an hour or so.
Remove from oven and let cool substantially in the pan.
Line a fine-mesh sieve with cheesecloth and carefully strain the stock into a large bowl.
Discard solids and use strained stock in recipes or freeze for up to a year.