Skip to content

Commit cf2fbf5

Browse files
authored
feat: support id of corporate action (#612)
1 parent d755e4e commit cf2fbf5

File tree

4 files changed

+97
-10
lines changed

4 files changed

+97
-10
lines changed

alpaca/data/historical/corporate_actions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,12 @@ def get_corporate_actions(
5757

5858
if request_params.symbols:
5959
params["symbols"] = ",".join(request_params.symbols)
60+
if request_params.cusips:
61+
params["cusips"] = ",".join(request_params.cusips)
6062
if request_params.types:
6163
params["types"] = ",".join(request_params.types)
64+
if request_params.ids:
65+
params["ids"] = ",".join(request_params.ids)
6266

6367
response = self._get_marketdata(
6468
path="/corporate-actions",

alpaca/data/models/corporate_actions.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
from datetime import date
22
from typing import Dict, List, Optional, Union
33

4-
from alpaca.common.models import ValidateBaseModel as BaseModel
4+
from alpaca.common.models import ModelWithID as BaseModel
55
from alpaca.common.types import RawData
66
from alpaca.data.models.base import BaseDataSet, TimeSeriesMixin
77

88

99
class ForwardSplit(BaseModel):
1010
corporate_action_type: str
1111
symbol: str
12+
cusip: str
1213
new_rate: float
1314
old_rate: float
1415
process_date: date
@@ -21,6 +22,8 @@ class ForwardSplit(BaseModel):
2122
class ReverseSplit(BaseModel):
2223
corporate_action_type: str
2324
symbol: str
25+
old_cusip: str
26+
new_cusip: str
2427
new_rate: float
2528
old_rate: float
2629
process_date: date
@@ -32,10 +35,13 @@ class ReverseSplit(BaseModel):
3235
class UnitSplit(BaseModel):
3336
corporate_action_type: str
3437
old_symbol: str
38+
old_cusip: str
3539
old_rate: float
3640
new_symbol: str
41+
new_cusip: str
3742
new_rate: float
3843
alternate_symbol: str
44+
alternate_cusip: str
3945
alternate_rate: float
4046
process_date: date
4147
effective_date: date
@@ -45,6 +51,7 @@ class UnitSplit(BaseModel):
4551
class StockDividend(BaseModel):
4652
corporate_action_type: str
4753
symbol: str
54+
cusip: str
4855
rate: float
4956
process_date: date
5057
ex_date: date
@@ -55,6 +62,7 @@ class StockDividend(BaseModel):
5562
class CashDividend(BaseModel):
5663
corporate_action_type: str
5764
symbol: str
65+
cusip: str
5866
rate: float
5967
special: bool
6068
foreign: bool
@@ -69,12 +77,13 @@ class CashDividend(BaseModel):
6977
class SpinOff(BaseModel):
7078
corporate_action_type: str
7179
source_symbol: str
80+
source_cusip: str
7281
source_rate: float
7382
new_symbol: str
83+
new_cusip: str
7484
new_rate: float
7585
process_date: date
7686
ex_date: date
77-
payable_date: Optional[date] = None
7887
record_date: Optional[date] = None
7988
payable_date: Optional[date] = None
8089
due_bill_redemption_date: Optional[date] = None
@@ -83,7 +92,9 @@ class SpinOff(BaseModel):
8392
class CashMerger(BaseModel):
8493
corporate_action_type: str
8594
acquirer_symbol: Optional[str] = None
95+
acquirer_cusip: Optional[str] = None
8696
acquiree_symbol: str
97+
acquiree_cusip: str
8798
rate: float
8899
process_date: date
89100
effective_date: date
@@ -93,8 +104,10 @@ class CashMerger(BaseModel):
93104
class StockMerger(BaseModel):
94105
corporate_action_type: str
95106
acquirer_symbol: str
107+
acquirer_cusip: str
96108
acquirer_rate: float
97109
acquiree_symbol: str
110+
acquiree_cusip: str
98111
acquiree_rate: float
99112
process_date: date
100113
effective_date: date
@@ -104,8 +117,10 @@ class StockMerger(BaseModel):
104117
class StockAndCashMerger(BaseModel):
105118
corporate_action_type: str
106119
acquirer_symbol: str
120+
acquirer_cusip: str
107121
acquirer_rate: float
108122
acquiree_symbol: str
123+
acquiree_cusip: str
109124
acquiree_rate: float
110125
cash_rate: float
111126
process_date: date
@@ -116,6 +131,7 @@ class StockAndCashMerger(BaseModel):
116131
class Redemption(BaseModel):
117132
corporate_action_type: str
118133
symbol: str
134+
cusip: str
119135
rate: float
120136
process_date: date
121137
payable_date: Optional[date] = None
@@ -124,20 +140,25 @@ class Redemption(BaseModel):
124140
class NameChange(BaseModel):
125141
corporate_action_type: str
126142
old_symbol: str
143+
old_cusip: str
127144
new_symbol: str
145+
new_cusip: str
128146
process_date: date
129147

130148

131149
class WorthlessRemoval(BaseModel):
132150
corporate_action_type: str
133151
symbol: str
152+
cusip: str
134153
process_date: date
135154

136155

137156
class RightsDistribution(BaseModel):
138157
corporate_action_type: str
139158
source_symbol: str
159+
source_cusip: str
140160
new_symbol: str
161+
new_cusip: str
141162
rate: float
142163
process_date: date
143164
ex_date: date

alpaca/data/requests.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,16 +561,20 @@ class CorporateActionsRequest(NonEmptyRequest):
561561
562562
Attributes:
563563
symbols (Optional[List[str]]): The list of ticker identifiers.
564+
cusips (Optional[List[str]]): The list of CUSIPs.
564565
types (Optional[List[CorporateActionsType]]): The types of corporate actions to filter by. (default: all types)
565566
start (Optional[date]): The inclusive start of the interval. Format: YYYY-MM-DD. (default: current day)
566567
end (Optional[date])): The inclusive end of the interval. Format: YYYY-MM-DD. (default: current day)
568+
ids (Optional[List[str]]): The list of corporate action IDs. This parameter is mutually exclusive with all other filters (symbols, types, start, end).
567569
limit (Optional[int]): Upper limit of number of data points to return. (default: 1000)
568570
sort (Optional[Sort]): The chronological order of response based on the timestamp. Defaults to ASC.
569571
"""
570572

571573
symbols: Optional[List[str]] = None
574+
cusips: Optional[List[str]] = None
572575
types: Optional[List[CorporateActionsType]] = None
573576
start: Optional[date] = None
574577
end: Optional[date] = None
578+
ids: Optional[List[str]] = None
575579
limit: Optional[int] = 1000
576580
sort: Optional[Sort] = Sort.ASC

0 commit comments

Comments
 (0)