A comment on performance...
The Manipulate in the answer works smoothly and promptly on my old iMac (which does have 12GB memory), so it's not easy to detect improvements in performance.
There are many techniques for optimizing dynamic interfaces in Mathematica, and so far I've learnt a couple.
First, switch off continuous updating:
Manipulate[ListPlot[
{list, min[#, minPercent] & /@ Range[1000],
max[#, maxPercent] & /@ Range[1000]},
Filling -> {3 -> {2}}],
{minPercent, 0.0, 5.0, ContinuousAction -> False},
{maxPercent, 0.0, 5.0, ContinuousAction -> False}]
This updates the display only when you release the slider.
A more interesting way is to use ControlActive and provide alternative displays for when a control is active:
Manipulate[
ControlActive[
ListPlot[{min[#, minPercent] & /@ Range[1000],
max[#, maxPercent] & /@ Range[1000]},
Filling -> {2 -> {1}}],
ListPlot[{list, min[#, minPercent] & /@ Range[1000],
max[#, maxPercent] & /@ Range[1000]},
Filling -> {3 -> {2}}]],
{minPercent, 0.0, 5.0},
{maxPercent, 0.0, 5.0}]
The list is plotted only when you stop moving the sliders.
minandmaxvariables mentioned are constants of the formy_minandy_max, the slopes of lines through the origin, or possibly more complex functions that will plot as curves on the data plot. – m_goldberg Jan 05 '13 at 18:52