Step 1Wash the fish bones or frames. If you are using heads, make sure to cut out and discard the gills.
Step 2Place the butter in a large, heavy stock pot. Add the onion, carrot and celery, then lay the bones and trimmings on top of the vegetables. Heat the mixture over very low heat until the butter melts, and cook, stirring gently, until the vegetables are softened and the bones are opaque, about 5 minutes.
Step 3Add the wine and bring to a simmer, scraping any flavoring from the bottom of the pan. Stir in the leek, thyme, parsley and peppercorns, then the water.
Step 4Bring the mixture to a simmer, then reduce the heat to a very gentle simmer. Skim the surface of the stock as needed, discarding the foam, impurities and fat that rise to the surface. Very gently simmer the stock for 45 minutes, adding water if needed to keep the bones submerged.
Step 5Strain the stock through a fine sieve lined with cheesecloth, discarding the solids. Cool the stock, then refrigerate until needed (be sure to remove and discard any fat that has solidified at the top of the stock before using).