The {alpacar}
package for R is a wrapper around the Alpaca API. API documentation can be found here. In this introductory post I show how to install and load the package, then authenticate with the API and retrieve account information.
Creating an Account
I’ve been using a paper trading account for testing purposes. To get this set up:
- Go to https://alpaca.markets/.
- Click the link to create an account.
- Fill in your details and submit.
- Verify your email.
- Login to your new account.
- Configure an authentication app (I’m using Google Authenticator).
- Click on the Home tab.
- Find the API Keys section and press the Generate New Keys link.
- Record the key and secret somewhere secure.
I have stored my key and secret in environment variables.
Now you’re all set up, we can move onto the package.
Install & Load
Install from GitHub (it’s not yet published on CRAN).
remotes::install_github("datawookie/alpacar")
Now load the package.
library(alpacar)
By default the package will select the paper trading API.
alpacar v0.0.8
Selecting paper trading API by default.
I also routinely load {dplyr}
and tweak the number of significant figures in tibble
output.
library(dplyr)
# Expand decimal places.
options(pillar.sigfig = 8)
Authenticate
I store my credentials in environment variables. Specifically I use a .env
file in my project directory, which I load using the {dotenv}
package.
library(dotenv)
load_dot_env()
Now authenticate with the API.
authenticate(
key = Sys.getenv("ALPACA_KEY"),
secret = Sys.getenv("ALPACA_SECRET_KEY")
)
Account Information
Since you have connected with the API you’re ready to retrieve your account information.
info <- account()
The result is a list with a bunch of fields:
names(info)
[1] "id" "admin_configurations"
[3] "user_configurations" "account_number"
[5] "status" "crypto_status"
[7] "options_approved_level" "options_trading_level"
[9] "currency" "buying_power"
[11] "regt_buying_power" "daytrading_buying_power"
[13] "effective_buying_power" "non_marginable_buying_power"
[15] "options_buying_power" "bod_dtbp"
[17] "cash" "accrued_fees"
[19] "portfolio_value" "pattern_day_trader"
[21] "trading_blocked" "transfers_blocked"
[23] "account_blocked" "created_at"
[25] "trade_suspended_by_user" "multiplier"
[27] "shorting_enabled" "equity"
[29] "last_equity" "long_market_value"
[31] "short_market_value" "position_market_value"
[33] "initial_margin" "maintenance_margin"
[35] "last_maintenance_margin" "sma"
[37] "daytrade_count" "balance_asof"
[39] "crypto_tier" "intraday_adjustments"
[41] "pending_reg_taf_fees"
You can access those fields individually, but there’s also an S3 generic print()
method that presents the information concisely. Here’s the account information for a pristine new paper trading account:
================================================================================
Alpaca Account: PA39TI9AF7CO (bf24d452-0bd5-3de5-98e8-e794046094ad)
Currency: USD
Created: 2024-10-14 05:11:14
Status: ACTIVE
================================================================================
Balances (2024-10-11) ----------------------------------------------------------
Equity: = 100000.00
Cash: = 100000.00
Buying power: Nominal = 200000.00 Daytrading = 0.00
Regulation-T = 200000.00 Non-marginable = 100000.00
Effective = 200000.00 Options = 100000.00
Market value: Position = 0.00 Long = 0.00
Short = 0.00
Margin: Initial = 0.00 Maintenance = 0.00
Last maintenance = 0.00
--------------------------------------------------------------------------------
I’ll be publishing further posts as I add more functionality to the package. Ultimately the goal is to have a package that will enable fully automated trading on Alpaca from R. If you want to keep track of this project as it develops then star ⭐ the repository at https://github.com/datawookie/alpacar.