Files

39 lines
1.4 KiB
Python

import yaml
from decimal import Decimal
from typing import Dict, Any
def load_config(config_path: str = "config/target.yaml") -> Dict[str, Any]:
with open(config_path, "r", encoding="utf-8") as f:
data = yaml.safe_load(f)
# Результирующий словарь для портфеля
portfolio = {}
corridor = Decimal(str(data.get("corridor", 0)))
# Проходим по всем инструментам в блоке portfolio
for ticker, info in data.get("portfolio", {}).items():
# Важно: переводим weight в Decimal сразу при чтении
portfolio[ticker] = {
"name": info.get("name"),
"figi": info.get("figi"),
"uid": info.get("uid"),
"weight": Decimal(str(info.get("weight", 0))),
}
# Проверка суммы весов
total_weight = sum(item["weight"] for item in portfolio.values())
if abs(total_weight - Decimal("1.0")) > Decimal("0.0001"):
print(
f"⚠️ ВНИМАНИЕ: Сумма весов в конфиге = {total_weight}. Проверьте коэффициенты!"
)
return portfolio, corridor # type: ignore
if __name__ == "__main__":
config, corridor = load_config()
for ticker, info in config.items(): # type: ignore
print(f"{ticker}: {info}")
print(f"Corridor: {corridor}")