Your question reminds me of this notebook: http://docs.pymc.io/notebooks/GP-smoothing.html
I think using a Gaussian random walk model similar to this notebook is a good start. The key to me in that example is that you can express the total variance at each data point as a combination of noise and covariance from the data point right next to it.