Checking back in after running this board for over a month now. After the strange second week, the frequency stabilized. I'm thinking it was an affect of aging.
Below is a graph of frequency error averaged over every 16 second interval
And the next graph is an Allan deviation comparison. Allan deviation measures frequency stability over various time periods. The clock all these sources are being compared against is the GPS system (which is more accurate than I can currently measure).
The Y axis is frequency stability, and the X axis is the time period length. Smaller numbers (down) on the Y axis are better. For reference, 1ppm = 10^-6. There's four different clocks being compared.
Purple "TCXO" clock line - this stm32f030 board
Dark Yellow "gmtimer-PPS" clock line - a Beaglebone Black with a hardware timer driver connected to a local GPS module
Light Blue "gpio-PPS" clock line - a Beaglebone Black with a gpio interrupt based driver connected to a local GPS module
Green "vps3-home" clock line - NTP (custom client) over the internet
The TCXO isn't synced to any system, so in long time spans, it drifts off of its proper frequency. Since all the other systems are synced to a GPS (directly or indirectly), they don't drift off after hours or days.
My goal for this module is to provide frequency stability to machines being synced over the internet. This would be combining two time sources: the green "vps3-home" line, and the purple "TCXO" line. At the "1 day" marker, the network source moves around by +/-0.320ppm and the TCXO source moves around by +/-0.08ppm.
You can see that in detail in this next graph, where each frequency sample is an average over 1 day.
From that graph, you can see that one day to the next, it mostly moves less than 0.08ppm.
My next step is to feed this better frequency stability into a Raspberry Pi or other SBC. I'll be using the gpio interrupt driver for that, and the limits on that driver's accuracy and precision are given by the blue "gpio-PPS" line. I'll need to combine the local frequency stability over the short term with the long term frequency stability from the network. I have some ideas for this, but I haven't written the code yet.
I'm pretty happy with this result. My GPS module is only accurate to 1e-8 at 1 second anyways, and my measurement precision limitation at 1 second is 2.1e-8. At around 10 seconds, my measurement precision limitation is 2.1e-9. So the TCXO is pretty much right at my measurement limit for very short timescales. I wasn't expecting that at all.