Explorar el Código

movers: show price change percentage

instead of score
raylu hace 1 semana
padre
commit
71009c5a5a
Se han modificado 1 ficheros con 6 adiciones y 4 borrados
  1. 6 4
      movers.py

+ 6 - 4
movers.py

@@ -22,7 +22,7 @@ def main() -> None:
 	top_movers = sorted(movers.values(), key=lambda m: m[0].score, reverse=True)
 
 	for commodity in top_movers:
-		print(f'{commodity[0].score:9,.0f}', ' '.join(f'{mover.ticker}.{mover.exchange_code}' for mover in commodity))
+		print(f'{commodity[0].price_change:5,.2f}', ' '.join(f'{mover.ticker}.{mover.exchange_code}' for mover in commodity))
 
 def get_old_prices() -> typing.Mapping[str, RawPrice]:
 	week_ago = datetime.datetime.now(datetime.UTC) - datetime.timedelta(days=14)
@@ -35,9 +35,10 @@ def analyze_raw_price(current_price: RawPrice, old_price: RawPrice) -> Mover | N
 		return
 	if (current_vwap7d := current_price['VWAP7D']) is None or (old_vwap7d := old_price['VWAP7D']) is None:
 		return
-	diff = abs(current_vwap7d - old_vwap7d)
-	if diff / min(current_vwap7d, old_vwap7d) > 0.15:
-		return Mover(current_price['ExchangeCode'], current_price['MaterialTicker'], diff * traded)
+	diff = current_vwap7d - old_vwap7d
+	if abs(diff) / min(current_vwap7d, old_vwap7d) > 0.15:
+		return Mover(current_price['ExchangeCode'], current_price['MaterialTicker'], abs(diff) * traded,
+				diff / old_vwap7d)
 
 class RawPrice(typing.TypedDict):
 	FullTicker: str
@@ -51,6 +52,7 @@ class Mover:
 	exchange_code: str
 	ticker: str
 	score: float
+	price_change: float
 
 	def __lt__(self, other: Mover) -> bool:
 		return self.score < other.score