From d655e81290fb7ea370791a1998c972d45e2d771d Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 24 Apr 2025 12:15:26 -0400 Subject: [PATCH] max_pain: add piker logging, tweak var names, notes and todos --- examples/max_pain.py | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/examples/max_pain.py b/examples/max_pain.py index 82908163..36691889 100755 --- a/examples/max_pain.py +++ b/examples/max_pain.py @@ -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)