📊 Wikifolio API
This is an unofficial Node.js API client for Wikifolio's platform.
⚠️ Wikifolio could change their API at any moment. ⚠️
If anything is broken, please open an issue.
⚠️ On the 7th of april 2021, Wikifolio announced a re-launch of their website, which is likely to (temporarily) break this API. ⚠️

⭐ Features
- Session management
- Search wikifolios
- Fetch wikifolio details / analysis / price
- Fetch portfolio positions
- Fetch wikifolio trades
- Fetch watchlist entries
- Watch / unwatch wikifolios
- Fetch users & their wikifolios
- Trading: place & modify buy & sell orders

🌞 Contributors wanted

🛫 Install
npm i wikifolio
yarn add wikifolio

📝 Examples
The examples assume the following setup:
import Api from 'wikifolio'
const api = new Api({
email: 'email@example.org',
password: 'plaintext-password'
})
☝️ Use encrypted environment variables or command line prompts, never store your passwords in plain text.

1. Fetch details of a wikifolio
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.details() )

2. Fetch wikifolio price
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.price() )

3. Fetch wikifolio trades
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.trades({pageSize: 100, page: 1}) )

4. Fetch wikifolio index history (chart)
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.history() )

5. Fetch portfolio items of a wikifolio
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.portfolio() )

6. Search wikifolios
const wikifolios = await api.search({query: 'Supervisor'})
console.log( wikifolios )

7. Unwatch all wikifolios on the watchlist
const watchlist = await api.watchlist()
for(const wikifolio of watchlist){
await wikifolio.watchlist(false)
}

8. Get trader info
const user = api.user('riennevaplus')
console.log( await user.details() )

9. Get wikifolios of a trader
const user = api.user('riennevaplus')
console.log( await user.wikifolios() )

10. Place a limit order
There's a similar sell()
method.
const wikifolio = api.wikifolio('wfobserver')
const order = await wikifolio.buy({
amount: 1,
limitPrice: 220,
orderType: "limit",
underlyingIsin: "DE000LS9NMQ9",
expiresAt: "2020-07-29T00:00:00.000Z"
})
Note: When orderType
is set to quote
the first returned quote will be accepted.

11. Update an order
const wikifolio = api.wikifolio('wfobserver')
const order = wikifolio.order('8b4da005-6750-4b4c-9dff-0364d3e07be0')
console.log( await order.submit({limitPrice: 100}) )

12. List & remove wikifolio orders
const wikifolio = api.wikifolio('wfobserver')
const orders = await wikifolio.orders({pageSize: 25, page: 0})
for(const order of orders){
console.log( await order.remove() )
}

👷 Todos
- Improve documentation
- Implement wikifolio sustainability

🌻 Contributors