fin-thread

command module
v1.9.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2024 License: GPL-3.0 Imports: 18 Imported by: 0

README

FinThread - News telegram bot powered by AI

Go Telegram Go Doc codecov

Welcome to FinThread! FinThread is designed to aggregate financial news from a plethora of sources, analyze the content using the cutting edge in AI technology, and deliver concise and relevant news directly to your fingertips through Telegram public channel.

finthread

Features

  • News Aggregator: Fetches financial news articles from a wide range of sources, ensuring comprehensive news feed.
  • AI-Powered Filtering: Uses advanced AI models such as Mistral and OpenAI's GPT to filter out unreliable and irrelevant news content, focusing on quality and accuracy.
  • Stock Detection: Identifies stocks that are likely to be affected by the news stories to provide context and relevance.
  • AI news Rewriter: Enhances readability and clarity by rewriting news articles, making them simpler to understand while retaining their essential information.
  • Telegram Publishing: Automatically publishes the refined news to a dedicated Telegram channel for ease of access and real-time updates.
  • Economic Calendar Parsing: Monitors and reports on economic events throughout the week, delivering important financial calendar updates.
  • Real-Time Event Tracking: Stays alert to changes in economic events to provide the channel with the most up-to-date information.
  • Summarise Latest News: Summarises the latest news articles to provide a quick overview of the most important events.

Project Goals

FinThread is not just a bot. It's an ambitious project aiming to achieve 100% autonomous management of a news channel, making all necessary decisions independent of human intervention.

Usage Guide

Here is a quick guide on how to use FinThread if you want to run it yourself.

Project Structure

The project is split into several entities:

  • Journalist: Journalists are responsible for fetching news from various sources. One journalist can have multiple Providers (like RSS feeds). Ideally, each journalist should be responsible for his own specific domain (like cryptocurrencies, stocks, etc.).
  • Composer: Composers are responsible for composing the news and filtering out irrelevant content using LLMs.
  • Publisher: Publishers are responsible for publishing the news to a specific channel.
  • Archivist: Archivists are responsible for saving the news in a database and retrieving it when needed.
  • Scavenger: Scavengers are responsible for fetching economic calendar events and other sources that need a custom implementation.
  • Job: Is a set of schedule-based tasks that are executed periodically. Jobs combine all the above entities to achieve a specific goal.
Configuration

Configuration is a bit scattered across the project because it's an early stages. Some things can be configured via ENV, some hardcoded, and some will require you to edit the code directly. I hope to improve this in the future.

Environment variables are defined in .env file. You can copy .env_example and fill in the values.

Some things, like flagging words, are hardcoded in the code. You can find them in config.go file.

For now, Journalists are defined in the code directly. The same applies to their settings. In this demo, I've used two journalists that fetch news from RSS feeds. Providers for them are defined in MARKET_JOURNALISTS and BROAD_JOURNALISTS envs in JSON format.

Running

You can use docker compose to run the project locally.

docker compose up

or by running Makefile command:

make run

FinThread is an open-source pet project (proof of concept) and not affiliated with any financial institutions. The news provided is for informational purposes only and not intended for trading, selling or investing advice.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL