btgsolutions-dataservices-python-client 4.4.2__tar.gz → 4.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. {btgsolutions_dataservices_python_client-4.4.2/btgsolutions_dataservices_python_client.egg-info → btgsolutions_dataservices_python_client-4.5.0}/PKG-INFO +1 -1
  2. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/__init__.py +1 -1
  3. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/alternative_data_catalog.py +133 -21
  4. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/alternative_data_companies.py +110 -11
  5. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/alternative_data_funds.py +18 -5
  6. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/alternative_data_metadata.py +8 -2
  7. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/alternative_data_ownership.py +51 -0
  8. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0/btgsolutions_dataservices_python_client.egg-info}/PKG-INFO +1 -1
  9. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/LICENSE +0 -0
  10. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/MANIFEST.in +0 -0
  11. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/README.md +0 -0
  12. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/config.py +0 -0
  13. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/exceptions.py +0 -0
  14. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/__init__.py +0 -0
  15. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/alternative_data_macro_markets.py +0 -0
  16. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/alternative_data_people.py +0 -0
  17. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/authenticator.py +0 -0
  18. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/book_scope.py +0 -0
  19. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/broker_analytics.py +0 -0
  20. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/broker_reference.py +0 -0
  21. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/bulk_data.py +0 -0
  22. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/company_data.py +0 -0
  23. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/corporate_events.py +0 -0
  24. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/dataservices_catalog.py +0 -0
  25. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/hfn.py +0 -0
  26. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/historical_candles.py +0 -0
  27. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/historical_candles_crypto.py +0 -0
  28. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/intraday_candles.py +0 -0
  29. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/intraday_tick_data.py +0 -0
  30. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/public_sources.py +0 -0
  31. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/quotes.py +0 -0
  32. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/reference_data.py +0 -0
  33. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/stock_loan.py +0 -0
  34. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/ticker_last_event.py +0 -0
  35. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/rest/ticker_last_event_polling.py +0 -0
  36. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/websocket/__init__.py +0 -0
  37. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/websocket/broker_analytics.py +0 -0
  38. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/websocket/hfn_websocket_client.py +0 -0
  39. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/websocket/market_data_feed.py +0 -0
  40. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/websocket/market_data_websocket_client.py +0 -0
  41. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices/websocket/websocket_default_functions.py +0 -0
  42. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices_python_client.egg-info/SOURCES.txt +0 -0
  43. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices_python_client.egg-info/dependency_links.txt +0 -0
  44. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices_python_client.egg-info/requires.txt +0 -0
  45. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/btgsolutions_dataservices_python_client.egg-info/top_level.txt +0 -0
  46. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/pyproject.toml +0 -0
  47. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/requirements.txt +0 -0
  48. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/setup.cfg +0 -0
  49. {btgsolutions_dataservices_python_client-4.4.2 → btgsolutions_dataservices_python_client-4.5.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: btgsolutions_dataservices_python_client
3
- Version: 4.4.2
3
+ Version: 4.5.0
4
4
  Summary: Python package containing several classes and data for extracting and manipulating market and trading data.
5
5
  Home-page: https://github.com/BTG-Pactual-Solutions/btgsolutions-dataservices-python-client
6
6
  Author: BTG Solutions Data Services powered by BTG Pactual Solutions
@@ -1,4 +1,4 @@
1
- __version__ = "4.4.2"
1
+ __version__ = "4.5.0"
2
2
 
3
3
  from .websocket import *
4
4
  from .rest import *
@@ -12,9 +12,12 @@ PUBLIC_SOURCES_CONVENTIONS: dict[str, str] = {
12
12
  ),
13
13
  "fund_id": (
14
14
  "Fund identifier accepted by fund endpoints. It can be a fund CNPJ; "
15
- "holdings, exposures, history and look-through also accept supported "
16
- "Brazilian ETF tickers such as BOVA11. ETFs and funds are not resolved "
17
- "through the listed-company directory."
15
+ "Brazilian ETF-aware endpoints also accept supported BR ETF tickers "
16
+ "such as BOVA11. Holdings can also accept covered US ETF/fund "
17
+ "identifiers such as SPY when issuer-official or N-PORT coverage is "
18
+ "loaded, but exposures and look-through are limited to Brazilian fund "
19
+ "CNPJs or BR ETF tickers. ETFs and funds are not resolved through the "
20
+ "listed-company directory."
18
21
  ),
19
22
  "shareholder_id": (
20
23
  "Shareholder identifier used for reverse ownership lookup, usually a "
@@ -82,7 +85,10 @@ PUBLIC_SOURCES_DATA_GAPS: dict[str, str] = {
82
85
  "issuer exposure can be based on ticker-like issuer labels and country "
83
86
  "exposure can be empty when the source does not classify country. Use "
84
87
  "holdings for constituent-level economic exposure and exposures for "
85
- "aggregate context."
88
+ "aggregate context. The exposures and look-through endpoints accept "
89
+ "Brazilian fund CNPJs and supported BR ETF tickers; US ETF tickers can "
90
+ "be available through holdings while still being rejected by exposures "
91
+ "or look-through."
86
92
  ),
87
93
  "get_fund_lookthrough": (
88
94
  "Look-through is useful when a fund holds other funds that can be "
@@ -143,10 +149,13 @@ PUBLIC_SOURCES_DATA_GAPS: dict[str, str] = {
143
149
  "liquidity endpoints separately when contextualizing the margin data."
144
150
  ),
145
151
  "get_beneficial_ownership": (
146
- "Coverage is UK/US oriented: UK Companies House PSC and US SEC proxy "
147
- "beneficial-owner data. Brazilian listed companies are not available in "
148
- "this endpoint and can return 404; use ownership-current, control-group "
149
- "and free-float endpoints for Brazilian ownership context."
152
+ "Coverage is primarily US SEC proxy beneficial-owner data, with "
153
+ "Companies House PSC rows only when upstream UK coverage is loaded for "
154
+ "the requested identifier. Brazilian listed companies are not available "
155
+ "in this endpoint and can return 404; use ownership-current, "
156
+ "control-group and free-float endpoints for Brazilian ownership context. "
157
+ "For US companies, ticker, CIK or ISIN can work directly even when the "
158
+ "company-directory search endpoint does not resolve that CIK or ISIN."
150
159
  ),
151
160
  "get_asset_institutional_holders": (
152
161
  "Institutional-holder coverage comes from the precomputed asset-holder "
@@ -157,7 +166,10 @@ PUBLIC_SOURCES_DATA_GAPS: dict[str, str] = {
157
166
  "that ticker-to-ISIN fallback was used. This endpoint still does not run "
158
167
  "the live fund-portfolio/ETF holding lookup used by "
159
168
  "get_asset_fund_holders; use get_asset_fund_holders when this endpoint "
160
- "is empty or when ETF/fund-holder coverage is needed."
169
+ "is empty or when ETF/fund-holder coverage is needed. Do not describe "
170
+ "these rows as SEC 13F unless the returned source fields explicitly "
171
+ "identify a 13F source; fund_asset_ownership rows are fund/ETF holder "
172
+ "snapshots, not issuer top-shareholder or 13F summaries."
161
173
  ),
162
174
  "get_disclosure_documents_repurchase": (
163
175
  "Share-repurchase disclosure coverage can be thin for many companies. "
@@ -342,13 +354,16 @@ PUBLIC_SOURCES_ENDPOINTS: dict[str, dict[str, Any]] = {
342
354
  "method": "GET",
343
355
  "client": "AlternativeDataMetadata",
344
356
  "description": (
345
- "Search listed-company metadata by name, ticker, CNPJ, CVM code, "
346
- "CIK or ISIN. Use this to resolve a company identifier before "
347
- "governance, ownership, sector, financial-statement or disclosure "
348
- "endpoints."
357
+ "Search listed-company metadata by name, ticker, CNPJ or CVM code; "
358
+ "US rows can include CIK and ISIN fields in the response. Use this "
359
+ "to resolve a company identifier before governance, ownership, "
360
+ "sector, financial-statement or disclosure endpoints. If a CIK, "
361
+ "ISIN or LEI search returns no directory match, try the relevant "
362
+ "company endpoint directly when its parameter documentation accepts "
363
+ "that identifier."
349
364
  ),
350
365
  "parameters": {
351
- "query": "Free-text query over company name, ticker, CNPJ, CVM code, CIK or ISIN.",
366
+ "query": "Free-text query over company name, ticker, CNPJ or CVM code; returned US rows can include CIK and ISIN fields.",
352
367
  "jurisdiction": "Optional jurisdiction filter such as 'BR' or 'US'.",
353
368
  "limit": "Maximum number of results.",
354
369
  "offset": "Pagination offset.",
@@ -387,7 +402,10 @@ PUBLIC_SOURCES_ENDPOINTS: dict[str, dict[str, Any]] = {
387
402
  "List ETFs available in the public-sources ETF registry. Use this "
388
403
  "for ETF discovery because ETFs are not returned by listed-company "
389
404
  "search endpoints. Use include_metrics=False for lightweight "
390
- "autocomplete/search responses."
405
+ "autocomplete/search responses. Returned rows can combine fund "
406
+ "identity, issuer, index metadata and latest NAV/AUM/holder metrics "
407
+ "from sources such as CVM/FNET, B3 index composition or manager/"
408
+ "issuer official holdings, depending on coverage."
391
409
  ),
392
410
  "parameters": {
393
411
  "query": "Free-text filter over ticker, fund name, CNPJ or issuer.",
@@ -733,13 +751,15 @@ PUBLIC_SOURCES_ENDPOINTS: dict[str, dict[str, Any]] = {
733
751
  "method": "GET",
734
752
  "client": "AlternativeDataCompanies",
735
753
  "description": (
736
- "Get beneficial-owner records from UK Companies House PSC or US SEC "
737
- "proxy DEF14A data. Brazilian companies are not available here."
754
+ "Get beneficial-owner records from US SEC proxy DEF14A data and, "
755
+ "when loaded upstream, UK Companies House PSC data. Brazilian "
756
+ "companies are not available here."
738
757
  ),
739
758
  "parameters": {
740
759
  "company_id": (
741
- "UK company number, SEC ticker/CIK, ISIN, LEI or company name. "
742
- "Use values such as AAPL or 0000320193 for US coverage."
760
+ "SEC ticker/CIK/ISIN, or a UK company number/name when "
761
+ "Companies House PSC coverage is loaded. Use values such as "
762
+ "AAPL, 0000320193 or US0378331005 for US coverage."
743
763
  ),
744
764
  "holder_type": (
745
765
  "Optional holder classification such as individual, institution, "
@@ -754,6 +774,62 @@ PUBLIC_SOURCES_ENDPOINTS: dict[str, dict[str, Any]] = {
754
774
  ],
755
775
  "caveats": [PUBLIC_SOURCES_DATA_GAPS["get_beneficial_ownership"]],
756
776
  },
777
+ "AlternativeDataCompanies.get_sec_filings": {
778
+ "category": "companies",
779
+ "path": "companies/sec-filings",
780
+ "method": "GET",
781
+ "client": "AlternativeDataCompanies",
782
+ "description": (
783
+ "Get SEC EDGAR filing metadata for a US company. Use form_type='8-K' "
784
+ "with item='5.02' for director/officer change events, form_type='DEF 14A' "
785
+ "for proxy/governance context, and SC 13D/SC 13G forms for beneficial "
786
+ "ownership filing metadata. This endpoint returns filing metadata and "
787
+ "source URLs, not full filing-text parsing."
788
+ ),
789
+ "parameters": {
790
+ "company_id": "SEC ticker, CIK, ISIN or company name.",
791
+ "form_type": "Optional SEC form type filter; accepts comma-separated values such as '8-K,DEF 14A'.",
792
+ "item": "Optional 8-K item filter such as '5.02'.",
793
+ "start_date": "Start filing date in YYYY-MM-DD.",
794
+ "end_date": "End filing date in YYYY-MM-DD.",
795
+ "limit": "Maximum number of filings.",
796
+ "offset": "Pagination offset.",
797
+ },
798
+ "relationships": [
799
+ "company_resolution", "document_market_event_bridge",
800
+ "ownership_fallback",
801
+ ],
802
+ "caveats": [
803
+ "10-K metadata is not currently loaded when this endpoint returns zero rows for form_type='10-K'.",
804
+ "8-K item metadata can exist without a parsed event narrative; inspect primary_document before summarizing.",
805
+ ],
806
+ },
807
+ "AlternativeDataCompanies.get_sec_schedule_13d_13g": {
808
+ "category": "companies",
809
+ "path": "companies/sec-schedule-13d-13g",
810
+ "method": "GET",
811
+ "client": "AlternativeDataCompanies",
812
+ "description": (
813
+ "Get parsed SEC Schedule 13D/13G beneficial-ownership rows for a US "
814
+ "company, including reporting owner, beneficially owned shares and "
815
+ "percent of class when available. Use get_sec_filings for filing "
816
+ "metadata/source URLs and this endpoint for holder/share fields."
817
+ ),
818
+ "parameters": {
819
+ "company_id": "SEC ticker, CIK, ISIN or company name.",
820
+ "start_date": "Start filing date in YYYY-MM-DD.",
821
+ "end_date": "End filing date in YYYY-MM-DD.",
822
+ "limit": "Maximum number of rows.",
823
+ "offset": "Pagination offset.",
824
+ },
825
+ "relationships": [
826
+ "company_resolution", "ownership_fallback",
827
+ "ownership_liquidity_bridge", "document_market_event_bridge",
828
+ ],
829
+ "caveats": [
830
+ "Schedule 13D/G rows are US SEC beneficial-ownership filings and should not be treated as Brazilian ownership snapshots.",
831
+ ],
832
+ },
757
833
  "AlternativeDataCompanies.get_corporate_registry": {
758
834
  "category": "companies",
759
835
  "path": "companies/corporate-registry",
@@ -781,8 +857,9 @@ PUBLIC_SOURCES_ENDPOINTS: dict[str, dict[str, Any]] = {
781
857
  "method": "GET",
782
858
  "client": "AlternativeDataCompanies",
783
859
  "description": (
784
- "Get US SEC insider-trading transactions for a US company ticker or "
785
- "CIK. This endpoint is not for Brazilian companies."
860
+ "Get US SEC insider-trading transactions from Forms 3/4/5 for a US "
861
+ "company ticker or CIK. In practice, populated rows are commonly "
862
+ "source='SEC/Form4'. This endpoint is not for Brazilian companies."
786
863
  ),
787
864
  "parameters": {
788
865
  "company_id": "US SEC ticker or CIK.",
@@ -983,6 +1060,10 @@ PUBLIC_SOURCES_ENDPOINTS: dict[str, dict[str, Any]] = {
983
1060
  "Get a fund or ETF portfolio holdings/positions for a reference date. "
984
1061
  "Use this for constituent assets and weights or values, not NAV history. "
985
1062
  "Use summary=True and include_raw=False for a compact payload. "
1063
+ "Rows expose source/snapshot_type fields such as B3 index composition, "
1064
+ "manager official holdings, issuer-official holdings or SEC N-PORT "
1065
+ "depending on the covered fund. US official ETF holdings can identify "
1066
+ "assets by CUSIP when ticker/ISIN enrichment is unavailable. "
986
1067
  "For CVM/CDA rows without same-day daily NAV, position_weight may be "
987
1068
  "computed from the latest prior daily report within seven days; "
988
1069
  "company_nav_reference_date and company_nav_source identify that "
@@ -1218,6 +1299,34 @@ PUBLIC_SOURCES_ENDPOINTS: dict[str, dict[str, Any]] = {
1218
1299
  },
1219
1300
  "relationships": ["document_summary", "document_market_event_bridge"],
1220
1301
  },
1302
+ "AlternativeDataOwnership.get_sec_13f_holdings": {
1303
+ "category": "ownership",
1304
+ "path": "sec/13f-holdings",
1305
+ "method": "GET",
1306
+ "client": "AlternativeDataOwnership",
1307
+ "description": (
1308
+ "Get SEC 13F-HR institutional investment-manager holding rows by "
1309
+ "manager_id and/or asset_id. manager_id accepts manager CIK, manager "
1310
+ "name or a SEC registrant ticker when the manager is itself a SEC "
1311
+ "company. asset_id accepts issuer ticker, CUSIP, ISIN or issuer name."
1312
+ ),
1313
+ "parameters": {
1314
+ "manager_id": "Optional SEC manager CIK, manager name or SEC registrant ticker.",
1315
+ "asset_id": "Optional issuer ticker, CUSIP, ISIN or issuer name.",
1316
+ "start_date": "Start filing date in YYYY-MM-DD.",
1317
+ "end_date": "End filing date in YYYY-MM-DD.",
1318
+ "limit": "Maximum number of rows.",
1319
+ "offset": "Pagination offset.",
1320
+ },
1321
+ "relationships": [
1322
+ "company_resolution", "ownership_fallback",
1323
+ "ownership_liquidity_bridge", "document_market_event_bridge",
1324
+ ],
1325
+ "caveats": [
1326
+ "13F rows are manager filing disclosures, not issuer top-shareholder tables.",
1327
+ "13F does not cover all holders, short positions or non-reporting investors.",
1328
+ ],
1329
+ },
1221
1330
  "AlternativeDataOwnership.get_ownership_control_group": {
1222
1331
  "category": "ownership",
1223
1332
  "path": "companies/ownership-control-group",
@@ -1377,6 +1486,8 @@ PUBLIC_SOURCES_TOOL_ENDPOINTS: dict[str, str] = {
1377
1486
  "get_governance_compensation": "AlternativeDataCompanies.get_governance_compensation",
1378
1487
  "get_related_party": "AlternativeDataCompanies.get_governance_related_party",
1379
1488
  "get_beneficial_ownership": "AlternativeDataCompanies.get_governance_beneficial_ownership",
1489
+ "get_sec_filings": "AlternativeDataCompanies.get_sec_filings",
1490
+ "get_sec_schedule_13d_13g": "AlternativeDataCompanies.get_sec_schedule_13d_13g",
1380
1491
  "get_corporate_registry": "AlternativeDataCompanies.get_corporate_registry",
1381
1492
  "get_insider_trades": "AlternativeDataCompanies.get_insider_trades",
1382
1493
  "get_board_changes": "AlternativeDataCompanies.get_board_changes",
@@ -1400,6 +1511,7 @@ PUBLIC_SOURCES_TOOL_ENDPOINTS: dict[str, str] = {
1400
1511
  "get_ownership_change_events": "AlternativeDataOwnership.get_ownership_change_events",
1401
1512
  "get_ownership_official_notices": "AlternativeDataOwnership.get_ownership_official_notices",
1402
1513
  "get_notice_summary": "AlternativeDataOwnership.get_notice_summary",
1514
+ "get_sec_13f_holdings": "AlternativeDataOwnership.get_sec_13f_holdings",
1403
1515
  "get_control_group": "AlternativeDataOwnership.get_ownership_control_group",
1404
1516
  "get_free_float": "AlternativeDataOwnership.get_ownership_free_float",
1405
1517
  "get_shareholder_holdings": "AlternativeDataOwnership.get_shareholder_holdings",
@@ -75,7 +75,10 @@ class AlternativeDataCompanies:
75
75
  Parameters
76
76
  ----------------
77
77
  query: str
78
- Free-text search over company name, ticker, CNPJ, or CIK.
78
+ Free-text search over company name, ticker, CNPJ, or CVM code.
79
+ US rows can include CIK and ISIN in the response, but directory
80
+ search by CIK/ISIN/LEI is not a guaranteed resolver; call the
81
+ target endpoint directly when it documents those identifiers.
79
82
  Field is not required. Example: 'PETROBRAS'.
80
83
  jurisdiction: str
81
84
  Filter by jurisdiction: 'BR' or 'US'.
@@ -105,7 +108,9 @@ class AlternativeDataCompanies:
105
108
  offset: int = 0,
106
109
  ) -> dict:
107
110
  """
108
- Board and executive composition for a company (BR, US, or UK).
111
+ Board and executive composition for a company. Brazilian and US SEC
112
+ coverage are the primary loaded sources; UK Companies House coverage is
113
+ conditional on upstream UK data for the identifier.
109
114
  Use get_board_changes() for appointment/departure events and
110
115
  get_governance_history() for historical snapshot series.
111
116
 
@@ -119,8 +124,10 @@ class AlternativeDataCompanies:
119
124
  Parameters
120
125
  ----------------
121
126
  company_id: str
122
- Company identifier. Accepts CNPJ, CVM code, B3 ticker, ISIN, LEI,
123
- UK company number, SEC ticker/CIK, or company name.
127
+ Company identifier. Accepts CNPJ, CVM code, B3 ticker, SEC
128
+ ticker/CIK and, where endpoint resolution supports it, ISIN or
129
+ company name. LEI and UK company-number resolution depend on
130
+ upstream coverage and should be verified with the returned data.
124
131
  Field is required. Example: 'PETR4'.
125
132
  reference_date: str
126
133
  Reference date in YYYY-MM-DD format. Defaults to the most recent filing.
@@ -352,18 +359,18 @@ class AlternativeDataCompanies:
352
359
  offset: int = 0,
353
360
  ) -> dict:
354
361
  """
355
- Beneficial ownership records from UK Companies House PSC or US SEC
356
- proxy DEF14A data. Brazilian companies are not available in this
357
- endpoint and can return 404 / "Company not found". For Brazilian
358
- listed-company ownership context, prefer
362
+ Beneficial ownership records from US SEC proxy DEF14A data and, when
363
+ loaded upstream, UK Companies House PSC data. Brazilian companies are
364
+ not available in this endpoint and can return 404 / "Company not
365
+ found". For Brazilian listed-company ownership context, prefer
359
366
  AlternativeDataOwnership.get_ownership_current(),
360
367
  get_ownership_control_group() or get_ownership_free_float().
361
368
 
362
369
  Parameters
363
370
  ----------------
364
371
  company_id: str
365
- UK company number, SEC ticker/CIK, ISIN, LEI or company name.
366
- Field is required. Example: 'AAPL'.
372
+ SEC ticker/CIK/ISIN, or a UK company number/name when Companies
373
+ House PSC coverage is loaded. Field is required. Example: 'AAPL'.
367
374
  holder_type: str
368
375
  Holder classification filter such as individual, institution,
369
376
  director, officer or ten_percent_owner.
@@ -382,6 +389,95 @@ class AlternativeDataCompanies:
382
389
  "offset": offset,
383
390
  })
384
391
 
392
+ def get_sec_filings(
393
+ self,
394
+ company_id: str,
395
+ form_type: Optional[Union[str, Sequence[str]]] = None,
396
+ item: Optional[str] = None,
397
+ start_date: Optional[str] = None,
398
+ end_date: Optional[str] = None,
399
+ limit: int = 100,
400
+ offset: int = 0,
401
+ ) -> dict:
402
+ """
403
+ SEC EDGAR filing metadata for a US company. Use this when the filing
404
+ itself is the analytical object, for example 8-K Item 5.02 director or
405
+ executive changes, DEF 14A proxy statements, or SC 13D/13G ownership
406
+ filings. This endpoint returns filing metadata and source document
407
+ URLs; it does not parse full filing text.
408
+
409
+ Parameters
410
+ ----------------
411
+ company_id: str
412
+ SEC ticker, CIK, ISIN or company name.
413
+ Field is required. Example: 'AAPL'.
414
+ form_type: str or sequence
415
+ Optional SEC form type filter, comma-separated or a sequence.
416
+ Examples: '8-K', 'DEF 14A', 'SC 13D,SC 13G'.
417
+ item: str
418
+ Optional 8-K item filter. Example: '5.02'.
419
+ start_date: str
420
+ Start filing date in YYYY-MM-DD format.
421
+ Field is not required.
422
+ end_date: str
423
+ End filing date in YYYY-MM-DD format.
424
+ Field is not required.
425
+ limit: int
426
+ Maximum number of filings to return.
427
+ Field is not required. Default: 100.
428
+ offset: int
429
+ Number of results to skip for pagination.
430
+ Field is not required. Default: 0.
431
+ """
432
+ return self._get("companies/sec-filings", {
433
+ "company_id": company_id,
434
+ "form_type": self._csv_param(form_type),
435
+ "item": item,
436
+ "start_date": start_date,
437
+ "end_date": end_date,
438
+ "limit": limit,
439
+ "offset": offset,
440
+ })
441
+
442
+ def get_sec_schedule_13d_13g(
443
+ self,
444
+ company_id: str,
445
+ start_date: Optional[str] = None,
446
+ end_date: Optional[str] = None,
447
+ limit: int = 100,
448
+ offset: int = 0,
449
+ ) -> dict:
450
+ """
451
+ Parsed SEC Schedule 13D/13G beneficial-ownership filing rows for a US
452
+ company. Use get_sec_filings() for the filing metadata and this endpoint
453
+ for holder, share-count and percent-of-class fields.
454
+
455
+ Parameters
456
+ ----------------
457
+ company_id: str
458
+ SEC ticker, CIK, ISIN or company name.
459
+ Field is required. Example: 'AAPL'.
460
+ start_date: str
461
+ Start filing date in YYYY-MM-DD format.
462
+ Field is not required.
463
+ end_date: str
464
+ End filing date in YYYY-MM-DD format.
465
+ Field is not required.
466
+ limit: int
467
+ Maximum number of rows to return.
468
+ Field is not required. Default: 100.
469
+ offset: int
470
+ Number of results to skip for pagination.
471
+ Field is not required. Default: 0.
472
+ """
473
+ return self._get("companies/sec-schedule-13d-13g", {
474
+ "company_id": company_id,
475
+ "start_date": start_date,
476
+ "end_date": end_date,
477
+ "limit": limit,
478
+ "offset": offset,
479
+ })
480
+
385
481
  def get_corporate_registry(
386
482
  self,
387
483
  company_id: str,
@@ -439,7 +535,10 @@ class AlternativeDataCompanies:
439
535
  limit: int = 100,
440
536
  ) -> dict:
441
537
  """
442
- Insider trade transactions from SEC Forms 3/4/5 (US only).
538
+ Insider trade transactions from SEC Forms 3/4/5 (US only). Populated
539
+ rows are commonly Form 4 rows and carry source fields such as
540
+ ``SEC/Form4``; inspect source/accession_number before stating which
541
+ SEC form supplied a transaction.
443
542
  Do not use this endpoint for Brazilian companies; use get_disclosures()
444
543
  with document_type='insiders' for Brazilian insider-trading disclosures.
445
544
 
@@ -66,7 +66,10 @@ class AlternativeDataFunds:
66
66
  """
67
67
  List ETFs available in the public-sources ETF registry.
68
68
  Use this for ETF discovery because ETFs are not returned by listed-
69
- company search endpoints.
69
+ company search endpoints. Rows can combine fund identity, issuer,
70
+ index metadata and latest NAV/AUM/holder metrics from sources such as
71
+ CVM/FNET, B3 index composition or manager/issuer official holdings,
72
+ depending on coverage.
70
73
 
71
74
  Parameters
72
75
  ----------------
@@ -130,7 +133,11 @@ class AlternativeDataFunds:
130
133
  asset ticker. For CVM/CDA rows without same-day daily NAV, the API may
131
134
  compute position_weight from the latest prior daily report within seven
132
135
  days; company_nav_reference_date and company_nav_source identify that
133
- NAV source when it differs from the holdings reference date.
136
+ NAV source when it differs from the holdings reference date. Rows expose
137
+ source/snapshot_type fields such as B3 index composition, manager
138
+ official holdings, issuer-official holdings or SEC N-PORT depending on
139
+ coverage. US official ETF holdings can identify assets by CUSIP when
140
+ ticker/ISIN enrichment is unavailable.
134
141
 
135
142
  Parameters
136
143
  ----------------
@@ -180,7 +187,10 @@ class AlternativeDataFunds:
180
187
  ) -> dict:
181
188
  """
182
189
  Portfolio exposures for a Brazilian CVM fund or ETF (asset class,
183
- issuer, sector, indexer, maturity, country).
190
+ issuer, sector, indexer, maturity, country). This endpoint accepts
191
+ Brazilian fund CNPJs and supported BR ETF tickers. US ETF tickers can
192
+ be available in get_holdings() while still being outside exposures
193
+ coverage.
184
194
  Use sector exposure with company sector endpoints when comparing fund
185
195
  exposure with B3 company peer groups.
186
196
  Exposure dimensions are source-dependent: for Brazilian ETFs, issuer
@@ -250,8 +260,11 @@ class AlternativeDataFunds:
250
260
  limit: int = 100,
251
261
  ) -> dict:
252
262
  """
253
- Look-through resolution for a fund or ETF (resolves nested fund
254
- positions to underlying assets when available).
263
+ Look-through resolution for a Brazilian fund or ETF (resolves nested
264
+ fund positions to underlying assets when available). This endpoint
265
+ accepts Brazilian fund CNPJs and supported BR ETF tickers; US ETF
266
+ tickers can be available in get_holdings() while still being outside
267
+ look-through coverage.
255
268
  Use this after holdings when nested fund positions need to be expanded
256
269
  into underlying assets.
257
270
  For direct-equity ETFs, look-through can return opaque asset_key values
@@ -125,7 +125,10 @@ class AlternativeDataMetadata:
125
125
  Parameters
126
126
  ----------------
127
127
  query: str
128
- Free-text search over company name, ticker, CNPJ, or CIK.
128
+ Free-text search over company name, ticker, CNPJ, or CVM code.
129
+ US rows can include CIK and ISIN in the response, but directory
130
+ search by CIK/ISIN/LEI is not a guaranteed resolver; call the
131
+ target endpoint directly when it documents those identifiers.
129
132
  Field is not required. Example: 'PETROBRAS'.
130
133
  jurisdiction: str
131
134
  Filter by jurisdiction: 'BR' or 'US'.
@@ -157,7 +160,10 @@ class AlternativeDataMetadata:
157
160
  Parameters
158
161
  ----------------
159
162
  query: str
160
- Free-text search over company name, ticker, CNPJ, or CIK.
163
+ Free-text search over company name, ticker, CNPJ, or CVM code.
164
+ US rows can include CIK and ISIN in the response, but directory
165
+ search by CIK/ISIN/LEI is not a guaranteed resolver; call the
166
+ target endpoint directly when it documents those identifiers.
161
167
  Field is not required. Example: 'PETROBRAS'.
162
168
  jurisdiction: str
163
169
  Filter by jurisdiction: 'BR' or 'US'.
@@ -364,6 +364,57 @@ class AlternativeDataOwnership:
364
364
  "offset": offset,
365
365
  })
366
366
 
367
+ def get_sec_13f_holdings(
368
+ self,
369
+ manager_id: Optional[str] = None,
370
+ asset_id: Optional[str] = None,
371
+ start_date: Optional[str] = None,
372
+ end_date: Optional[str] = None,
373
+ limit: int = 100,
374
+ offset: int = 0,
375
+ ) -> dict:
376
+ """
377
+ SEC 13F-HR institutional investment-manager holdings. Use ``manager_id``
378
+ for manager-level filings (CIK, manager name or SEC ticker when the
379
+ manager is itself a SEC registrant) and ``asset_id`` for issuer exposure
380
+ lookup (ticker, CUSIP, ISIN or issuer name).
381
+
382
+ 13F rows are manager filing disclosures, not issuer top-shareholder
383
+ tables. They do not cover every holder, non-reporting investors, short
384
+ positions or all economic exposure. Use this endpoint with SEC filings,
385
+ beneficial ownership and market data when the question needs
386
+ institutional-holder context for US-listed assets.
387
+
388
+ Parameters
389
+ ----------------
390
+ manager_id: str
391
+ Optional SEC manager CIK, manager name or registrant ticker.
392
+ Example: '0000886982' or 'GOLDMAN SACHS'.
393
+ asset_id: str
394
+ Optional issuer ticker, CUSIP, ISIN or issuer name.
395
+ Example: 'AAPL' or 'US0378331005'.
396
+ start_date: str
397
+ Start filing date in YYYY-MM-DD format.
398
+ Field is not required.
399
+ end_date: str
400
+ End filing date in YYYY-MM-DD format.
401
+ Field is not required.
402
+ limit: int
403
+ Maximum number of rows to return.
404
+ Field is not required. Default: 100.
405
+ offset: int
406
+ Number of results to skip for pagination.
407
+ Field is not required. Default: 0.
408
+ """
409
+ return self._get("sec/13f-holdings", {
410
+ "manager_id": manager_id,
411
+ "asset_id": asset_id,
412
+ "start_date": start_date,
413
+ "end_date": end_date,
414
+ "limit": limit,
415
+ "offset": offset,
416
+ })
417
+
367
418
  def get_institutional_holders(
368
419
  self,
369
420
  identifier: str,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: btgsolutions_dataservices_python_client
3
- Version: 4.4.2
3
+ Version: 4.5.0
4
4
  Summary: Python package containing several classes and data for extracting and manipulating market and trading data.
5
5
  Home-page: https://github.com/BTG-Pactual-Solutions/btgsolutions-dataservices-python-client
6
6
  Author: BTG Solutions Data Services powered by BTG Pactual Solutions