| 12345678910111213141516171819202122232425262728 |
- from __future__ import annotations
- import typing
- import cache
- def main() -> None:
- for spent_30d, ticker in sorted(items(), reverse=True):
- print(f'{ticker:4} {spent_30d:11,.0f}')
- def items() -> typing.Iterator[tuple[float, str]]:
- raw_prices: list[RawPrice] = cache.get('https://refined-prun.github.io/refined-prices/all.json')
- for price in raw_prices:
- if price['ExchangeCode'] != 'IC1':
- continue
- if (vwap_30d := price['VWAP30D']) is None or (traded_30d := price['Traded30D']) is None:
- continue
- spent_30d = vwap_30d * traded_30d
- yield spent_30d, price['MaterialTicker']
- class RawPrice(typing.TypedDict):
- MaterialTicker: str
- ExchangeCode: str
- VWAP30D: float | None
- Traded30D: float | None
- if __name__ == '__main__':
- main()
|