fix: gate setups on SEC filing completeness

This commit is contained in:
2026-08-03 23:47:07 +02:00
parent 7d703ea524
commit 3a6900d45a
11 changed files with 723 additions and 56 deletions
@@ -23,6 +23,8 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.models.ohlcv import OHLCVRecord
from app.models.paper_trade import PaperTrade
from app.models.signal_context_snapshot import SignalContextSnapshot
from app.models.sec_filing_gap import SecFilingGap
from app.models.settings import SystemSetting
from app.models.sr_level import SRLevel
from app.models.ticker import Ticker
from app.models.trade_setup import TradeSetup
@@ -513,6 +515,45 @@ async def test_get_trade_setups_excludes_stale_rows(db_session: AsyncSession):
assert stale_rows == []
@pytest.mark.asyncio
async def test_get_trade_setups_hides_active_sec_filing_gap(
db_session: AsyncSession,
):
now = datetime.now(timezone.utc)
ticker = Ticker(symbol="SECWAIT", cik="0000000042")
db_session.add(ticker)
await db_session.flush()
db_session.add_all([
SystemSetting(
key="fundamental_data_sec_dolt_cutover_enabled",
value="true",
),
SecFilingGap(
cik=ticker.cik,
accession="0000000042-26-000001",
form="10-Q",
index_date=date.today(),
reason="not_in_companyfacts",
first_seen_at=now,
last_attempted_at=now,
),
TradeSetup(
ticker_id=ticker.id,
direction="long",
entry_price=100.0,
stop_loss=97.0,
target=109.0,
rr_ratio=3.0,
composite_score=70.0,
confidence_score=80.0,
detected_at=now,
),
])
await db_session.flush()
assert await get_trade_setups(db_session, symbol="SECWAIT") == []
@pytest.mark.asyncio
async def test_get_trade_setups_can_exclude_tickers_with_open_paper_trades(
db_session: AsyncSession,