Custom component to get stock data from Avanza for Home Assistant.
The api changed recently, I'm trying to keep as much as possible working but some attributes may still not work. Please open an issues if you find something. The plan for the future is to create a new component that should be merged to homeassitant core.
-
The easiest way is to install it with HACS. First install HACS if you don't have it yet. After installation you can find this custom component in the HACS store under integrations.
-
Alternatively, you can install it manually. Just copy paste the content of the
sensor.avanza_stock/custom_components
folder in yourconfig/custom_components
directory. As example, you will get thesensor.py
file in the following path:/config/custom_components/avanza_stock/sensor.py
.
key | type | description |
---|---|---|
platform (Required) | string | avanza_stock |
stock (Required) | number / list | Stock id or list of stocks, see here and here. |
name (Optional) | string | Name of the sensor. Default avanza_stock_{stock} . Redundant if stock is defined as a list. |
shares (Optional) | number | Number of shar, can be fractional. Redundant if stock is defined as a list. |
purchase_date (Optional) | string | Date when stock was purchased. Redundant if stock is defined as a list. Does not get processed further. |
purchase_price (Optional) | number | Price paid when stock was purchased (per share). Redundant if stock is defined as a list. |
conversion_currency (Optional) | number | Index id used for currency conversion, see here. |
monitored_conditions (Optional) | list | Attributes to monitor, see here. |
invert_conversion_currency (Optional) | boolean | Wether or not to invert the conversion currency, default false. |
currency (Optional) | string | Overwrite currency given by the api. |
key | type | description |
---|---|---|
id (Required) | number | Stock id, see here. |
name (Optional) | string | Name of the sensor. Default avanza_stock_{stock} . |
shares (Optional) | number | Number of shares, can be fractional. |
purchase_date (Optional) | string | Date when stock was purchased. Does not get processed further. |
purchase_price (Optional) | number | Price paid when stock was purchased (per share). |
conversion_currency (Optional) | number | Index id used for currency conversion, see here. |
invert_conversion_currency (Optional) | boolean | Wether or not to invert the conversion currency, default false. |
currency (Optional) | string | Overwrite currency given by the api. |
If no monitored_conditions
is defined, change, changePercent and name will be tracked. Full list of available attributes, see here (With the new api change only change and changePercent is currently supported.) Note that the data from the api is not realtime but lagging behind by 15 minutes.
Got to Avanza and search for the stock you want to track. In the resulting url there is a number, this is the stock id needed for the configuration. Even though it is a Swedish bank it is possible to find stocks from the following countries: Sweden, USA, Denmark, Norway, Finland, Canada, Belgium, France, Italy, Netherlands, Portugal and Germany. To find conversion currencies search for example "USD/SEK" and look for the id in the resulting url. If you can not find your conversion try and search the reverse (NOK/SEK instead of SEK/NOK) and use the invert_conversion_currency
to get your preffered currency.
Configuration with default settings:
sensor:
- platform: avanza_stock
stock: 5361
Configuration with custom settings:
sensor:
- platform: avanza_stock
name: Avanza Bank Holding
stock: 5361
monitored_conditions:
- totalVolumeTraded
- totalValueTraded
Configuration with multiple stocks:
sensor:
- platform: avanza_stock
stock:
- id: 5361
name: Avanza Bank Holding
- id: 8123
name: Home Assistant
monitored_conditions:
- totalVolumeTraded
- totalValueTraded
Configuration with conversion currency:
sensor:
- platform: avanza_stock
stock:
- id: 238449
name: TESLA USD
shares: 1
purchase_price: 600
- id: 238449
name: TESLA SEK
shares: 1
conversion_currency: 19000
purchase_price: 7000
- id: 5361
name: Avanza Bank Holding (NOK)
conversion_currency: 53293
invert_conversion_currency: true
Configuration with untrackable stock, use id 0 and the purchase_price will be the current state:
sensor:
- platform: avanza_stock
stock:
- id: 0
name: MY STOCK
shares: 1
purchase_price: 600
currency: SEK
Automation to send summary at 18:00 using telegram:
# Telegram Stock Summary
- alias: 'Telegram Stock Summary'
initial_state: true
trigger:
- platform: time
at: '18:00:00'
action:
- service: notify.telegram
data:
message: '
<b>Stock Summary </b>
<code>
{{ states.sensor.avanza_stock_5361.attributes.name }} : {{ states.sensor.avanza_stock_5361.attributes.changePercent }}
</code>
'
- 1.5.3 - Less aggressive rounding
- 1.5.2 - Add minimum home-assistant version
- 1.5.1 - Bump pyavanza (becuase of aiohttp)
- 1.5.0 - Use latest pyavana with latest api changes
- 1.4.0 - Fix more attributes (dure to api changes)
- 1.3.0 - Support manual stock, i.e. not on avanza
- 1.2.0 - Support ETF
- 1.1.2 - Fix dividend
- 1.1.1 - Fix historical changes
- 1.1.0 - Use the new api
- 1.0.12 - Add unique id
- 1.0.11 - Rename device state attributes
- 1.0.10 - Safely remove divident attributes
- 1.0.9 - Add purchase date attribute (string manually set by user)
- 1.0.8 - Correct profit/loss when using conversion currency
- 1.0.7 - Overwrite currency given by the api
- 1.0.6 - Correct unit when using conversion currency
- 1.0.5 - Add option to invert conversion currency
- 1.0.4 - Configure conversion currency and define purchase price
- 1.0.3 - Allow to define multiple stocks
- 1.0.2 - Async update
- 1.0.1 - Allow fractional shares, add more change attributes
- 1.0.0 - Add number of shares as optional configuration
- 0.0.10 - Clean up monitored conditions
- 0.0.9 - Compare payment date with today's date, ignore time
- 0.0.8 - Ignore dividend if amount is zero, add resources.json and manfiest.json
- 0.0.7 - Changed to async setup
- 0.0.6 - Make sure dividend payment date has not passed
- 0.0.5 - Add dividends information
- 0.0.4 - Add companny information (description, marketCapital, sector, totalNumberOfShares)
- 0.0.3 - Add key ratios (directYield, priceEarningsRatio, volatility)
- 0.0.2 - Configure monitored conditions
- 0.0.1 - Initial version