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}")