Move factor helper to a classmethod

fqsns
Tyler Goodlet 2022-02-28 19:47:07 -05:00
parent 94e2103bf5
commit 434c340cb8
1 changed files with 33 additions and 31 deletions

View File

@ -17,6 +17,7 @@
""" """
numpy data source coversion helpers. numpy data source coversion helpers.
""" """
from __future__ import annotations
from typing import Any from typing import Any
import decimal import decimal
@ -98,16 +99,43 @@ class Symbol(BaseModel):
Yah, i guess dats what it izz. Yah, i guess dats what it izz.
""" """
key: str key: str
type_key: str # {'stock', 'forex', 'future', ... etc.} tick_size: float = 0.01
tick_size: float lot_tick_size: float = 0.0 # "volume" precision as min step value
lot_tick_size: float # "volume" precision as min step value tick_size_digits: int = 2
tick_size_digits: int lot_size_digits: int = 0
lot_size_digits: int
broker_info: dict[str, dict[str, Any]] = {} broker_info: dict[str, dict[str, Any]] = {}
# specifies a "class" of financial instrument # specifies a "class" of financial instrument
# ex. stock, futer, option, bond etc. # ex. stock, futer, option, bond etc.
# @validate_arguments
@classmethod
def from_broker_info(
cls,
broker: str,
symbol: str,
info: dict[str, Any],
# XXX: like wtf..
# ) -> 'Symbol':
) -> None:
tick_size = info.get('price_tick_size', 0.01)
lot_tick_size = info.get('lot_tick_size', 0.0)
return Symbol(
key=symbol,
tick_size=tick_size,
lot_tick_size=lot_tick_size,
tick_size_digits=float_digits(tick_size),
lot_size_digits=float_digits(lot_tick_size),
broker_info={broker: info},
)
@property
def type_key(self) -> str:
return list(self.broker_info.values())[0]['asset_type']
@property @property
def brokers(self) -> list[str]: def brokers(self) -> list[str]:
return list(self.broker_info.keys()) return list(self.broker_info.keys())
@ -138,32 +166,6 @@ class Symbol(BaseModel):
] ]
@validate_arguments
def mk_symbol(
key: str,
type_key: str,
tick_size: float = 0.01,
lot_tick_size: float = 0,
broker_info: dict[str, Any] = {},
) -> Symbol:
'''
Create and return an instrument description for the
"symbol" named as ``key``.
'''
return Symbol(
key=key,
type_key=type_key,
tick_size=tick_size,
lot_tick_size=lot_tick_size,
tick_size_digits=float_digits(tick_size),
lot_size_digits=float_digits(lot_tick_size),
broker_info=broker_info,
)
def from_df( def from_df(
df: pd.DataFrame, df: pd.DataFrame,