mirror of
https://github.com/ada-dmitry/etf-gyro.git
synced 2026-09-25 16:10:14 +00:00
Инициализация публичного репозитория
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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}")
|
||||
Reference in New Issue
Block a user