CoolFace
Apppublic

Ankit3445/options_pricing

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
AlphaVantageClient.hpp51 linesDownload Raw Back to root
1#pragma once2 3#include <string>4#include <vector>5#include <memory>6#include <atomic>7#include <thread>8#include <random>9#include <mutex>10#include <unordered_map>11 12#include "Common.hpp"13#include "ThreadSafeQueue.hpp"14#include "Config.hpp"15 16class AlphaVantageClient {17public:18    AlphaVantageClient(const std::vector<std::string>& symbols,19                       const std::string& api_key,20                       const AppConfig& config,21                       std::shared_ptr<ThreadSafeQueue<MarketTick>> queue);22    ~AlphaVantageClient();23 24    void start();25    void stop();26    void pause();27    void resume();28    bool is_paused() const;29    void request_reset();30    void set_symbols(const std::vector<std::string>& symbols);31    std::vector<std::string> get_symbols() const;32 33private:34    void polling_loop();35    MarketTick fetch_quote(const std::string& symbol);36    std::vector<MarketTick> expand_option_chain(const MarketTick& base);37    double compute_option_market_price(double spot, double strike, double T, double r, OptionType type) const;38    double synthetic_spot(const std::string& symbol);39 40    std::vector<std::string> symbols_;41    std::string api_key_;42    AppConfig config_;43    std::shared_ptr<ThreadSafeQueue<MarketTick>> queue_;44    std::atomic<bool> running_{false};45    std::unique_ptr<std::thread> thread_;46    std::atomic<size_t> symbol_index_{0};47    std::atomic<bool> paused_{false};48    std::atomic<bool> reset_requested_{false};49    mutable std::mutex symbols_mutex_;50};51