Antes de nada intenta no usar MAYUSCULAS siempre, en internet esto es GRITAR y daña un poco los ojos.
Suponiendo algunas cosas que no especificas en tu pregunta, yo diría que lo que preguntas es esto (ojo, igual me equivoco):
SELECT SUM(C.valor)-S.CAN_PRO, C.pro
FROM (
SELECT
SUM(can_f) AS valor,
cod_pro AS pro
FROM
ti
WHERE
cod_ccaja = '2' AND
cod_turno = '4' AND
fec_f = '2013-06-24'
GROUP BY
cod_pro
UNION ALL
SELECT
SUM(can_ihf) AS valor,
cod_pro AS pro
FROM
ins
WHERE
cod_ccaja = '2' AND
cod_turno = '4' AND
fec_f = '2013-6-24'
GROUP BY cod_pro
) C
LEFT JOIN STOCK S ON S.COD_PRO=C.PRO
GROUP BY C.pro;
Detalles:
-Le he puesto una C a tu "FROM", de forma que el "stock" lleva delante un S y lo que ya tenias una C (los campos ahora son "C.Campo" o "S.Campo").
-Un left join te conecta tu consulta con la tabla de stock -y le llama S- usando el codigo como nexo.
-En el select del principio le resto el valor que querías.
Espero que fuese esto!