Portfolio Export
Export Configuration
Commodity Declarations
; Regular Stock/ETF
2024-01-01 commodity AAPL
name: "Apple Inc."
export: "NASDAQ:AAPL"
; Mutual Fund
2024-01-01 commodity VTSAX
name: "Vanguard Total Stock Market Index Fund"
export: "MUTF:VTSAX"
; Cash Equivalent
2024-01-01 commodity USD
name: "US Dollar"
export: "CASH"
; Money Market Fund
2024-01-01 commodity VMMXX
name: "Vanguard Prime Money Market Fund"
export: "MUTF:VMMXX (MONEY:USD)"
; Ignored Asset
2024-01-01 commodity RSPCAD
name: "Retirement Savings Plan Contributions"
export: "IGNORE"
Export Types
Type | Syntax | Purpose |
---|---|---|
Direct | "EXCHANGE:SYMBOL" | Export as specific ticker |
Cash | "CASH" | Convert to cash value |
Money | "SYMBOL (MONEY:CCY)" | Cash equivalent instrument |
Ignore | "IGNORE" | Skip from export |
Export Process
Command Line Usage
# Basic export
bean-report ledger.beancount export_portfolio > portfolio.ofx
# Debug export process
bean-report ledger.beancount export_portfolio --debug 2>&1
# View help
bean-report ledger.beancount export_portfolio --help
Export Rules
-
Default Behavior
- Uses commodity name as ticker
- Requires explicit exchange prefixes
- Validates Google Finance symbols
-
Cash Conversion
- Requires recent price data
- Aggregates all cash positions
- Uses money market instruments
-
Money Instruments
- One per currency needed
- Must price near currency unit
- Used for cash position display
Exchange Symbology
Common Exchanges
; US Markets
export: "NYSE:IBM" # New York Stock Exchange
export: "NASDAQ:AAPL" # NASDAQ
export: "MUTF:VTSAX" # US Mutual Funds
; International
export: "TSE:XIN" # Toronto Stock Exchange
export: "LSE:HSBA" # London Stock Exchange
Special Cases
; Cash Equivalents
export: "MUTF:VMMXX (MONEY:USD)" # US Dollar
export: "MUTF_CA:IGI806 (MONEY:CAD)" # Canadian Dollar
; Alternative Assets
export: "CASH" # Convert to cash value
export: "IGNORE" # Skip from export
Implementation Details
OFX Export Format
<BUYSTOCK>
<INVBUY>
<INVTRAN>
<DTPOSTED>20240115</DTPOSTED>
<MEMO>Stock Purchase</MEMO>
</INVTRAN>
<SECID>
<UNIQUEID>NASDAQ:AAPL</UNIQUEID>
<UNIQUEIDTYPE>TICKER</UNIQUEIDTYPE>
</SECID>
<UNITS>100</UNITS>
<UNITPRICE>150.00</UNITPRICE>
</INVBUY>
</BUYSTOCK>
Position Handling
-
Stock Positions
- Exports as BUYSTOCK elements
- Uses exchange-qualified symbols
- Sets purchase date to T-1
-
Mutual Funds
- Exports as BUYMF elements
- Requires MUTF prefix
- Same data structure as stocks
-
Cash Positions
- Converts to money market
- Aggregates by currency
- Uses specified instruments
Best Practices
- Symbol Management
; Always use exchange prefixes
2024-01-01 commodity AAPL
export: "NASDAQ:AAPL" # Not just "AAPL"
; Document symbol sources
2024-01-01 commodity XIN
name: "iShares MSCI EAFE ETF"
export: "TSE:XIN" # Toronto Stock Exchange
reference: "BlackRock iShares"
- Cash Handling
; Define money market instruments
2024-01-01 commodity VMMXX
export: "MUTF:VMMXX (MONEY:USD)"
note: "Vanguard Prime Money Market"
; Mark currencies as cash
2024-01-01 commodity USD
export: "CASH"
- Validation
; Use commodity validation plugin
plugin "beancount.plugins.check_commodity"
; Regularly verify export output
bean-report ledger.beancount export_portfolio --debug
This guide provides a comprehensive overview of Beancount's portfolio export capabilities while maintaining technical accuracy.