Telegram Trading Bot "ApartCash"

Job ID: 39667585

Budget: €30 – €250 EUR

Hello,
I'm developing a Telegram-based trading assistant bot that analyzes stock data (RSI, MACD, VWAP, etc.), generates BUY/SELL/HOLD signals with confidence scores and explanations, and sends them to users in a clean Telegram message format.
The system is 90% ready — most logic is already written, modules are connected, and signals are generated — but the final decision logic isn't working as expected.

Main Task:
Ensure the bot gives accurate and actionable recommendations based on the analysis.
Currently, almost every signal returns:

Recommendation — Hold / Stay Neutral

even when indicator conditions for BUY or SELL are partially or fully met.
What’s going wrong:
There are 3 specific issues:

Finnhub API key is not loaded:

[FinnhubService] General error for PLTR: module 'apps.config.settings' has no attribute 'FINNHUB_API_KEY'
OpenAI sentiment module also fails:

[OpenAISentiment] OPENAI_API_KEY not found in environment variables
Scoring logic is too restrictive. For example:

[analyze_timeframe] 15m completed: NEUTRAL (buy_conf: 0.60, sell_conf: 0.20)
I believe the problem is in overly strict signal conditions and wrong thresholds.
What’s needed is a specialist who knows exactly which numeric thresholds are commonly applied in real financial analysis, and can properly tune the system to reflect realistic market decisions.

What’s already done:
Production-level backend: FastAPI, PostgreSQL, SQLAlchemy, Aiogram, async support.

Well-structured project with documentation (project_documentation.md, README.md).

All core indicators (RSI, MACD, VWAP, Bollinger Bands, Stochastic) are implemented.

Telegram output formatting, confidence scores, signal history, and multi-timeframe analysis are working.

Logs and debug messages are detailed and traceable.

What you need to do:
Fix environment variable loading (Finnhub & OpenAI) — I’ll provide adjusted config files (with dummy keys).

Check and correct the scoring logic, confidence thresholds, and interpretation of BUY/SELL signals in form_signal() and generate_signal().

Verify that Telegram messages contain correct and actionable final recommendations based on real indicator analysis:

BUY

SELL

HOLD (only when justified)

confidence % and reasoning (already mostly formatted)

Who I’m looking for:
A competent and focused developer with real experience in trading logic or financial systems —
not someone who wastes time playing the expert without delivering results.

The problem is clearly defined.
Documentation is provided.
Exact files are already extracted.
You don’t need to spend hours searching for the right module or logic — just open and fix.

Files I’ll provide:
The following files will be provided right away as part of the job post, so you can understand the project structure and logic clearly:

project_documentation.md – full overview of the project and folder structure

README.md – instructions on how the backend is structured and launched

analysis_debug.log – logs showing confidence, signal outcomes, and where logic fails

signal_formation_service.py – logic responsible for forming the final signal

signal_analysis_service.py – rules and thresholds behind the signal

signal_formatter.py – formatting of output messages sent to Telegram

signal_config_service.py – configuration and threshold weight handling (without YAML)

error.log – logs with startup/runtime errors (including missing API keys)

app.log – application logs with runtime context (cleaned of sensitive data)

market_data_service.py – safe to share, handles market and premarket data

yfinance_utils.py – fallback functions for market data from Yahoo

finnhub_service.py – data fetching via Finnhub (no keys included)

I won’t share .env or settings.py directly, but I can provide clean versions with replaced fake keys — this will not block your work.

If you’re confident in your skills and can deliver clear, accurate results — I’ll be happy to work with you.
Looking forward to your response.

Best regards,
Oleksandr Kryvoruchko