Object-Oriented Stock Analysis System in C# (.NET)
A cumulative software systems project focused on clean architecture, extensibility, and real-world data analysis.
📌 Watch the full walkthrough showcasing data ingestion, simulation mode, pattern recognition, and UI interaction
🔗 Demo Video: youtube link
MarketPulse is a desktop stock analysis application developed in C# (.NET, Windows Forms) as part of
Software Systems Development (Fall 2025) at the University of South Florida, instructed by Dr. Henrick Jeanty.
The project represents a system-level, object-oriented application that analyzes historical stock data, visualizes price movement using candlestick charts, and detects classic technical analysis patterns through a modular recognition engine.
This repository is published for portfolio presentation, educational demonstration, and recruiter review.
Software Systems Development emphasizes building high-quality, maintainable software systems using the Object-Oriented Programming (OOP) paradigm and professional tooling.
Instead of isolated assignments, the course follows a cumulative project model, focusing on:
- System analysis and design
- Incremental feature development
- Separation of concerns
- Clean, extensible architecture
- Practical application of theoretical concepts
MarketPulse is the final integrated outcome of these objectives.
The following core syllabus topics were directly implemented in MarketPulse, not just discussed theoretically:
- Built using .NET Framework and Visual Studio 2022
- Windows Forms for UI development
- Native charting and event-driven components
Used in:
Application structure, UI layer, event handling, chart rendering.
- Variables, data types, operators
- Conditional logic and control flow
- Iterative processing with loops
Used in:
CSV parsing, simulation logic, pattern detection rules, UI state control.
Candlestickencapsulates raw OHLCV market data- Parsing and validation logic hidden from consumers
SmartCandlestickextendsCandlestickwith computed analytics- Pattern recognizers inherit from a shared abstract base class
Recognizerdefines a common interface for all technical patterns- Recognition logic is decoupled from UI and controller logic
- All patterns are processed uniformly at runtime
- New recognizers can be added without modifying existing code
Used in:
Entire data model and pattern recognition subsystem.
- Lists for time-series candle storage
- Dictionaries mapping patterns → detected indices
- LINQ for filtering, sorting, and transformations
Used in:
Date filtering, pattern indexing, analytics preparation, UI population.
- Reads historical stock data from CSV files
- Parses, validates, and converts rows into objects
- Enforces chronological ordering for accurate visualization
Used in:
Market data ingestion and preprocessing pipeline.
- Event-driven programming using Windows Forms
- Publisher–subscriber model via UI controls and timers
- Delegates used implicitly through event handlers
Used in:
Button interactions, file dialogs, simulation timing, chart refreshes.
- Concise expressions for filtering and projection
- Improved readability and maintainability
Used in:
Date range filtering, pattern sorting, data binding.
CSV File
↓
Candlestick (raw OHLCV data)
↓
SmartCandlestick (derived analytics)
↓
Recognizer (abstract pattern interface)
↓
RecognizerController
↓
Chart Visualization & Pattern Annotations
This layered design enforces separation of concerns, a central theme of the course.
- Loads historical stock data from CSV files
- Each row becomes a
Candlestickobject - Data is ordered chronologically for correctness
SmartCandlestick computes:
- Price range
- Candle body size
- Upper and lower wick lengths
- Bullish / bearish direction
- Relative ratios used for pattern recognition
This keeps raw data immutable and logic well-organized.
Single-Candle Patterns
- Doji
- Dragonfly Doji
- Gravestone Doji
- Marubozu (Bullish / Bearish)
- Hammer
- Inverted Hammer
Two-Candle Patterns
- Bullish Engulfing
- Bearish Engulfing
- Bullish Harami
- Bearish Harami
Each pattern is implemented as an independent recognizer class.
- Replays historical data candle-by-candle
- Adjustable playback speed
- Pattern detection runs after full playback
- Mimics real-time market observation
- Interactive OHLC candlestick charts
- Automatic Y-axis normalization
- Pattern highlighting overlays
- Date range filtering
- Pattern selection with occurrence counts
- CSV-based market data ingestion
- Candlestick chart visualization
- Modular technical pattern recognition engine
- Event-driven UI
- Simulation playback mode
- Clean object-oriented architecture
- Easily extensible system design
- C#
- .NET Framework
- Windows Forms
- Visual Studio 2022
- LINQ
- System.Windows.Forms.DataVisualization
This project was developed for Software Systems Development under Dr. Henrick Jeanty.
Students currently enrolled in this course (or equivalent offerings) may not copy, reuse, or submit any portion of this code for academic credit.
Doing so would constitute a violation of university academic integrity policies and the course honor code.
This repository is public solely for learning demonstration, portfolio review, and recruiter evaluation.
Yengner Bermudez
Computer Science — Software Systems Development
University of South Florida
Fall 2025