This is possible. It’s a little involved.

Time series data

In[]:=
BTC=FinancialData["BTC/USD",{{2013,1,1},{2013,1,31},"Day"}];
In[]:=
wd=WeatherData["Chicago","Temperature",{{2013,1,1},{2013,1,31},"Day"}];

Setting up custom function

You can get the interpolation function used to plot the time series data like this:
In[]:=
wd["PathFunction"]
Out[]=
Functionx.,InterpolatingFunction
Domain: 3.57×
9
10
,3.57×
9
10

Output: scalar
[x.],Listable
In plots, the ColorFunction option can be any function you want, and the documentation will tell you how inputs get fed to the ColorFunction function. You can also do this trick to just look at what values get passed to ColorFunction:
In[]:=
DateListPlot[BTC,ColorFunctionPrint@*List,ColorFunctionScaling->False]
{3.56599×
9
10
,13.24}
{3.56607×
9
10
,13.22}
{3.56616×
9
10
,13.09}
{3.56625×
9
10
,13.19}
{3.56633×
9
10
,13.19}
{3.56642×
9
10
,13.15}
{3.56651×
9
10
,13.15}
{3.56659×
9
10
,13.2}
{3.56668×
9
10
,13.5}
{3.56676×
9
10
,13.58}
{3.56685×
9
10
,14.}
{3.56694×
9
10
,14.}
{3.56702×
9
10
,13.89}
{3.56711×
9
10
,13.64}
{3.5672×
9
10
,14.1}
{3.56728×
9
10
,14.2}
{3.56737×
9
10
,14.53}
{3.56746×
9
10
,15.36}
{3.56754×
9
10
,15.57}
{3.56763×
9
10
,15.38}
{3.56772×
9
10
,15.5}
{3.5678×
9
10
,16.52}
{3.56789×
9
10
,17.35}
{3.56797×
9
10
,17.5}
{3.56806×
9
10
,17.29}
{3.56815×
9
10
,17.49}
{3.56823×
9
10
,17.49}
{3.56832×
9
10
,17.6}
{3.56841×
9
10
,18.67}
{3.56849×
9
10
,19.35}
{3.56858×
9
10
,19.45}
{3.56599×
9
10
,13.24}
{3.56607×
9
10
,13.22}
{3.56616×
9
10
,13.09}
{3.56625×
9
10
,13.19}
{3.56633×
9
10
,13.19}
{3.56642×
9
10
,13.15}
{3.56651×
9
10
,13.15}
{3.56659×
9
10
,13.2}
{3.56668×
9
10
,13.5}
{3.56676×
9
10
,13.58}
{3.56685×
9
10
,14.}
{3.56694×
9
10
,14.}
{3.56702×
9
10
,13.89}
{3.56711×
9
10
,13.64}
{3.5672×
9
10
,14.1}
{3.56728×
9
10
,14.2}
{3.56737×
9
10
,14.53}
{3.56746×
9
10
,15.36}
{3.56754×
9
10
,15.57}
{3.56763×
9
10
,15.38}
{3.56772×
9
10
,15.5}
{3.5678×
9
10
,16.52}
{3.56789×
9
10
,17.35}
{3.56797×
9
10
,17.5}
{3.56806×
9
10
,17.29}
{3.56815×
9
10
,17.49}
{3.56823×
9
10
,17.49}
{3.56832×
9
10
,17.6}
{3.56841×
9
10
,18.67}
{3.56849×
9
10
,19.35}
{3.56858×
9
10
,19.45}
Out[]=
I used ColorFunctionScaling->False because I don’t want to have to manually scale things myself. So, the date is actually the AbsoluteTime applied to the date. And we only care about the first input, but we will need a function that takes two inputs.
If we use TemperatureMap as our color palette, we’ll need to scale values to the {0,1} range. Let’s define a constant for that range for convenience.
In[]:=
wdRange=QuantityMagnitude[MinMax[wd["Values"]]]
Out[]=
{-15,10.44}
Let's also define a function based on the weather interpolation function but that strips the units:
In[]:=
wdPathFn=QuantityMagnitude@*wd["PathFunction"]
Out[]=
QuantityMagnitude@*Functionx.,InterpolatingFunction
Domain: 3.57×
9
10
,3.57×
9
10

Output: scalar
[x.],Listable
Now we’re ready to define a color function.
In[]:=
customColor[x_,y_]:=ColorData["TemperatureMap"][Rescale[wdPathFn[x],wdRange]]
A quick test...
In[]:=
customColor[AbsoluteTime[{2013,1,1}],1]
Out[]=

Applying the color function

In[]:=
DateListPlot[BTC,ColorFunctioncustomColor,ColorFunctionScaling->False]
Out[]=
A quick comparison to the weather data plot. It looks reasonable to me.
In[]:=
DateListPlot[wd]
Out[]=