El recurso recomendado por @AlexAbrahams es decente pero aquí hay otro enfoque (creo que mejor) que resuelve tanto (1) como (2):
#!/usr/bin/env python
# Call from the `Data` directory
import glob
import pandas as pd
import datetime
# Get all traded dates, with possible repetition
dates = []
for f in glob.glob('*/*.us.txt'):
dates += df['Date'].tolist()
# Remove repetitions
dates = set(dates)
# Optional: Convert to `datetime`
dates = map(lambda s: datetime.datetime.strptime(s, '%Y-%m-%d').date(),
dates)
# Optional: Sort
dates = sorted(dates)
Dos razones para considerar hacerlo de esta manera:
-
No necesita una dependencia externa, y muy grande, de QuantLib
.
-
En la producción, puede haber razones prácticas, estructurales o sistemáticas por las que no se puede operar en los días que están en Quantlib
pero no en sus datos . Por ejemplo, la red en la que se encuentran sus servidores puede estar caída, lo que le hace perder datos en esas fechas. A veces, esta pérdida está relacionada con eventos de gran volatilidad, por ejemplo, un disyuntor que se dispara en la bolsa y provoca un fallo en su propio software. No tiene sentido imputar los datos del calendario de operaciones "como si" hubieras podido operar en esas fechas porque hay una razón muy repetible por la que no habrías podido hacerlo. Tus propios datos son los que mejor captan estos matices, a diferencia de una biblioteca de terceros.