bba2bcbad2fab7d0dba423b0bc23557de888ed6dea0585e8b59e971c4f916956 alembic/env.py ac0c8127d38b166cc4de4214edf33e7c2e104095a64aecf1670a07fb6b80c84d alembic/versions/0001_initial_schema.py e1afb58a80dd686c24442a351e9fab2b7f9f3cc695cff19f9567261eae647b5c alembic/versions/0002_confidence_data_quality_scores.py c1bd737bdd2fa0ae8b1b41d501c5d65d2d2609847079adcd0199a70ea5715795 alembic/versions/0003_revoked_tokens.py de08ccffbc8e535fed71f897980298fd8c74365474b6a5472b59443bde1a8f8c alembic/versions/0004_alert_events_emerging.py f013c6744d611b65e0d70cf55fccb4e99e91276de29dcee03e9fc8e2da0cfea0 alembic/versions/0005_harden_financial_period_uniqueness.py f4fd2dc266df3047c21414ee64cc11587c80384a80f9dbab84d6d353df062501 app/adapters/base.py 1e8c04dcf94838fa759347e24e4b8debe14ebac20e0cc1ee2a5f2cb27d901222 app/adapters/demo.py 3385cf4808dc3aac30fe2e688372a42a85eb7ba1a1b3c22872185a2a57096891 app/adapters/eodhd.py c8df91e89095e68d6633d8972bcbb04758811420067fd6ab7a53b64ab6e4f5da app/adapters/fmp.py 86586aadc3416f38627b3b6e94343cfced598ed5d23fde01bead8282eab98b8c app/adapters/__init__.py 183842352c4c3b0ec9e2fabffa043ff6fbb125c2a0b602c9da53477d17b7bfb8 app/adapters/resolver.py 233f1caff590a88a0ebfcc897047c92426bff31a40ce3b69d890410a27ac7560 app/adapters/schemas.py 4ff976fb3b68594b7991c8d172143278670ae3685d49ad61f5b945db61b4f19a app/adapters/validation.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 app/api/__init__.py 42dc0ee9836918a62ed97a9de5a467104ed0b2743033070f83d58a50e69b4639 app/api/v1/aggregation.py 62adcadf66a1af874dcfb59ea097734adc037b5aafe3c0e7bc546da6de2c0a4e app/api/v1/auth.py d7fbd03468ec6391c7912c500c6aca0e17aa2bb15ce1a557b675881c72f7b118 app/api/v1/companies.py 466d8ad87d131a224aed7b32003e45afebeec425973f8496952fc830b84ead54 app/api/v1/deps.py 865ba171029096f8bd40f0964128ea4467f25228f16d5da2be799675974f33d6 app/api/v1/health.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 app/api/v1/__init__.py 8bdf8b575e480cb8d9e6ef8d24136424f5d96948bc77e39e539c5b48f2b12b23 app/api/v1/rankings.py 5497cbb6ba10694251cc17832e42097d9cd1db79f1ae477df4e21d126985f093 app/api/v1/screeners.py 03b4fe618e9a0506ba755d95af3c2bfcdcec68b49a639d6fe40865228936f8a6 app/api/v1/search.py 8f7dc1e1180d2ea06c71fcfa8e410a2489765315f03706a20f3ee41305aba569 app/api/v1/serializers.py dcec5257b0c8404cc040cd649eb8a4d1f19072c772ddaf9b4fcd7fb41528fc0d app/api/v1/watchlist.py 85e74ee9aac1631abe1eb36387e2fd7ee5861ca50b833fb40833f468ee70914c app/core/config.py 1b608df47c325b2a70e1aabc9ab77045f4ec73d518f88c8b9ca8a713faa86718 app/core/db.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 app/core/__init__.py 40c3c52a3b0d5e6762961ca4b19fbdd896f3c84768a0a9345ebf586935127e2e app/core/logging.py 1adeeec1fb771087d7e209c2082d4bfdf5fc6440e62ff15e108f50210f2fa317 app/core/model_version.py 2bf27182e98b6dcd0687fd87503b18edaa72b64e374cbc9c03fcf004728105b8 app/core/security.py 48449683fb559724c0527c174789e2a58f376ae0c73a8b9ce5b02fecde2ddab8 app/core/token_revocation.py f00535512f78a2ef1dd7fc2d27bb7313827a4cac39fcb1813106f5e9cbc05f0e app/engines/alerts.py 21bc6decf4119ccf61a71efd0f03a61d5af947fda1d315dd2bc2e6ec9c5fe6db app/engines/backtesting/__init__.py e70318120687c2aaf6957e313d79385ae31dc4e7b695b5b6c3d3f7a9ec92c46c app/engines/backtesting/performance.py 5b8ccba0591758fb3970851363ee997579049c2a1ecf0f5c505d268b02e7e17d app/engines/backtesting/replay.py 327f2bff4111ad051f2926dd5d6d5befd62c3a77e937f89709c0e32e95e466a0 app/engines/backtesting/robustness.py 817d4b2ed448b6c89addf4526d83d683dd8647f0f7e66a7a0b62e81178634fbd app/engines/currency.py 4430971552a9411b9e8971a6bfc57e9b67bca6529978dabc9bb00ae7aaa88e92 app/engines/discovery/emerging.py d56124178733ad7efc394de66768e88253d4ffa229026ab15502e3b205052363 app/engines/discovery/__init__.py d77e65aeeb954f4f678d3e34f1abb3b651831b788ada91bcd75833c0359f2e25 app/engines/estimates.py bfd9d94404a728c38b4e01d68dc4811f0374b41eaa324bf94ea76cf5357eb7bc app/engines/identity.py 63a0b07d915a011af28cfe2adb37beb58c6e35832afd5f5889a678df1cc5c9fa app/engines/industry_applicability.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 app/engines/__init__.py 8b70ec7a9b8e2d0ef98c1b4f480cd0939a41e05e05e3944d5c65a3fe2f38d8d3 app/engines/macro/context.py cff88d9a53abff2d54e38882e08b7970545ee47807beb14a91a8a1dba3cb98b3 app/engines/macro/__init__.py f0d5fc42c4c6278b3976dde6ef9686fb71a146db3a9f36235f43adae41197e17 app/engines/metrics/core.py 8016eb4aeb2da498b9017615e05fb41efe8727b0861ca731a6a68e9cb396ba26 app/engines/metrics/formula_utils.py 9b1bbbe72251ce52a5991868912c47cd4025a67cb2b07dc94f13fafdcaad7e0d app/engines/metrics/__init__.py cf16d1e909dfac04cf5fcdf84098f83b5b1e150c06529514d628be686acbea2f app/engines/metrics/point_in_time.py c560f5fdcc92fc1fd9043af25856e41d22f4ed2729f21da497ebd8d0de90d6f0 app/engines/multibagger/__init__.py f5347aab28ae35bfc04d8bd963c42f2953d7e2035bc8ea6f5233fdcb75ce3e0c app/engines/multibagger/score.py ccbc2c2b84e19c5ab310a52a07ab93ffa3e9bf2e1b5d69a7366fb7522404fbd2 app/engines/normalize.py 5fd8b8de40c4be8c100202623fdff2f57765ea6e0373952cb618305477569a4e app/engines/quality/accounting.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 app/engines/quality/__init__.py 681c3afc3bd7e127c0ad4919112a316a50e21308de5d95a95861ad1f882f6256 app/engines/recommendation/bands.py 3881176d8023585d7584259b1416df6db97f2847dd5dfbe43ff6d7de8280176c app/engines/recommendation/engine.py e37e0a2b66c6959475258bac0c83a81896328e723842408d8de2bc7c968856ab app/engines/recommendation/__init__.py e3ac1a5609e639957575a0bbd5fb1f7c9c92eeda6a61334b3f760080f2d423fe app/engines/recommendation/sell_trigger_builder.py ce3ec91cfe5e966e1f1b189240a897832d3da36b78dd3902dfc397fe7fff2766 app/engines/recommendation/sell_triggers.py ffc78d35dab9322671e8089b8a20ebf3f734f9d7f31c03522d13fa66abe1f9ee app/engines/reference_data.py effd142099314817ad67858a3944961b18e54e4e2e6938a8428ff132248206d8 app/engines/scoring/confidence.py 5b07dcbb96973a6a5635051417b1493f89686d0fa7c3479605da1460fb04ce17 app/engines/scoring/data_quality.py 7e709f60542380e36d98305f6966aac8d6f442010051cad4d7da8e670b8aa016 app/engines/scoring/__init__.py ba8b72dba834dd9c031a09ab0541767c18f22af617e463252e704fdfbd8933fb app/engines/scoring/overall.py 161d0b5932cded71374fd5b2b8cca915fbb90950b1449a7ab5cbf2a2e98f3e9f app/engines/scoring/peer_groups.py aa0ffb0332d97033c68afc3a22519b31531d09938490775dfc11a203b8c5ea97 app/engines/scoring/percentile.py 91e79347aeb25b659fdd1c6da31e6c4f9aa7bbff820ca9b5e8c9807f283fe1bb app/engines/scoring/persistence.py d9b796ada7f07420196d956436f6cbe3c4d5a1f81de1929abf5f93d36de5576e app/engines/scoring/subscores.py 0000912a9fab537381d8355a38cee70d9144e39fc31a65d53db7747b1685fe4b app/engines/scoring/wiring.py fc4dc7aa5305abe6f4bedfeea315aef1aafcbf58eb7835ad21395cb71afc87ba app/engines/screening/executor.py 33e372216a2aa0e3560d8de86110d6c703ae19893d5e9dc18389b1d7cb1e52d4 app/engines/screening/presets.py 2c43c53efc6b8fe54b216e2bb074219091b906639ab4fdbf98f818653a1dffdb app/engines/ttm.py 753c165eed13653e56772ae057e382473f39ec9301068c89d0e309b5506dcef1 app/engines/types.py e0bac4c14795494a6cd94708102c2f3f174c0f7a34e865f67e0388f5693d4616 app/engines/valuation/blend.py 703fcd4df12b80ae9e311139ad181ddb96e3abf5d744c12339f5a201ee881b55 app/engines/valuation/dcf.py 1ea5feb78ab0db5be5207d30bfb8d94ad0794f526d304ea8ac93149a8e08ec1d app/engines/valuation/expected_return.py d87cd91906b80a96db9afaf1e3bf3419f4808f7ee9d40476ba72f3403943f529 app/engines/valuation/__init__.py d9e9e8150861be50b10ab1d6fd8bb22c19cff4b3adc89fe22aa95069f34125df app/engines/valuation/margin_of_safety.py b5af4465bc61faaf9174ed5c36ad5c70c22d6226f136a4ef7a317d7b863d2a5a app/engines/valuation/multiples.py 033f0082d98e523044e09196c7067fe4d729099e68e2f66dc045dffdf1aac959 app/engines/valuation/wacc.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 app/__init__.py 3f37ce9d0213a060c55e7404f7d11b29485196f28aba98eb8436697e6bca94c3 app/main.py 9151edee0a3b40dbe6242d2b8dc551d1ba23e4fcbd34a726ea0f8ca97c9bb840 app/models/base.py 14d5836dd9c63e44e3b49ed1249bdc643cdb9e154678efb5772f7ce4677d5e8e app/models/companies.py 0d01891855c23b4079eaecdc1b387368085adf25e7a2cd920e75f8d795d3fc98 app/models/derived.py bc24958a9e68a43e4fd6af4ca7695149523aef931cd4ecee1264f47a3d00a977 app/models/financials.py 1bc468b9c94aa8a313411b2d44cf47cce58d884956ac54c32ffdad751567d78b app/models/governance.py edcc047f90aedae1db2381c297101b7f51e37a2828c775e1e2d93068f005ae1c app/models/__init__.py 67a25116b0aa72751559964f2180618a7284fc30174f3c25678411bfd901a01a app/models/market.py bd19e36ba42fe63e6d30cffad91e9c20beadb1064670f4e91b37e3a7833d0226 app/models/reference.py 16afbe11baf8ae64f0b430a035d93bca66ddc91e84d12f62195d975b828f38d3 app/models/user_facing.py 2e8e3dc1841da440341c33d2d8c0c8abdb86b9d03835f396e026b2957e892869 app/schemas/auth.py 68188c1912ee90b3deb6a2fafacf4bd2aa02de5326fffdf6a2d50994f487d8ae app/schemas/common.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 app/schemas/__init__.py 5524fd8019ab51a560bcc7fb02a0e857c236853cff5b96285293a56fab0ac09a app/workers/backtest.py 42e33b65dca0e5cf7fcb4e1fde1e67c1077dbf27b0401ce62629a023ac25e3c0 app/workers/celery_app.py fc05c617c4f2ee81cac42da7f61d0d101345cb100eea32cfb84621e6bb552110 app/workers/discovery.py 2826d77a306b6decdbd81cd2ad7fa8458df0d3c213b185783d48a81fc5d2ac9e app/workers/ingest.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 app/workers/__init__.py 4b370236915042fc898d23877e5b360e0aec71517125ff5188867f3aefc3839f app/workers/peer_groups.py ef0243dd8863f9205431816e37ff4024e26a726f20038398f28c282ec8862ca5 app/workers/recompute.py 7b527f86fd6e9e1441d4677294b2b9d4d3e669e6ebae697535b4c051c106c467 app/workers/token_cleanup.py bc1cd7c92ad02b9cdd6c66e52b485f7ed3a7aefeca81a8ff2a118369d27706b7 tests/fixtures/company_profiles.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 tests/fixtures/__init__.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 tests/__init__.py 80afc6483c5099b96ae064e01f787517d686d0c3c803e83ee783ec440381ec8a tests/test_accounting_quality.py 2a6da4a3edc1c00cddfc92e78d3d3579de8896e43ba169de03f9d1bdd37bbc3c tests/test_alerts.py 9311cb47690d884882964308173ebb18659d03ef95e2aa2399a9e4c15a11bc2a tests/test_api_aggregation.py a454dc3403d1d18b5a55daf1c925c2d4d973ea96d5ecba857dcd87fa46ba5c14 tests/test_api_contract.py f0a76a6f800b0b0dc539260a1d18aaf8fb99c08adc7829a72cda790e95f39145 tests/test_backtesting.py 5932499f2b66611ea96d5309dc72f33849840939613ac59ee65ef996948e5d56 tests/test_config.py ae14b105d69589928934a5f0ef9231fceea39b1db47cd4b8dc7fca67b5ea1c58 tests/test_cross_metric.py ece7c021f08a823980562eb415834410ec08417091dccb878bc22599179f5ee0 tests/test_currency.py 621f3533d87da87518a289759a0eea4660e5e4b47f3cfb4943739497553b5a28 tests/test_demo_adapter.py bd60de9b6d97e1c7f2548b49b4451c0a24b70d7cbf181745fd2eeec1294c9259 tests/test_discovery.py 599ae863a77a02342a3311bc5630a926dfe827edf542ba2fb96d736e53011120 tests/test_emerging.py 1cdb1e610f80f02a6a3fb1b20b8f5f374dd12e06b0eb529a49de9b43767bf2ad tests/test_eodhd_adapter.py 3e59f341b34d5f85a3fee7e1513431e78d6a516b7cec1e0ae19240d48eac339d tests/test_estimates.py f9efdc557649faa9db20a181032a0242f6485a7f795ee35dc86c00d1016083be tests/test_fixture_validation.py ae99bff20a2aaf9a6bb35d7ee34a0e76e0436936ffbb17ab59f18a201f1462e3 tests/test_fmp_adapter.py b4acd34ee4cb87f358350caeb3e84560810b2d5c8c6c2d459d2ebe22ecf3c1cf tests/test_identity.py 822dc3dab01ceff2ba4bbb094fe38a90a950fe2df3aaad213ec6526a1e3abf07 tests/test_macro_context.py 6cac0a80700291dbd9095533b48a1990a78cc62bf4b1968cdc1fd26975b5c27f tests/test_metrics_known_cases.py 9c77b9d956f6fa85e25f83495407ae3264909620060ab57f33198a00725b7aee tests/test_model_version.py 59e9ce7f118a49dac2d73bce46c67a10a6f31da4e3750e95eae0f415f861073a tests/test_multibagger.py ccb68da04fa172413cdb7817236b172e391514fa54e31a3c885a52c892a91441 tests/test_peer_groups.py 6357de7c7f45c176bb268cdc1b19cc6ea4eaa5dc7817ed373179a0c45ef1e08d tests/test_pillar_wiring.py 546fefe3a297f249129954ec816cee1fae3472c599cf7b8cfdaa72d861ed00f7 tests/test_point_in_time.py 489911e9376fdf06b9a5d96517f5a5b79fac810e762acbdcbe4514da877b99dc tests/test_provider_resilience.py bb2c7971843e7095a4d57e0185f29d7b1297e92747b953ce22b805093d5d7904 tests/test_recommendation.py d4668a578a0aa99448e4fe03f8c4332bbeee6cefa86c44a0ae9b3811f3887661 tests/test_replay.py 6f68a9b4f3b7a4263809dc3619897b08fee7d80da8cffa6f9b83c536a36d436f tests/test_scoring.py 633ebd0e36e57db4f08e4749b0c5cd326defe7bb7dbc861ff53246d3bb5f883e tests/test_seed_reference_data.py a67d3b3109ad6d591968d58916dc252d09d9cfaccce4a58080cf195e92a791d4 tests/test_ttm.py 511d8d96ac3911fa49c80fffaaea8da9fa965e80e7ebdc094fc107a259d16b22 tests/test_validation.py afae257a0416629972f2550a03e24f225099ae2b576a58fc5c63e43da59fd0d7 tests/test_valuation.py