mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 04:52:07 +00:00
stocks/dps bug fixes (#2614)
* fix dps prom and ctb * fix prom command * fix dpotc * fix unit test
This commit is contained in:
@@ -147,7 +147,7 @@ class DarkPoolShortsController(StockBaseController):
|
||||
)
|
||||
if ns_parser:
|
||||
ibkr_view.display_cost_to_borrow(
|
||||
num_stocks=ns_parser.number,
|
||||
limit=ns_parser.number,
|
||||
export=ns_parser.export,
|
||||
)
|
||||
|
||||
@@ -229,7 +229,7 @@ class DarkPoolShortsController(StockBaseController):
|
||||
if ns_parser:
|
||||
finra_view.darkpool_otc(
|
||||
input_limit=ns_parser.n_num,
|
||||
promising=ns_parser.limit,
|
||||
limit=ns_parser.limit,
|
||||
tier=ns_parser.tier,
|
||||
export=ns_parser.export,
|
||||
)
|
||||
|
||||
@@ -64,8 +64,8 @@ def getFINRAweeks(tier: str = "T1", is_ats: bool = True) -> List:
|
||||
@log_start_end(log=logger)
|
||||
def getFINRAdata_offset(
|
||||
start_date: str,
|
||||
symbol: str = "",
|
||||
tier: str = "T1",
|
||||
symbol: str = "",
|
||||
is_ats: bool = True,
|
||||
offset: int = 0,
|
||||
) -> requests.Response:
|
||||
@@ -75,10 +75,10 @@ def getFINRAdata_offset(
|
||||
----------
|
||||
start_date: str
|
||||
Weekly data to get FINRA data, in YYYY-MM-DD format
|
||||
symbol: str
|
||||
Stock ticker to get data from
|
||||
tier: str
|
||||
Stock tier between T1, T2, or OTCE
|
||||
symbol: str
|
||||
Stock ticker to get data from
|
||||
is_ats: bool
|
||||
ATS data if true, NON-ATS otherwise
|
||||
offset: int
|
||||
@@ -259,35 +259,36 @@ def getATSdata(limit: int = 1000, tier_ats: str = "T1") -> Tuple[pd.DataFrame, D
|
||||
# df_ats = df_ats.append(df_ats_week, ignore_index=True)
|
||||
df_ats = pd.concat([df_ats, df_ats_week], ignore_index=True)
|
||||
|
||||
df_ats = df_ats.sort_values("weekStartDate")
|
||||
df_ats["weekStartDateInt"] = pd.to_datetime(df_ats["weekStartDate"]).apply(
|
||||
lambda x: x.timestamp()
|
||||
)
|
||||
if not df_ats.empty:
|
||||
df_ats = df_ats.sort_values("weekStartDate")
|
||||
df_ats["weekStartDateInt"] = pd.to_datetime(df_ats["weekStartDate"]).apply(
|
||||
lambda x: x.timestamp()
|
||||
)
|
||||
|
||||
console.print(f"Processing regression on {limit} promising tickers ...")
|
||||
console.print(f"Processing regression on {limit} promising tickers ...")
|
||||
|
||||
d_ats_reg = {}
|
||||
# set(df_ats['issueSymbolIdentifier'].values) this would be iterating through all tickers
|
||||
# but that is extremely time consuming for little reward. A little filtering is done to
|
||||
# speed up search for best ATS tickers
|
||||
for symbol in list(
|
||||
df_ats.groupby("issueSymbolIdentifier")["totalWeeklyShareQuantity"]
|
||||
.sum()
|
||||
.sort_values()[-limit:]
|
||||
.index
|
||||
):
|
||||
try:
|
||||
slope = stats.linregress(
|
||||
df_ats[df_ats["issueSymbolIdentifier"] == symbol][
|
||||
"weekStartDateInt"
|
||||
].values,
|
||||
df_ats[df_ats["issueSymbolIdentifier"] == symbol][
|
||||
"totalWeeklyShareQuantity"
|
||||
].values,
|
||||
)[0]
|
||||
d_ats_reg[symbol] = slope
|
||||
except Exception: # nosec B110
|
||||
pass
|
||||
d_ats_reg = {}
|
||||
# set(df_ats['issueSymbolIdentifier'].values) this would be iterating through all tickers
|
||||
# but that is extremely time consuming for little reward. A little filtering is done to
|
||||
# speed up search for best ATS tickers
|
||||
for symbol in list(
|
||||
df_ats.groupby("issueSymbolIdentifier")["totalWeeklyShareQuantity"]
|
||||
.sum()
|
||||
.sort_values()[-limit:]
|
||||
.index
|
||||
):
|
||||
try:
|
||||
slope = stats.linregress(
|
||||
df_ats[df_ats["issueSymbolIdentifier"] == symbol][
|
||||
"weekStartDateInt"
|
||||
].values,
|
||||
df_ats[df_ats["issueSymbolIdentifier"] == symbol][
|
||||
"totalWeeklyShareQuantity"
|
||||
].values,
|
||||
)[0]
|
||||
d_ats_reg[symbol] = slope
|
||||
except Exception: # nosec B110
|
||||
pass
|
||||
|
||||
return df_ats, d_ats_reg
|
||||
|
||||
@@ -314,7 +315,7 @@ def getTickerFINRAdata(symbol: str) -> Tuple[pd.DataFrame, pd.DataFrame]:
|
||||
for tier in tiers:
|
||||
for d_week in getFINRAweeks(tier, is_ats=True):
|
||||
status_code, response = getFINRAdata(
|
||||
d_week["weekStartDate"], tier, symbol, True
|
||||
d_week["weekStartDate"], symbol, tier, True
|
||||
)
|
||||
if status_code == 200:
|
||||
if response:
|
||||
@@ -333,7 +334,7 @@ def getTickerFINRAdata(symbol: str) -> Tuple[pd.DataFrame, pd.DataFrame]:
|
||||
for tier in tiers:
|
||||
for d_week in getFINRAweeks(tier, is_ats=False):
|
||||
status_code, response = getFINRAdata(
|
||||
d_week["weekStartDate"], tier, symbol, False
|
||||
d_week["weekStartDate"], symbol, tier, False
|
||||
)
|
||||
if status_code == 200:
|
||||
if response:
|
||||
|
||||
@@ -213,16 +213,23 @@ def darkpool_otc(
|
||||
# TODO: Improve command logic to be faster and more useful
|
||||
df_ats, d_ats_reg = finra_model.getATSdata(input_limit, tier)
|
||||
|
||||
symbols = list(
|
||||
dict(sorted(d_ats_reg.items(), key=lambda item: item[1], reverse=True)).keys()
|
||||
)[:limit]
|
||||
if not df_ats.empty and d_ats_reg:
|
||||
|
||||
plot_dark_pools_ats(df_ats, symbols, external_axes)
|
||||
console.print("")
|
||||
symbols = list(
|
||||
dict(
|
||||
sorted(d_ats_reg.items(), key=lambda item: item[1], reverse=True)
|
||||
).keys()
|
||||
)[:limit]
|
||||
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"prom",
|
||||
df_ats,
|
||||
)
|
||||
plot_dark_pools_ats(df_ats, symbols, external_axes)
|
||||
console.print("")
|
||||
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"prom",
|
||||
df_ats,
|
||||
)
|
||||
else:
|
||||
console.print("[red]Could not get data[/red]\n")
|
||||
return
|
||||
|
||||
@@ -274,7 +274,7 @@ def test_call_func_expect_queue(expected_queue, queue, func):
|
||||
],
|
||||
dict(
|
||||
num=1,
|
||||
promising=2,
|
||||
limit=2,
|
||||
tier="T1",
|
||||
export="csv",
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user