The following search may be closer to what you want. However, you can't have a timechart at the end of this pipeline, because you have factored out _time in the stats commands. And you don't need a subsearch.
sourcetype="service_ppe" source="/var/log/httpClient*.log" OR source="/var/log/request*.log"
| eval type=if(match(source,"/var/log/request.*.log"),"response","external_response")
| chart sum(time_ms) by trace_id type
| eval price_response=response - external_response
For each traceid, this calculates the sum of the timems. If the timems comes from the httpClient log, it is added to the externalresponse. If the timems comes from the request log, it is added to the response. Finally, the difference between the two is calculated for each traceid. The resulting table will show the traceid, externalresponse, response, and price_response.
If you want a timechart, exactly what do you want to see on the chart?