From 9d7cf47fc7cbb1e8212ebe17d83a34a43579a34e Mon Sep 17 00:00:00 2001 From: Ethan Havemann Date: Mon, 14 Aug 2023 21:40:27 -0700 Subject: [PATCH 01/16] sync commit --- README.md | 2 +- src/main.cpp | 6 ++++++ tst/temp.cpp | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 src/main.cpp diff --git a/README.md b/README.md index 277e7c1..5227c8e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# unnamed learning project +# Part 0: Debugging, Logging, and PRs. diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..64d94ae --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,6 @@ +import + + int main(){ + std::cout << "Hello, World!\n"; +return 0; +} \ No newline at end of file diff --git a/tst/temp.cpp b/tst/temp.cpp index 9c595a6..2180533 100644 --- a/tst/temp.cpp +++ b/tst/temp.cpp @@ -1 +1 @@ -temp +#include From 04e108b677295defe70a4fe68514966bcc1a9b5a Mon Sep 17 00:00:00 2001 From: = Date: Mon, 14 Aug 2023 21:48:54 -0700 Subject: [PATCH 02/16] Versioning --- CMakeLists.txt | 12 ++++++++++-- src/main.cpp | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32abacf..5d5bde0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.21) project(learnsomething LANGUAGES CXX) -#Make C++ 20 required. -set(CMAKE_CXX_STANDARD 20) +#Make C++ 17 required. +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) @@ -15,3 +15,11 @@ FetchContent_Declare( GIT_TAG release-1.11.0 ) FetchContent_MakeAvailable(googletest) + +add_executable(TradeRiskTracker) + +target_sources(TradeRiskTracker PRIVATE + ${CMAKE_SOURCE_DIR}/src/main.cpp +) + +target_link_libraries(TradeRiskTracker PRIVATE gtest_main) diff --git a/src/main.cpp b/src/main.cpp index 64d94ae..3aad228 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,6 @@ -import +#include int main(){ std::cout << "Hello, World!\n"; return 0; -} \ No newline at end of file +} From 91f1d1dfcbdbb88089a60aabb667d4def7315c44 Mon Sep 17 00:00:00 2001 From: Ethan Havemann Date: Tue, 15 Aug 2023 07:41:44 -0700 Subject: [PATCH 03/16] sync --- src/main.cpp | 7 ++++--- tst/temp.cpp | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3aad228..57c8336 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,7 @@ #include - int main(){ - std::cout << "Hello, World!\n"; -return 0; +int main() +{ + std::cout << "Hello, World!\n"; + return 0; } diff --git a/tst/temp.cpp b/tst/temp.cpp index 2180533..8670018 100644 --- a/tst/temp.cpp +++ b/tst/temp.cpp @@ -1 +1,6 @@ #include + +TEST(Equality_Test, Four) +{ + EXPECT_EQ(4, 4) +} \ No newline at end of file From c36a4d77ceac9ed4873442a99e50ee3b4332bc72 Mon Sep 17 00:00:00 2001 From: Ethan Havemann Date: Tue, 15 Aug 2023 22:07:39 -0700 Subject: [PATCH 04/16] why tests borked --- CMakeLists.txt | 25 +++++++++++++++++++------ tst/temp.cpp | 11 +++++++---- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d5bde0..3c71093 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ -#Declare the project and it's langugages +# Declare the project and its languages cmake_minimum_required(VERSION 3.21) project(learnsomething LANGUAGES CXX) -#Make C++ 17 required. +# Make C++ 17 required. set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -#Fetch GTest +# Fetch GTest include(FetchContent) FetchContent_Declare( googletest @@ -16,10 +16,23 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(googletest) -add_executable(TradeRiskTracker) - -target_sources(TradeRiskTracker PRIVATE +# Add the main executable and its sources +add_executable(TradeRiskTracker ${CMAKE_SOURCE_DIR}/src/main.cpp ) +# Add the test executable and its sources +add_executable(TradeRiskTrackerTests + ${CMAKE_SOURCE_DIR}/tst/temp.cpp +) + +# Link the main executable with Google Test target_link_libraries(TradeRiskTracker PRIVATE gtest_main) + +# Link the test executable with Google Test +target_link_libraries(TradeRiskTrackerTests PRIVATE gtest_main) + +# Include Google Test +include(GoogleTest) +gtest_discover_tests(TradeRiskTrackerTests) + diff --git a/tst/temp.cpp b/tst/temp.cpp index 8670018..5a57e13 100644 --- a/tst/temp.cpp +++ b/tst/temp.cpp @@ -1,6 +1,9 @@ #include -TEST(Equality_Test, Four) -{ - EXPECT_EQ(4, 4) -} \ No newline at end of file +// Demonstrate some basic assertions. +TEST(HelloTest, BasicAssertions) { + // Expect two strings not to be equal. + EXPECT_STRNE("hello", "world"); + // Expect equality. + EXPECT_EQ(7 * 6, 42); +} From 57213dccba60ca7a453df21b43892a8cd73ec6f1 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 16 Aug 2023 07:11:45 -0700 Subject: [PATCH 05/16] bump --- CMakeLists.txt | 1 + src/Trade.cpp | 3 +++ src/Trade.h | 12 ++++++++++++ src/main.cpp | 7 ++++++- 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/Trade.cpp create mode 100644 src/Trade.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c71093..2da07f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ FetchContent_MakeAvailable(googletest) # Add the main executable and its sources add_executable(TradeRiskTracker ${CMAKE_SOURCE_DIR}/src/main.cpp + ${CMAKE_SOURCE_DIR}/src/Trade.cpp ) # Add the test executable and its sources diff --git a/src/Trade.cpp b/src/Trade.cpp new file mode 100644 index 0000000..b71c09c --- /dev/null +++ b/src/Trade.cpp @@ -0,0 +1,3 @@ +#include "Trade.h" + +Trade::Trade(int q, bool buy, float p) : quantity(q), side(buy), price(p) {}; diff --git a/src/Trade.h b/src/Trade.h new file mode 100644 index 0000000..c986357 --- /dev/null +++ b/src/Trade.h @@ -0,0 +1,12 @@ +#ifndef TRADE_H +#define TRADE_H + +class Trade { +public: + int quantity; + bool side; + float price; + Trade(int q, bool buy, float p); +}; + +#endif // TRADE_H diff --git a/src/main.cpp b/src/main.cpp index 57c8336..608ad64 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,12 @@ #include +#include "Trade.h" int main() -{ +{ + int price = 7; + bool side = false; + float quant = 1.2; + Trade aTrade(price, side, quant); std::cout << "Hello, World!\n"; return 0; } From f19973d0e03f1a0b0719d1681fac23478a9b8fa7 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 16 Aug 2023 07:56:46 -0700 Subject: [PATCH 06/16] func for b0 --- .gitignore | 3 ++- CMakeLists.txt | 21 +++++++++++++-------- src/init.cpp | 0 src/main.cpp | 2 +- src/risktracker.cpp | 22 ++++++++++++++++++++++ src/risktracker.h | 19 +++++++++++++++++++ src/{Trade.cpp => trade.cpp} | 3 ++- src/{Trade.h => trade.h} | 0 tst/temp.cpp | 1 + 9 files changed, 60 insertions(+), 11 deletions(-) delete mode 100644 src/init.cpp create mode 100644 src/risktracker.cpp create mode 100644 src/risktracker.h rename src/{Trade.cpp => trade.cpp} (57%) rename src/{Trade.h => trade.h} (100%) diff --git a/.gitignore b/.gitignore index d163863..e8d09c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -build/ \ No newline at end of file +build/ +.idea/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 2da07f1..bcbd421 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,22 +10,23 @@ set(CMAKE_CXX_EXTENSIONS OFF) # Fetch GTest include(FetchContent) FetchContent_Declare( - googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.11.0 + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG release-1.11.0 ) FetchContent_MakeAvailable(googletest) # Add the main executable and its sources add_executable(TradeRiskTracker - ${CMAKE_SOURCE_DIR}/src/main.cpp - ${CMAKE_SOURCE_DIR}/src/Trade.cpp -) + ${CMAKE_SOURCE_DIR}/src/main.cpp + ${CMAKE_SOURCE_DIR}/src/trade.cpp + ${CMAKE_SOURCE_DIR}/src/risktracker.cpp + ) # Add the test executable and its sources add_executable(TradeRiskTrackerTests - ${CMAKE_SOURCE_DIR}/tst/temp.cpp -) + ${CMAKE_SOURCE_DIR}/tst/temp.cpp + ) # Link the main executable with Google Test target_link_libraries(TradeRiskTracker PRIVATE gtest_main) @@ -37,3 +38,7 @@ target_link_libraries(TradeRiskTrackerTests PRIVATE gtest_main) include(GoogleTest) gtest_discover_tests(TradeRiskTrackerTests) +# Add the src directory to include path for the tests +target_include_directories(TradeRiskTrackerTests PRIVATE + ${CMAKE_SOURCE_DIR}/src + ) diff --git a/src/init.cpp b/src/init.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/src/main.cpp b/src/main.cpp index 608ad64..5a23bb1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,5 @@ #include -#include "Trade.h" +#include "trade.h" int main() { diff --git a/src/risktracker.cpp b/src/risktracker.cpp new file mode 100644 index 0000000..4822eff --- /dev/null +++ b/src/risktracker.cpp @@ -0,0 +1,22 @@ +// +// Created by Ethan on 8/16/2023. +// + +#include "risktracker.h" + +RiskTracker::RiskTracker(float x, std::vector trades) : totalRisk(x), pendingTrades(trades) {}; + +int RiskTracker::updateRisk() { + float runningSum = 0; + for (const auto& x : this -> pendingTrades) { + if (x.side) { //we purchase risk + runningSum += (x.price * x.quantity); + } + else { + runningSum -= (x.price * x.quantity); + } + } + this -> totalRisk += runningSum; + return 0; +} + diff --git a/src/risktracker.h b/src/risktracker.h new file mode 100644 index 0000000..f6a6245 --- /dev/null +++ b/src/risktracker.h @@ -0,0 +1,19 @@ +// +// Created by Ethan on 8/16/2023. +// +#include +#include "trade.h" + +#ifndef LEARNSOMETHING_RISKTRACKER_H +#define LEARNSOMETHING_RISKTRACKER_H + +class RiskTracker { +public: + float totalRisk = 0; + std::vector pendingTrades; + TradeRiskTracker(float x, std::vector trades); + int updateRisk(); + +}; + +#endif //LEARNSOMETHING_RISKTRACKER_H diff --git a/src/Trade.cpp b/src/trade.cpp similarity index 57% rename from src/Trade.cpp rename to src/trade.cpp index b71c09c..094b0a0 100644 --- a/src/Trade.cpp +++ b/src/trade.cpp @@ -1,3 +1,4 @@ -#include "Trade.h" +#include "trade.h" +//Initialize with the initializer list. Trade::Trade(int q, bool buy, float p) : quantity(q), side(buy), price(p) {}; diff --git a/src/Trade.h b/src/trade.h similarity index 100% rename from src/Trade.h rename to src/trade.h diff --git a/tst/temp.cpp b/tst/temp.cpp index 5a57e13..e15f952 100644 --- a/tst/temp.cpp +++ b/tst/temp.cpp @@ -1,3 +1,4 @@ +#include "trade.h" #include // Demonstrate some basic assertions. From 5a74b4f6cdf6c78a8fef3577a7429cfd29592d3d Mon Sep 17 00:00:00 2001 From: = Date: Wed, 16 Aug 2023 21:49:43 -0700 Subject: [PATCH 07/16] taskfile, most code --- CMakeLists.txt | 54 ++++++++++++++++++----------------- Taskfile.yml | 15 ++++++++++ src/main.cpp | 13 +++++++-- src/risktracker.cpp | 14 +++++---- src/risktracker.h | 7 +++-- tst/test_trade.cpp | 9 ++++++ tst/test_traderisktracker.cpp | 8 ++++++ 7 files changed, 85 insertions(+), 35 deletions(-) create mode 100644 Taskfile.yml create mode 100644 tst/test_trade.cpp create mode 100644 tst/test_traderisktracker.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index bcbd421..b9c3551 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,44 +1,46 @@ -# Declare the project and its languages cmake_minimum_required(VERSION 3.21) project(learnsomething LANGUAGES CXX) -# Make C++ 17 required. +# GoogleTest requires at least C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) -# Fetch GTest include(FetchContent) FetchContent_Declare( googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.11.0 + URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip ) +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) #windows tings FetchContent_MakeAvailable(googletest) +enable_testing() -# Add the main executable and its sources -add_executable(TradeRiskTracker +add_executable( + TradeRiskTracker ${CMAKE_SOURCE_DIR}/src/main.cpp ${CMAKE_SOURCE_DIR}/src/trade.cpp ${CMAKE_SOURCE_DIR}/src/risktracker.cpp - ) +) +target_include_directories( + TradeRiskTracker PRIVATE + ${CMAKE_SOURCE_DIR}/src +) +target_link_libraries( + TradeRiskTracker + GTest::gtest_main +) -# Add the test executable and its sources -add_executable(TradeRiskTrackerTests +add_executable( + TradeRiskTrackerTests + ${CMAKE_SOURCE_DIR}/tst/test_trade.cpp ${CMAKE_SOURCE_DIR}/tst/temp.cpp - ) - -# Link the main executable with Google Test -target_link_libraries(TradeRiskTracker PRIVATE gtest_main) - -# Link the test executable with Google Test -target_link_libraries(TradeRiskTrackerTests PRIVATE gtest_main) - -# Include Google Test -include(GoogleTest) -gtest_discover_tests(TradeRiskTrackerTests) - -# Add the src directory to include path for the tests -target_include_directories(TradeRiskTrackerTests PRIVATE + ${CMAKE_SOURCE_DIR}/tst/test_traderisktracker.cpp + ${CMAKE_SOURCE_DIR}/src/trade.cpp +) +target_include_directories( + TradeRiskTrackerTests PRIVATE ${CMAKE_SOURCE_DIR}/src - ) +) +target_link_libraries( + TradeRiskTrackerTests + GTest::gtest_main +) diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..10bd462 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,15 @@ +version: '3' + +tasks: + build: + dir: '{{.USER_WORKING_DIR}}' + cmds: + - cmake .. + - cmake --build . + + test: + dir: '{{.USER_WORKING_DIR}}' + cmds: + - cmake .. + - cmake --build . + - ./TradeRiskTrackerTests diff --git a/src/main.cpp b/src/main.cpp index 5a23bb1..deaeb20 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,12 +1,21 @@ #include +#include + #include "trade.h" +#include "risktracker.h" -int main() -{ +int main() { int price = 7; bool side = false; float quant = 1.2; Trade aTrade(price, side, quant); + std::vector trades; + trades.push_back(aTrade); + RiskTracker riskTracker(0.0, trades); + Trade bTrade(7, false, 1.6); + riskTracker.addTrade(bTrade); + riskTracker.updateRisk(); + std::cout << riskTracker.totalRisk << "\n"; std::cout << "Hello, World!\n"; return 0; } diff --git a/src/risktracker.cpp b/src/risktracker.cpp index 4822eff..91d2fba 100644 --- a/src/risktracker.cpp +++ b/src/risktracker.cpp @@ -4,19 +4,23 @@ #include "risktracker.h" -RiskTracker::RiskTracker(float x, std::vector trades) : totalRisk(x), pendingTrades(trades) {}; +RiskTracker::RiskTracker(float x, std::vector trades) : totalRisk(x), pendingTrades(trades) {}; int RiskTracker::updateRisk() { float runningSum = 0; - for (const auto& x : this -> pendingTrades) { + for (const auto &x: this->pendingTrades) { if (x.side) { //we purchase risk runningSum += (x.price * x.quantity); - } - else { + } else { runningSum -= (x.price * x.quantity); } } - this -> totalRisk += runningSum; + this->totalRisk += runningSum; + return 0; +} + +int RiskTracker::addTrade(Trade trade) { + this->pendingTrades.push_back(trade); return 0; } diff --git a/src/risktracker.h b/src/risktracker.h index f6a6245..ef58431 100644 --- a/src/risktracker.h +++ b/src/risktracker.h @@ -10,10 +10,13 @@ class RiskTracker { public: float totalRisk = 0; - std::vector pendingTrades; - TradeRiskTracker(float x, std::vector trades); + std::vector pendingTrades; + + RiskTracker(float x, std::vector trades); + int updateRisk(); + int addTrade(Trade trade); }; #endif //LEARNSOMETHING_RISKTRACKER_H diff --git a/tst/test_trade.cpp b/tst/test_trade.cpp new file mode 100644 index 0000000..684b36e --- /dev/null +++ b/tst/test_trade.cpp @@ -0,0 +1,9 @@ +#include "trade.h" +#include + +TEST(TRTTest, TradeInit) { + Trade testTrade(7, true, 1.2); + EXPECT_EQ(testTrade.quantity, 7); + EXPECT_NEAR(testTrade.price, 1.2, 1e-6); //fp + EXPECT_EQ(testTrade.side, true); +} \ No newline at end of file diff --git a/tst/test_traderisktracker.cpp b/tst/test_traderisktracker.cpp new file mode 100644 index 0000000..d553178 --- /dev/null +++ b/tst/test_traderisktracker.cpp @@ -0,0 +1,8 @@ +#include "trade.h" +#include "risktracker.h" +#include + +Trade testTrade(7, true, 1.2); +TEST(TRTTest, TrackerInit) { + EXPECT_EQ(4,4); +} \ No newline at end of file From 251443e85689387e9e76d37d6942e75a8e50d387 Mon Sep 17 00:00:00 2001 From: = Date: Fri, 18 Aug 2023 16:05:44 -0700 Subject: [PATCH 08/16] B0 Alpha Completion --- CMakeLists.txt | 13 +++++++++++-- src/main.cpp | 25 ++++++++++++++++--------- src/risktracker.cpp | 6 +++++- src/risktracker.h | 2 ++ tst/temp.cpp | 10 ---------- tst/test_trade.cpp | 2 +- tst/test_traderisktracker.cpp | 28 +++++++++++++++++++++++++--- 7 files changed, 60 insertions(+), 26 deletions(-) delete mode 100644 tst/temp.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index b9c3551..8c2961b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,6 @@ cmake_minimum_required(VERSION 3.21) project(learnsomething LANGUAGES CXX) -# GoogleTest requires at least C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -14,6 +13,14 @@ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) #windows tings FetchContent_MakeAvailable(googletest) enable_testing() +FetchContent_Declare( + quill + GIT_REPOSITORY https://github.com/odygrd/quill.git + GIT_TAG master +) + +FetchContent_MakeAvailable(quill) + add_executable( TradeRiskTracker ${CMAKE_SOURCE_DIR}/src/main.cpp @@ -24,17 +31,19 @@ target_include_directories( TradeRiskTracker PRIVATE ${CMAKE_SOURCE_DIR}/src ) + target_link_libraries( TradeRiskTracker GTest::gtest_main + quill ) add_executable( TradeRiskTrackerTests ${CMAKE_SOURCE_DIR}/tst/test_trade.cpp - ${CMAKE_SOURCE_DIR}/tst/temp.cpp ${CMAKE_SOURCE_DIR}/tst/test_traderisktracker.cpp ${CMAKE_SOURCE_DIR}/src/trade.cpp + ${CMAKE_SOURCE_DIR}/src/risktracker.cpp ) target_include_directories( TradeRiskTrackerTests PRIVATE diff --git a/src/main.cpp b/src/main.cpp index deaeb20..d8d16da 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,21 +1,28 @@ #include #include +#include #include "trade.h" #include "risktracker.h" int main() { - int price = 7; - bool side = false; - float quant = 1.2; - Trade aTrade(price, side, quant); + //logging setup start + quill::start(); + quill::Logger *logger = quill::create_logger("RiskTrackingLogger"); + logger->set_log_level(quill::LogLevel::TraceL2); + // logging setup end + std::vector trades; - trades.push_back(aTrade); + trades.push_back(Trade(7, false, 1.4)); RiskTracker riskTracker(0.0, trades); - Trade bTrade(7, false, 1.6); - riskTracker.addTrade(bTrade); + QUILL_LOG_INFO(logger, "Current risk held is {}.", riskTracker.getRisk()); + riskTracker.addTrade(Trade(7, false, 1.6)); riskTracker.updateRisk(); - std::cout << riskTracker.totalRisk << "\n"; - std::cout << "Hello, World!\n"; + QUILL_LOG_INFO(logger, "Current risk held is {}.", riskTracker.getRisk()); + riskTracker.addTrade(Trade(44, true, 2.3)); + riskTracker.updateRisk(); + QUILL_LOG_INFO(logger, "Current risk held is {}.", riskTracker.getRisk()); + riskTracker.updateRisk(); + QUILL_LOG_INFO(logger, "Current risk held is {}.", riskTracker.getRisk()); return 0; } diff --git a/src/risktracker.cpp b/src/risktracker.cpp index 91d2fba..6e0938e 100644 --- a/src/risktracker.cpp +++ b/src/risktracker.cpp @@ -9,7 +9,7 @@ RiskTracker::RiskTracker(float x, std::vector trades) : totalRisk(x), pe int RiskTracker::updateRisk() { float runningSum = 0; for (const auto &x: this->pendingTrades) { - if (x.side) { //we purchase risk + if (x.side) { runningSum += (x.price * x.quantity); } else { runningSum -= (x.price * x.quantity); @@ -24,3 +24,7 @@ int RiskTracker::addTrade(Trade trade) { return 0; } +float RiskTracker::getRisk() { + return this->totalRisk; +} + diff --git a/src/risktracker.h b/src/risktracker.h index ef58431..f459059 100644 --- a/src/risktracker.h +++ b/src/risktracker.h @@ -17,6 +17,8 @@ class RiskTracker { int updateRisk(); int addTrade(Trade trade); + + float getRisk(); }; #endif //LEARNSOMETHING_RISKTRACKER_H diff --git a/tst/temp.cpp b/tst/temp.cpp deleted file mode 100644 index e15f952..0000000 --- a/tst/temp.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "trade.h" -#include - -// Demonstrate some basic assertions. -TEST(HelloTest, BasicAssertions) { - // Expect two strings not to be equal. - EXPECT_STRNE("hello", "world"); - // Expect equality. - EXPECT_EQ(7 * 6, 42); -} diff --git a/tst/test_trade.cpp b/tst/test_trade.cpp index 684b36e..7b876ac 100644 --- a/tst/test_trade.cpp +++ b/tst/test_trade.cpp @@ -1,7 +1,7 @@ #include "trade.h" #include -TEST(TRTTest, TradeInit) { +TEST(TradeRiskTrackerTest, TradeInit) { Trade testTrade(7, true, 1.2); EXPECT_EQ(testTrade.quantity, 7); EXPECT_NEAR(testTrade.price, 1.2, 1e-6); //fp diff --git a/tst/test_traderisktracker.cpp b/tst/test_traderisktracker.cpp index d553178..6e4423c 100644 --- a/tst/test_traderisktracker.cpp +++ b/tst/test_traderisktracker.cpp @@ -1,8 +1,30 @@ #include "trade.h" #include "risktracker.h" #include +#include -Trade testTrade(7, true, 1.2); -TEST(TRTTest, TrackerInit) { - EXPECT_EQ(4,4); +TEST(TradeRiskTrackerTest, TrackerInit) { + std::vector trackedTrades; + Trade testTrade1(7, true, 1.2); + Trade testTrade2(7, false, 1.2); + trackedTrades.push_back(testTrade1); + trackedTrades.push_back(testTrade2); + RiskTracker riskTracker(0, trackedTrades); + EXPECT_EQ(riskTracker.getRisk(), 0); + riskTracker.updateRisk(); + EXPECT_EQ(riskTracker.getRisk(), 0); + Trade testTrade3(14, true, 1.55); + riskTracker.addTrade(testTrade3); + riskTracker.updateRisk(); + EXPECT_NEAR(riskTracker.getRisk(), 21.7, 1e-4); +} + +TEST(TradeRiskTrackerTest, TrackerZeroTest) { + std::vector trackedTrades; + RiskTracker riskTracker(0, trackedTrades); + EXPECT_EQ(riskTracker.getRisk(), 0); + riskTracker.addTrade(Trade(44, true, 1.6)); + riskTracker.addTrade(Trade(44, false, 1.6)); + riskTracker.updateRisk(); + EXPECT_EQ(riskTracker.getRisk(), 0); } \ No newline at end of file From 00b06e4500b41c60171ed9a9340476a466494481 Mon Sep 17 00:00:00 2001 From: Ethan Havemann Date: Fri, 18 Aug 2023 21:06:58 -0700 Subject: [PATCH 09/16] Update README.md --- README.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README.md b/README.md index 5227c8e..c9908dc 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,29 @@ # Part 0: Debugging, Logging, and PRs. +## Scenario +It is your first day as a SWE at a trading firm that specializes in trading Oleos, a fictional currency. Your team's intern, during their final week, created this risk tracking utility to help traders keep track of their risk exposure. Unfortunately, the intern has already left for their next internship and you are left to debug and fix the code. The traders tell you that the script is not working as expected and they are losing money because of it. You have been tasked with fixing the script and ensuring that it is working as expected. Consider the following tips: +- Read the code and understand what it is doing - all of the unit tests will pass. +- Use the logging library to help you understand what is happening in the code. + +## Instructions +- [ ] Fork this repo for yourself +- [ ] Clone the repo locally (Ensure you are on Branch 0!) +- [ ] Navigate to the repository root and use `mkdir build && cd build` to create a build directory and navigate to it +- [ ] Use `task build` to build the project, `./TradeRiskTracker` to run the executable, and `task test` to run the tests +- [ ] Identify the bug in the script and fix it +- [ ] Update unit tests to cover the bug +- [ ] Create a PR answering the questions below and send it to your project mentor + + +## Questions +Please include the following when you are writing your PR: +General things: +1. What is the purpose of this PR? +2. What changes did you make? Why? +3. What bugs did you find while testing? + +This PR Specific: +1. What was the bug you found? +2. How did you address it? +3. What did you struggle with? +4. Is there anything you would change about this step? \ No newline at end of file From 30581239947b0d1cb266febf4b82693ae7bdec17 Mon Sep 17 00:00:00 2001 From: Ethan Havemann <94627102+echavemann@users.noreply.github.com> Date: Fri, 18 Aug 2023 21:35:10 -0700 Subject: [PATCH 10/16] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e8d09c1..40b49e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build/ -.idea/ \ No newline at end of file +.idea/ +.__DS_STORE__ From aa6b004a88753834ece9129a7dd16cdfecb69deb Mon Sep 17 00:00:00 2001 From: Ethan Havemann Date: Thu, 14 Sep 2023 09:16:06 -0500 Subject: [PATCH 11/16] Update Taskfile --- Taskfile.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 10bd462..88c3b03 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -2,13 +2,13 @@ version: '3' tasks: build: - dir: '{{.USER_WORKING_DIR}}' + dir: './build' cmds: - cmake .. - cmake --build . test: - dir: '{{.USER_WORKING_DIR}}' + dir: './build' cmds: - cmake .. - cmake --build . From d1adabfcb76572e564d6fbe2e09e7c92883640c5 Mon Sep 17 00:00:00 2001 From: Chris Minn <105378107+minnce@users.noreply.github.com> Date: Fri, 15 Sep 2023 17:30:55 -0500 Subject: [PATCH 12/16] hotfix --- tst/test_traderisktracker.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tst/test_traderisktracker.cpp b/tst/test_traderisktracker.cpp index 6e4423c..9904e96 100644 --- a/tst/test_traderisktracker.cpp +++ b/tst/test_traderisktracker.cpp @@ -10,9 +10,9 @@ TEST(TradeRiskTrackerTest, TrackerInit) { trackedTrades.push_back(testTrade1); trackedTrades.push_back(testTrade2); RiskTracker riskTracker(0, trackedTrades); - EXPECT_EQ(riskTracker.getRisk(), 0); + EXPECT_NEAR(riskTracker.getRisk(), 0); riskTracker.updateRisk(); - EXPECT_EQ(riskTracker.getRisk(), 0); + EXPECT_NEAR(riskTracker.getRisk(), 0); Trade testTrade3(14, true, 1.55); riskTracker.addTrade(testTrade3); riskTracker.updateRisk(); @@ -22,9 +22,9 @@ TEST(TradeRiskTrackerTest, TrackerInit) { TEST(TradeRiskTrackerTest, TrackerZeroTest) { std::vector trackedTrades; RiskTracker riskTracker(0, trackedTrades); - EXPECT_EQ(riskTracker.getRisk(), 0); + EXPECT_NEAR(riskTracker.getRisk(), 0); riskTracker.addTrade(Trade(44, true, 1.6)); riskTracker.addTrade(Trade(44, false, 1.6)); riskTracker.updateRisk(); - EXPECT_EQ(riskTracker.getRisk(), 0); -} \ No newline at end of file + EXPECT_NEAR(riskTracker.getRisk(), 0); +} From 43647296eb498e7ada846084fe0ac7f9b22adcfd Mon Sep 17 00:00:00 2001 From: Chris Minn <105378107+minnce@users.noreply.github.com> Date: Fri, 15 Sep 2023 17:32:02 -0500 Subject: [PATCH 13/16] hotfix --- tst/test_traderisktracker.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tst/test_traderisktracker.cpp b/tst/test_traderisktracker.cpp index 9904e96..8f8117f 100644 --- a/tst/test_traderisktracker.cpp +++ b/tst/test_traderisktracker.cpp @@ -10,9 +10,9 @@ TEST(TradeRiskTrackerTest, TrackerInit) { trackedTrades.push_back(testTrade1); trackedTrades.push_back(testTrade2); RiskTracker riskTracker(0, trackedTrades); - EXPECT_NEAR(riskTracker.getRisk(), 0); + EXPECT_NEAR(riskTracker.getRisk(), 0, 1e-4); riskTracker.updateRisk(); - EXPECT_NEAR(riskTracker.getRisk(), 0); + EXPECT_NEAR(riskTracker.getRisk(), 0, 1e-4); Trade testTrade3(14, true, 1.55); riskTracker.addTrade(testTrade3); riskTracker.updateRisk(); @@ -22,9 +22,9 @@ TEST(TradeRiskTrackerTest, TrackerInit) { TEST(TradeRiskTrackerTest, TrackerZeroTest) { std::vector trackedTrades; RiskTracker riskTracker(0, trackedTrades); - EXPECT_NEAR(riskTracker.getRisk(), 0); + EXPECT_NEAR(riskTracker.getRisk(), 0, 1e-4); riskTracker.addTrade(Trade(44, true, 1.6)); riskTracker.addTrade(Trade(44, false, 1.6)); riskTracker.updateRisk(); - EXPECT_NEAR(riskTracker.getRisk(), 0); + EXPECT_NEAR(riskTracker.getRisk(), 0, 1e-4); } From f24aae9f443f8124a71b2ef24c885ff559480188 Mon Sep 17 00:00:00 2001 From: Ethan Havemann <94627102+echavemann@users.noreply.github.com> Date: Mon, 18 Sep 2023 12:06:49 -0700 Subject: [PATCH 14/16] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c9908dc..2200342 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ It is your first day as a SWE at a trading firm that specializes in trading Oleo - Use the logging library to help you understand what is happening in the code. ## Instructions +- [ ] Add yourself to the `progress.md` file on the main branch. - [ ] Fork this repo for yourself - [ ] Clone the repo locally (Ensure you are on Branch 0!) - [ ] Navigate to the repository root and use `mkdir build && cd build` to create a build directory and navigate to it @@ -26,4 +27,4 @@ This PR Specific: 1. What was the bug you found? 2. How did you address it? 3. What did you struggle with? -4. Is there anything you would change about this step? \ No newline at end of file +4. Is there anything you would change about this step? From b17ce57221de7a4989864b77938a226fa66770f1 Mon Sep 17 00:00:00 2001 From: Daniel Lee Date: Wed, 27 Sep 2023 21:22:57 -0500 Subject: [PATCH 15/16] Bugfix: Clear Pending Orders after updating risk --- src/risktracker.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/risktracker.cpp b/src/risktracker.cpp index 6e0938e..94f0b4c 100644 --- a/src/risktracker.cpp +++ b/src/risktracker.cpp @@ -16,6 +16,7 @@ int RiskTracker::updateRisk() { } } this->totalRisk += runningSum; + this->pendingTrades.clear(); return 0; } From 1ed2a5c12babcfbb3b718324cfcb05c1152f4899 Mon Sep 17 00:00:00 2001 From: Daniel Lee Date: Wed, 11 Oct 2023 19:47:53 -0500 Subject: [PATCH 16/16] cleared pending trades + unit test --- src/main.cpp | 2 +- tst/test_traderisktracker.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index d8d16da..9787ec1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,7 +11,7 @@ int main() { quill::Logger *logger = quill::create_logger("RiskTrackingLogger"); logger->set_log_level(quill::LogLevel::TraceL2); // logging setup end - + std::vector trades; trades.push_back(Trade(7, false, 1.4)); RiskTracker riskTracker(0.0, trades); diff --git a/tst/test_traderisktracker.cpp b/tst/test_traderisktracker.cpp index 8f8117f..4c07479 100644 --- a/tst/test_traderisktracker.cpp +++ b/tst/test_traderisktracker.cpp @@ -28,3 +28,13 @@ TEST(TradeRiskTrackerTest, TrackerZeroTest) { riskTracker.updateRisk(); EXPECT_NEAR(riskTracker.getRisk(), 0, 1e-4); } + +TEST(TradeRiskTrackerTest, UpdateRiskTrackerTest) { + std::vector trackedTrades; + RiskTracker riskTracker(0, trackedTrades); + riskTracker.addTrade(Trade(44, true, 1.6)); + riskTracker.addTrade(Trade(44, false, 1.6)); + riskTracker.updateRisk(); + EXPECT_TRUE(riskTracker.pendingTrades.empty()); + +} \ No newline at end of file