max_pain: add piker logging, tweak var names, notes and todos

decimal_prices_thru_ems
Tyler Goodlet 2025-04-24 12:15:26 -04:00
parent bc72e3d206
commit d655e81290
1 changed files with 30 additions and 7 deletions

View File

@ -2,22 +2,29 @@
from decimal import (
Decimal,
)
from pathlib import Path
import numpy as np
import polars as pl
# import polars as pl
import trio
import tractor
from datetime import datetime
from pprint import pformat
# from pprint import pformat
from piker.brokers.deribit.api import (
get_client,
maybe_open_oi_feed,
)
from piker.storage import open_storage_client, StorageClient
from piker.log import get_logger
import sys
import pyqtgraph as pg
from PyQt6 import QtCore
from pyqtgraph import ScatterPlotItem, InfiniteLine
from PyQt6.QtWidgets import QApplication
from cryptofeed.symbols import Symbol
log = get_logger(__name__)
# XXX, use 2 newlines between top level LOC (even between these
# imports and the next function line ;)
@ -192,10 +199,13 @@ async def max_pain_daemon(
),
], dtype=dtype)
path = await client.write_oi(
path: Path = await client.write_oi(
col_sym_key,
data,
)
# TODO, use std logging like this throughout for status
# emissions on console!
log.info(f'Wrote OI history to {path}')
def get_max_pain(
oi_by_strikes: dict[str, dict[str, Decimal]]
@ -258,7 +268,7 @@ async def max_pain_daemon(
# hardcoded to something, sorry.)
timestamp = msg[1]['timestamp']
max_pain = get_max_pain(oi_by_strikes)
intrinsic_values = get_total_intrinsic_values(oi_by_strikes)
# intrinsic_values = get_total_intrinsic_values(oi_by_strikes)
# graph here
plot_graph(oi_by_strikes, plot)
@ -298,14 +308,27 @@ async def max_pain_daemon(
async def main():
async with tractor.open_nursery() as n:
async with tractor.open_nursery(
debug_mode=True,
loglevel='info',
) as an:
from tractor import log
log.get_console_log(level='info')
p: tractor.Portal = await n.start_actor(
ptl: tractor.Portal = await an.start_actor(
'max_pain_daemon',
enable_modules=[__name__],
infect_asyncio=True,
# ^TODO, we can actually run this in the root-actor now
# if needed as per 2nd "section" in,
# https://pikers.dev/goodboy/tractor/pulls/2
#
# NOTE, will first require us porting to modern
# `tractor:main` though ofc!
)
await p.run(max_pain_daemon)
await ptl.run(max_pain_daemon)
if __name__ == '__main__':
trio.run(main)