Hi Errol, To expand a bit on Patrick's reply. Indeed, beanprice won't save values to file automatically but you don't have to necessarily write a script (well, it's actually still a shell scripting but a bit simpler). You can append result to an existing beancount file included in your ledger as in:
bean-price -i -c commodities.bean >> prices.bean Note the -i and -c parameters that make sure values are fetched a little more "deterministically" (check out bean-price --help to see what they actually mean). Instead of using include prices.bean in the main ledger you can include files using a wildcard, like include "prices/*.bean" and then store prices in the separate files like: bean-price -i -c commodities.bean >> "prices/price-$(date +'%Y-%m-%d').bean" You can store them splitted by date as in this example but you can also come up with the way to split by instrument/stock if necessary (well, here I'd also probably opt for using Python instead of bash). I've automated this process a bit in Lazy Beancount: https://lazy-beancount.xyz/docs/stage1_totals/currencies/#conversion-rates, maybe it'd work for you off the shelf as well. It's nothing too fancy, however, just literally doing what's described here with a UI on top. Also I've recently stumbled across https://gitlab.com/chrisberkhout/pricehist and looks like it can solve a couple more problems with price fetching (e.g. fetching prices for time intervals) but I haven't tested it yet personally. Best regards, Vasily суббота, 28 декабря 2024 г. в 15:40:15 UTC+1, Errol Lee: > Thanks for the input. I was hoping to use one of the functions that came > with beanprice. These steps in the documentation is what I was trying to > replicate. Seems like you've written your own script. > > Now that I can use bean-price to fetch the individual stocks, I'll > probably try to do the same.. > > [image: 6b9455ae26c087990c894b6b32b93a96c2d8723bb1b2c0e7307be3c7c83484bd > copy.jpg] > On Friday, December 27, 2024 at 7:19:53 PM UTC+8 Patrick Ruckstuhl wrote: > >> Hi Errol, >> >> >> if I remember correctly it depends not on the commodities but if you have >> actually any balances using the instruments. >> >> For updating a file, this is what I use. I have a prices folder with a >> file per instrument. >> >> >> #!/usr/bin/env python3 >> >> from beanprice import price >> from beancount import loader >> from beancount.parser import printer >> >> entries, errors, options = loader.load_file('main.beancount') >> >> priceJobs = price.get_price_jobs_at_date(entries, inactive=True) >> prices = [] >> for job in priceJobs: >> try: >> prices.append(price.fetch_price(job)) >> except Exception as e: >> print("failed to fetch, ", job, e) >> >> prices, ignoredEntries = price.filter_redundant_prices(prices, entries) >> for newPrice in prices: >> with open('prices/' + newPrice.currency.lower() + '.beancount', 'a') >> as priceFile: >> priceFile.write(printer.format_entry(newPrice)) >> >> >> Regards, >> >> Patrick >> >> >> On 27.12.2024 07:28, Errol Lee wrote: >> >> Hi Patrick, >> >> >> Thank you for your guidance! I thought I did, but I must've done >> something wrong earlier. I've reinstalled and can now successfully retrieve >> prices using Yahoo. >> >> >> For example: >> >> >> ❯ bean-price -e 'AUD:yahoo/VDHG.AX' >> >> 2024-12-27 price VDHG.AX 69.53 AUD >> >> >> I’ve defined my commodities in a commodities.bean file. For instance, >> VDHG is defined as follows: >> >> >> 2000-01-01 commodity VDHG >> >> name: "Vanguard Diversified High Growth ETF" >> >> asset-class: "Equity" >> >> symbol: "VDHG" >> >> price: "AUD:yahoo/VDHG.AX" >> >> >> However, when I run the following command, it seems to execute >> successfully, but I don’t see the prices updated in any of my files: >> >> >> ❯ bean-price commodities.bean >> >> >> Ideally, I’d like the latest prices to be saved automatically in a >> prices.bean file. Is there something I’m missing in my setup or an >> additional step I need to take to ensure the prices are recorded in the >> desired file? >> >> >> Thanks again for your help! >> >> >> Best regards, >> >> Errol >> >> On Tuesday, December 24, 2024 at 3:46:05 PM UTC+8 Patrick Ruckstuhl wrote: >> >>> Hi Errol, >>> >>> Did you install beanprice separately? >>> >>> https://github.com/beancount/beanprice >>> >>> I'm using alphavantage on a daily basis. >>> >>> You will need to set an environment variable ALPHAVANTAGE_API_KEY with a >>> free api key from them and use it like >>> >>> USD:alphavantage/price:AAPL:USD >>> >>> Regards, >>> Patrick >>> >>> >>> On December 24, 2024 2:48:02 AM GMT+01:00, Errol Lee <[email protected]> >>> wrote: >>> >>>> Hi everyone, >>>> >>>> >>>> I’m new to Beancount (and honestly, I’m amazed by the amount of >>>> functionality it offers—wish I had discovered it sooner!). I’m trying to >>>> set up bean-price to fetch stock prices, but I’ve run into some >>>> issues, particularly with Yahoo and Alphavantage as sources. >>>> >>>> >>>> Here’s what I’ve tried so far: >>>> >>>> 1. *Yahoo*: >>>> >>>> It seems like Yahoo has blocked API access for fetching stock prices. >>>> When I try fetching prices for AAPL, I get the following error: >>>> >>>> >>>> ❯ bean-price -e 'USD:yahoo/AAPL' >>>> >>>> ERROR : Error fetching AAPL: Status 401: {'code': 'Unauthorized', >>>> 'description': 'User is unable to access this feature - >>>> https://bit.ly/yahoo-finance-api-feedback'} >>>> >>>> ERROR : Could not fetch for job: DatedPrice(base='AAPL', quote='USD', >>>> date=None, sources=[PriceSource(module=<module >>>> 'beancount.prices.sources.yahoo' from >>>> '/opt/homebrew/lib/python3.11/site-packages/beancount/prices/sources/yahoo.py'>, >>>> >>>> symbol='AAPL', invert=False)]) >>>> >>>> >>>> >>>> 2. *Alphavantage*: >>>> >>>> Despite being listed as a source in the GitHub documentation, I can’t >>>> seem to get it working. Here’s the error I encounter: >>>> >>>> >>>> ❯ bean-price -e 'USD:alphavantage/AAPL' >>>> >>>> Traceback (most recent call last): >>>> >>>> File >>>> "/opt/homebrew/lib/python3.11/site-packages/beancount/prices/price.py", >>>> line 178, inimport_source >>>> >>>> __import__(default_name) >>>> >>>> ModuleNotFoundError: No module named >>>> 'beancount.prices.sources.alphavantage' >>>> >>>> >>>> During handling of the above exception, another exception occurred: >>>> >>>> >>>> Traceback (most recent call last): >>>> >>>> File >>>> "/opt/homebrew/lib/python3.11/site-packages/beancount/prices/price.py", >>>> line 182, inimport_source >>>> >>>> __import__(module_name) >>>> >>>> ModuleNotFoundError: No module named 'alphavantage' >>>> >>>> >>>> Ultimately, I’d like to fetch prices for some Australian stocks in my >>>> portfolio (e.g., ASX:VDHG, ASX:VGS, etc.). >>>> >>>> >>>> Does anyone have advice on: >>>> >>>> • Workarounds for Yahoo? >>>> >>>> • How to enable or properly configure Alphavantage as a source? >>>> >>>> • Any other sources I can use for Australian stocks? >>>> >>>> >>>> Thanks in advance for your help! Any guidance would be much appreciated. >>>> >>>> -- >> You received this message because you are subscribed to the Google Groups >> "Beancount" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion visit >> https://groups.google.com/d/msgid/beancount/1e797d83-4d9c-4951-8609-a20781fb5164n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/beancount/1e797d83-4d9c-4951-8609-a20781fb5164n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/beancount/17a51fce-9ebe-436c-a6cb-e256d2e99565n%40googlegroups.com.
