Skip to content

Portfolio Symphony: Convert Time Series to Pandas DataFrame

"""
Convert portfolio time series to a Pandas DataFrame and calculate daily percent change.
"""

from composer import ComposerClient
from dotenv import load_dotenv
import os

load_dotenv()

client = ComposerClient(
    api_key=os.getenv("COMPOSER_API_KEY"),
    api_secret=os.getenv("COMPOSER_API_SECRET"),
)

account_id = client.accounts.list().accounts[0].account_uuid
symphonies = client.portfolio.get_symphony_stats_meta(account_id)
symphony_id = symphonies.symphonies[0].id

res = client.portfolio.get_symphony_value_history(
    account_id=account_id,
    symphony_id=symphony_id
)

print("=== Symphony Value History ===")
print(res.df)
print()

pct_change = res.df["deposit_adjusted_series"].pct_change().dropna()
print("=== Daily Percent Change ===")
print(pct_change.head(10))

Output:

=== Symphony Value History ===
              series  deposit_adjusted_series
date                                         
2026-02-09  12927.76                 12990.00
2026-02-10  12748.05                 12748.05
2026-02-11  12842.90                 12842.90
2026-02-12  12059.14                 12059.14
2026-02-13  12111.55                 12111.55
2026-02-17  12081.60                 12081.60
2026-02-18  13856.63                 12309.85
2026-02-19  13699.68                 12170.42
2026-02-20  14044.41                 12476.67

=== Daily Percent Change ===
date
2026-02-10   -0.018626
2026-02-11    0.007440
2026-02-12   -0.061027
2026-02-13    0.004346
2026-02-17   -0.002473
2026-02-18    0.018892
2026-02-19   -0.011327
2026-02-20    0.025163
Name: deposit_adjusted_series, dtype: float64