Python Data Engineer – Financial API Integration & SQLite Database (Polygon.io / Yahoo Finance)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Gig

SALARY

$115/Contract

HOURS PER WEEK

12

DATE UPDATED

Sep 16, 2026

JOB OVERVIEW

Project Overview:
We are seeking an experienced Python Data Engineer to build a clean, automated data ingestion pipeline. The goal of this project is to pull daily market, options, and macroeconomic data from external APIs and store it in a clean, local SQLite database for downstream processing.

Scope of Work & Deliverables:

API Integration Module (data_fetcher.py):


Write modular Python scripts to fetch daily End-of-Day (EOD) OHLCV price data and historical 30-day Implied Volatility (IV) / Realized Volatility (HV) data using ---------- (primary) with fallback handling for Yahoo Finance (yfinance).


Fetch macroeconomic indicators from the Federal Reserve FRED API (e.g., 10-Year Treasury Yields, Inflation metrics).


Database Architecture (database.py):


Design and implement a structured SQLite database schema to store ticker price history, implied volatility surfaces, and macro data.


Include automated data cleaning routines (handling missing market days, adjusting for stock splits/dividends, and ensuring no data gaps).


Execution Script:
Provide a lightweight runner script that can be executed on a daily cron job to append new market data seamlessly.


Required Skills:

Strong proficiency in Python 3.x, pandas, numpy, and sqlite3.
Demonstrated experience working with financial market APIs ( ---------- , Yahoo Finance, FRED API).
Clean code standards, error handling, and robust logging.

Estimated Hours: 10–12 Hours

Project Type:Contract

Confidentiality: Standard non-disclosure applies. All scripts must run locally and connect cleanly to specified API endpoints.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0114
Total Execution Time  0.0127
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,484,528 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Python-Data-Engineer-Financial-API-Integration-SQLite-Database-Polygonio-Yahoo-Finance-1732304
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0061 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1732304
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 968299
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1732304
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-09-21',ej.date_added) duration_daysDATEDIFF('2026-09-21',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-09-21',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1732304' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1732304 
0.0006   UPDATE employer_jobs SET hit_counts '***Sep-16-2026=98***Sep-17-2026=117***Sep-18-2026=37***Sep-19-2026=27***Sep-21-2026=1' WHERE job_id'1732304'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Sep-2026=280' WHERE job_id'1732304'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1732304' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1732304 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '968299'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)