Exclude sold positions from portfolio value
This commit is contained in:
parent
652e5504c3
commit
8d1eaafebb
@ -211,10 +211,15 @@ def _normalize_enrich_groww_item(access_token: str, item: dict, normalizer) -> d
|
|||||||
default=0.0,
|
default=0.0,
|
||||||
)
|
)
|
||||||
normalized["close_price"] = normalized["last_price"]
|
normalized["close_price"] = normalized["last_price"]
|
||||||
normalized["holding_value"] = normalized.get("effective_quantity", 0) * normalized["last_price"]
|
exposure_quantity = _first_number(
|
||||||
|
normalized.get("net_quantity"),
|
||||||
|
normalized.get("effective_quantity"),
|
||||||
|
default=0.0,
|
||||||
|
)
|
||||||
|
normalized["holding_value"] = max(exposure_quantity, 0.0) * normalized["last_price"]
|
||||||
normalized["display_pnl"] = _first_number(
|
normalized["display_pnl"] = _first_number(
|
||||||
normalized.get("display_pnl"),
|
normalized.get("display_pnl"),
|
||||||
normalized.get("effective_quantity", 0)
|
exposure_quantity
|
||||||
* (normalized["last_price"] - normalized.get("average_price", 0)),
|
* (normalized["last_price"] - normalized.get("average_price", 0)),
|
||||||
default=0.0,
|
default=0.0,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -362,10 +362,22 @@ def normalize_holding(item: dict | None) -> dict:
|
|||||||
|
|
||||||
def normalize_position(item: dict | None) -> dict:
|
def normalize_position(item: dict | None) -> dict:
|
||||||
entry = normalize_holding(item)
|
entry = normalize_holding(item)
|
||||||
quantity = abs(_first_float(entry.get("effective_quantity"), entry.get("quantity"), default=0.0))
|
signed_quantity = _first_float(
|
||||||
|
entry.get("net_quantity"),
|
||||||
|
entry.get("effective_quantity"),
|
||||||
|
entry.get("quantity"),
|
||||||
|
default=0.0,
|
||||||
|
)
|
||||||
|
quantity = abs(signed_quantity)
|
||||||
entry["settled_quantity"] = quantity
|
entry["settled_quantity"] = quantity
|
||||||
entry["effective_quantity"] = quantity
|
entry["effective_quantity"] = quantity
|
||||||
entry["quantity"] = quantity
|
entry["quantity"] = quantity
|
||||||
entry["holding_value"] = quantity * _first_float(entry.get("last_price"), default=0.0)
|
entry["net_quantity"] = signed_quantity
|
||||||
|
entry["display_pnl"] = _first_float(
|
||||||
|
entry.get("display_pnl"),
|
||||||
|
default=signed_quantity
|
||||||
|
* (_first_float(entry.get("last_price"), default=0.0) - _first_float(entry.get("average_price"), default=0.0)),
|
||||||
|
)
|
||||||
|
entry["holding_value"] = max(signed_quantity, 0.0) * _first_float(entry.get("last_price"), default=0.0)
|
||||||
entry["product"] = _first_text(entry.get("product"), entry.get("product_type"), default="CNC").upper()
|
entry["product"] = _first_text(entry.get("product"), entry.get("product_type"), default="CNC").upper()
|
||||||
return entry
|
return entry
|
||||||
|
|||||||
@ -310,7 +310,7 @@ def normalize_position(item: dict | None) -> dict:
|
|||||||
quantity = abs(signed_quantity)
|
quantity = abs(signed_quantity)
|
||||||
average_price = position_average_price(entry)
|
average_price = position_average_price(entry)
|
||||||
last_price = position_last_price(entry)
|
last_price = position_last_price(entry)
|
||||||
pnl = _first_float(entry.get("pnl"), default=quantity * (last_price - average_price))
|
pnl = _first_float(entry.get("pnl"), default=signed_quantity * (last_price - average_price))
|
||||||
entry["settled_quantity"] = quantity
|
entry["settled_quantity"] = quantity
|
||||||
entry["t1_quantity"] = 0.0
|
entry["t1_quantity"] = 0.0
|
||||||
entry["effective_quantity"] = quantity
|
entry["effective_quantity"] = quantity
|
||||||
@ -320,7 +320,7 @@ def normalize_position(item: dict | None) -> dict:
|
|||||||
entry["last_price"] = last_price
|
entry["last_price"] = last_price
|
||||||
entry["close_price"] = last_price
|
entry["close_price"] = last_price
|
||||||
entry["display_pnl"] = pnl
|
entry["display_pnl"] = pnl
|
||||||
entry["holding_value"] = quantity * last_price
|
entry["holding_value"] = max(signed_quantity, 0.0) * last_price
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user