Controlling saturation on scene referred data
The sample code for the ASC-CDL Saturation component looks like this:

/* compute the fully desaturated grey value */
luma =  rgb[0] * sat_coef_709[0] +
    rgb[1] * sat_coef_709[1] +
    rgb[2] * sat_coef_709[2] ;

/* 
output rgb is a weighted average between the input rgb and 
the fully desaturated grey value with "sat" as the weight...
*/

for (c=0; c&lt;3; c++)
    rgb[c] = rgb[c] * sat + luma * (1.0 - sat);


The coefficients for any given RGB colourspace will differ. The coefficients for REC.709, are RGB 0.2126, 0.7152, 0.0722

Should be easy to sort out.

And yes, as per @cegaton, avoid the horrible use of (the also equally incorrectly labelled) YUV.

Technically, the RGB to BW node should work and honour the luma coefficients in the OpenColorIO configuration as well.