Improvements
- #528 smart matching on passive orders
- #544 market exposure refactor (*breaking change)
Bug Fixes
- #528 simulation processing on in flight requests
- #541 handle betTargetSize
- Example typo (@petercoles)
Libraries
- black upgraded to 21.12b0
Improvements
- #527 custom stream funcs / docs added
- #525 UML diagrams added to docs (@shashikhaya)
- get_order_from_bet_id optimisation (very slow with high order count)
Bug Fixes
- File type regression
Libraries
- betfairlightweight upgraded to 2.15.2
- black upgraded to 21.11b1
Improvements
- Performance docs added
Improvements
- #528 MarketOnCloseOrders not included in BacktestLoggingControl example
- #531 Include SP values in jupyterloggingcontrol
- MarketRecorder updates (@mberk)
Bug Fixes
- Missing clk handling in order and race stream
Improvements
- #522 add clk to output in market recorder (Breaking Change)
- #517 Extend selection exposures to whole market (@petercoles)
- Example strategies updated to remove whitespace on dump (1mb saved per raw file)
Libraries
- betfairlightweight upgraded to 2.15.1
Improvements
- Handle list of market filters in strategy
Bug Fixes
- #519 reset real datetime added to allow s3 download (RequestTimeTooSkewed)
Libraries
- black upgraded to 21.10b0
Bug Fixes
- detect_file_type handle tuple
Improvements
- SimulatedDateTime minor improvement
- detect_file_type added to log warning when backtesting
Libraries
- relax tenacity pinning >=7.0.0 <=8.0.1
Improvements
- #511 Make background worker function callable once
- #512 Allow access to real datetime via context manager
Libraries
- python 3.10 testing added
- betfairlightweight upgraded to 2.15.0
- black upgraded to 21.9b0
Bug Fixes
- #486 elapsed_seconds bug when async
Libraries
- betfairlightweight upgraded to 2.14.1
Improvements
- Restrict logging calls based on level to prevent info being called (slow)
- Restrict process and take_sp calls in simulated.py
- lru cache added to price_ticks_away
Improvements
- RaceCache optimisation
Bug Fixes
- #499 bugfix on market recording
Improvements
- Update to use listener_kwargs in _process rather than snap
Bug Fixes
- #499 missing market call on closure
Libraries
- betfairlightweight upgraded to 2.14.0
Improvements
- Backtest speed improvements
Improvements
- Temporary logging added for testing
Improvements
- Backtest speed improvements
- Raise error in controls when market or marketBook not available
Bug Fixes
- async not correctly pulled from config during transaction
Improvements
- process_current_orders optimisation
- market_version and elapsed_seconds_created added to order
- OrderStream logic improvement
- market.event refactored to filter on start time as well as eventId (FORECAST limitation)
- Example improvement (@petercoles)
Bug Fixes
- Correctly complete order in blotter when live
Improvements
- #489 countryCode filter added to backtesting
- Renamed config.hostname to config.customer_strategy_ref. This makes the use of the variable more explicit.
- WARNING: This change will affect users who set config.hostname. From this version onwards, they should set config.customer_strategy_ref.
- Docs / logging control updated
Bug Fixes
- #487 Backtesting transaction count maxing out (markets not ordered)
Libraries
- black upgraded to 21.8b0
Bug Fixes
- Prevent duplicate EC calls when backtesting
Improvements
- #480 Correctly simulate ClearedMarket event when backtesting/paper trading
Libraries
- betfairlightweight upgraded to 2.13.2
Bug Fixes
- #478 Listener kwargs / create bugfix
Bug Fixes
- #476 fixes and docs update for bflw 2.13.1
Libraries
- betfairlightweight upgraded to 2.13.1
- tenacity upgraded to 8.0.1
Improvements
- #472 Add order status and matched filter to blotter
- Assert on trading client lightweight
- OrderDataStream added to allow order stream data to be recorded as per market/race
Libraries
- betfairlightweight upgraded to 2.13.0
- black upgraded to 21.7b0
- python-json-logger upgraded to 2.0.2
Improvements
- #464 get session handling refactor to take oldest session
Bug Fixes
- #454 SP nr size adjustment (@jsphon)
- #464 wrong order state after multiple connection reset errors
Improvements
- #452 transaction force parameter (@flxbe)
- market date_time_created added
Bug Fixes
- #454 SP nr adjustments (@jsphon)
- Handle missing mc from historic files (@mlabour)
Bug Fixes
- #453 Replace Orders drop custom separator from order_id field
- Docs typo (@petercoles)
Libraries
- betfairlightweight upgraded to 2.12.2
- black upgraded to black==21.6b0
Bug Fixes
- Updates simulation class to use config latencies
Bug Fixes
- Set order to be executable after violating on market status (@lunswor)
Improvements
- Move simulated latencies to config (@lunswor)
- Add control to validate market status (@lunswor)
Bug Fixes
- MarketRecorder race condition on file load / remove txt only if aged
Libraries
- black upgraded to black==21.5b2
Bug Fixes
- Prevent race condition between execution and order stream
Improvements
- Process refactor to use current_order status (remove void/lapse to match betfair)
- Examples improvements
Bug Fixes
- Prevent race condition on executable/execution_complete and new orders
Improvements
- Market recorder refactored to have a single processor thread to remove blocking
Bug Fixes
- Add order stream start delay and snap pickup
- Missing update current order
Bug Fixes
- Logging control fix, trade event not triggered
Improvements
- Notes and market notes added to order (potential race condition fix on transaction)
Bug Fixes
- #433 Liability persistence types not checked for <= 2 decimal places (@petercoles)
Improvements
- Simulation optimisations
Bug Fixes
- #173 dead heat profit calculation (@lunswor)
- listenerKwargs inplay / MoC / SP orders fix (@jsphon)
Libraries
- black upgraded to 21.5b1
Bug Fixes
- #423 get_exposures() replace fix (@jsphon)
Improvements
- Stream retry timeout bumped to 60s
- Docs improved
- get_file_md tuple handing (race stream)
Libraries
- black upgraded to 21.5b0
- dependabot native added
Improvements
- #121 simulation improvements and further validations
Libraries
- black upgraded to 21.4b0
Bug Fixes
- Duplicate Trade logging handled and has_trade added to Blotter
Improvements
- 503 errors logged as warnings to prevent duplicate log messages propagating through to services such as sentry.io
Bug Fixes
- MarketRecorder example updated to handle orjson/speed use
Improvements
- #217 error handling improvements
Bug Fixes
- Blotter live orders mutable bugfix
- MarketRecorder example clean up fix
Improvements
- market_type filter enabled when backtesting markets
- Remove temp logging
Bug Fixes
- Validate logging typo
Improvements
- #404 Multi market processing (concurrent event market processing)
- strategy order placement depreciated (breaking change as per warning version 1.17.0)
- strategy.log_validation_failures depreciated (breaking change as per warning version 1.17.7)
- #185 Cleared order added to order object on closure (@arch4672)
- gzip market catalogue data in marketrecorder.py example
Bug Fixes
- Nasty bug fixed in the way live orders are completed when backtesting (has potentially impacted previous tests)
- Trade.create_order now correctly pulls handicap from trade (was defaulting to 0)
Improvements
- Blotter exposure refactoring out the get_worst_possible_profit method (@jsphon)
- Market recorder example updated to use gzip compression
Improvements
- Execution / thread pool state logging
- Default market recorder example to not remove files on clean up
Improvements
- Market recorder mode added to client (@jorgegarcia7)
- Further execution logging (trying to find time)
Improvements
- Logging control cleanup / docs
Bug Fixes
- missing if in process.py to check order status
Improvements
- order context added
Bug Fixes
- Prevent duplicate order logging control calls
Improvements
- async placeOrder handling added, defaults to False via config.py
- Execution logging improvements
Bug Fixes
- Handle race condition (seen daily) where cancel is not correctly update to execution complete
Improvements
- Remove session close in execution when removing stale sessions (very slow)
- Refactor closure worker to check all closed markets requiring clearing
Libraries
- betfairlightweight upgraded to 2.12.1
Improvements
- Allow kwargs to be passed to trade.create_order
- Correct handling off completed offset orders
Bug Fixes
- Prevent closure functions being called on a recorder closure
Improvements
- strategy.log_validation_failures marked for depreciation and logging pushed up to trading control
- strategy.multi_order_trades var added to allow multiple orders to be placed under a single trade
- RunnerContext trades made public
- Docs cleanup and unused trade vars removed
- config.max_workers renamed to max_execution_workers (*breaking change)
Bug Fixes
- Prevent double counting of trades if place called more than once
Improvements
- trade id added to context to prevent race condition and better visibility on live trades
Bug Fixes
- incorrect handling of replace on runner context fix (adds to live trade count)
Bug Fixes
- #382 replace order failure fix (no execute)
Improvements
- Transaction id and logging added
- max_workers moved to config to allow int to be configurable
Improvements
- Potential thread pool exhaustion logging added
Improvements
- Allow patching of stream retry wait arg
Bug Fixes
- Incorrect handling of potential exposure in control
Improvements
- Current and total transactions available from client
- blotter.strategy_selection_orders func added (speed improvement on exposure calc)
Bug Fixes
- Refactor of client transaction control to correctly apply the 5000 limit
Improvements
- Major refactor to order placement using Transaction class to allow user control over order placement
- Trading controls executed on place rather than OrderPackage level (Breaking change to controls)
- strategy order placement to be depreciated (Breaking change from version 1.18.0)
- OrderPackage no longer processed through the queue (quicker tick to trade)
- Error correctly raised on duplicate place calls
- Execution worker count bumped
Bug Fixes
- Minor fix when combining data and market stream strategies
Improvements
- Blotter strategy orders added for faster lookup
- Strategy name hash cached
- Minor selection_exposure optimisations
- Simulated optimisations
Improvements
- Various optimisations on pending_packages and low level listener updates
- Cache stream_id when backtesting
- Always run integrations tests (now possible with faster backtesting from bflw 2.12.0)
Improvements
- bflw changes / further listener optimisations
Libraries
- betfairlightweight upgraded to 2.12.0
Improvements
- Restrict catalogue requests to market version update
Bug Fixes
- #192 correctly lapse limit orders
Libraries
- betfairlightweight upgraded to 2.11.2
Bug Fixes
- Correctly handle runner removal / order void for LimitOnClose/MarketOnClose orders
Improvements
- Order execution args added on place/cancel/update/replace
- License update
- Example update (@lunswor)
Bug Fixes
- #358 dynamic keep alive (based on trading client)
Libraries
- py3.5 removed from setup.py
Improvements
- #356 Jupyter logging control added (POC) with info improvements
- #344 lookup cache added and info optimisations
- #327 correctly return orderStatus
- Middleware optimisation by only processing updated runners
- Minor test improvements
Libraries
- betfairlightweight upgraded to 2.11.1
Improvements
- Updates for bflw 2.11.0
- logging improved on orphan orders
Bug Fixes
- #347 incorrect adjustment factor (sub 1.01)
Libraries
- betfairlightweight upgraded to 2.11.0
Improvements
- Backtest market catalogue middleware example (@lunswor)
- #344 Initial work on improving calls when subscribed to 5k+ markets
Bug Fixes
- #342 market/limit on close order size remaining bug
Improvements
- 'on_process' function optimised
Libraries
- betfairlightweight upgraded to 2.10.2
Improvements
- Flaky flaky integration tests
Bug Fixes
- Missing 'on_process' function (now subclassed)
Bug Fixes
- Revert removal of add_stream (removed by accident)
Improvements
- Historic stream cleanup for bflw 2.10.1
- Adding logging of order validation
Libraries
- betfairlightweight upgraded to 2.10.1
Improvements
- Config event added and processed on start
Bug Fixes
- #320 prevent market on close limit order when below min bsp liability
Improvements
- Minor bug on initial init with calculate_traded func
Improvements
- Refactor on calculate_traded func (15% speed increase)
Bug Fixes
- Refactoring create_order_from_current, so that it is not dependent on the '-' separator (@jsphon)
Improvements
- Docs cleanup
Bug Fixes
- #318 process customer order ref
- Rounding on order properties
Improvements
- #310 typing update and bool return added on stream
- add min_bet_validation flag to prevent control checking min size
Bug Fixes
- filters out violated orders from being used to calculate the selection exposure (@lunswor)
- handle simulated cancel when size reduction is larger than size remaining
- pass correct size into create replace order based on api response
- #314 Calculates size_remaining from size and size_matched when not set from placeResponse
Improvements
- size reduction bug
Improvements
- _process_cleared_orders called on market closure when backtesting / paper trading
- size reduction handling added to simulated execution on cancel
- Add py3.9 actions test
Libraries
- betfairlightweight upgraded to 2.10.0 (exchange stream api release 10/11/20)
Improvements
- #297 add violation msg to order on violation
- Graceful worker shutdown
- Terminate worker example added
Libraries
- betfairlightweight upgraded to 2.9.2
- python-json-logger upgraded to 2.0.1
Improvements
- Prevent MarketBook latency logging when update is from a snap
Bug Fixes
- #291 Bug in calculated_unmatched_exposure func
Libraries
- betfairlightweight upgraded to 2.9.0 (#248 memory leak)
Improvements
- Updates the pricerecorder example method parameters (@lunswor)
- #248 Remove runner_context from strategy on market remove
- #287 order separator (jsphon)
Improvements
- #270 strategy exposure improvements on trading control
Bug Fixes
- Handle unhandled exceptions in execution
- Replace now fixed (regression on removal of order_package.market
- Backtest process orders now called before strategy calls impacts backtesting profit
Libraries
- python-json-logger upgraded to 2.0.0
Bug Fixes
- Missing book / bet_delay in live fix
Bug Fixes
- #248 completely remove circular reference to market->blotter
- Correct market closure when recording data (raw)
Bug Fixes
- #275 Laying Limit Orders, Persistence Type MARKET_ON_CLOSE (@jsphon)
- PR added to actions
Improvements
- #269 latency warning added
Bug Fixes
- #248 addition of weakref to try and break circular reference (@synapticarbors) + deletion of each event
Libraries
- betfairlightweight upgraded to 2.8.0 (orjson)
- black updated to 20.8b1
Improvements
- Minor refactor and test improvements on FlumineBacktest
- Tennis/inplayservice worker example added
Bug Fixes
- Validates runner is active on placeOrder when simulating (@lunswor)
- Complete.trade moved to when order or trade status updates rather than process.py, previously it was missing any orders that violated when no other orders active
Improvements
- #187 strategy and trade runner context additions
Bug Fixes
- Handling for SP orders on startup
- Bug fix on client control max orders when backtesting
Improvements
- invested migrated to executable_orders on RunnerContext *breaking change
- Use MarketCatalogue where available for market descriptions
- Create session added, sessions closed and deleted if stale for 200s or more
Bug Fixes
- Limit process to limit orders to prevent SP orders from being completed when not + test bug fix
Bug Fixes
- Prevent closed markets being removed when paper trading
- Fix missing MarketBook from market (closes #FLUMINE-PROD-EE)
Bug Fixes
- Prevent closed markets being removed when backtesting
- Adds check to check removal_adjustment_factor is not None when processing runner removal (@lunswor)
Improvements
- updates for bflw 2.7.2
Libraries
- betfairlightweight upgraded to 2.7.2
Bug Fixes
- Handle missing id in raw data (race stream)
- Handle no market passed to market recorder (race stream)
Improvements
- _process_raw_data refactored to create market objects and call market.closed_market on closure
Bug Fixes
- Docs typo (thanks @petercoles)
Libraries
- betfairlightweight upgraded to 2.7.1
Bug Fixes
- Add middleware moved to init, Simulated needs to be the first middleware
Improvements
- #180 client paper trade now implemented
- #193 initial work on multi client implementation
- #192 simulation improvements with handling on runner removal
Bug Fixes
- Move remove_markets logic to process_closed_markets (previously not called if no orders)
- Travis remove py3.5
Improvements
- update_market_notes refactor and move to utils to make patching easier
Bug Fixes
- Market.closed now updated when reopened + logging improvements
Improvements
- #184 package retry on error (limited to 3 with back-off)
- requests.Session now closed and deleted
Improvements
- #201 requests session kept and reused to reduce latency
- Middleware add/remove market functions added and integrated into Simulated
- Logging improvements
Libraries
- betfairlightweight upgraded to 2.6.0
Improvements
- Previous 'middle' and 'matched' added to simulated
Bug Fixes
- Simulated bug fix on when data is not recorded from the beginning
- Client control 'None' bug fix
Bug Fixes
- Reduce MC count (debugging seg fault)
Improvements
- Custom historical listener/stream added
- Large order count (per market) optimisations
- #203 client transaction count
- #224 multi market processing
Bug Fixes
- #221 RuntimeError: market/order looping
Libraries
- betfairlightweight upgraded to 2.5.0
Improvements
- market_notes added to Trade
- market removed after closed for 3600 seconds
- client.best_price_execution handling added
Improvements
- Simulated optimisations on matched size/price (@jsphon)
Libraries
- betfairlightweight upgraded to 2.4.0
Improvements
- #185 cleared orders meta implemented
- Order.elapsed_seconds_executable added
Improvements
- Error handling added to logging control
Bug Fixes
- Incorrect event type passed to log_control
Improvements
- #205 MarketBook publishTime added to simulated.matched / order.execution_complete time added
- Controls error message added
- Info properties improved
- Order/Trade .complete refactored
Bug Fixes
- Log order moved to after execution (missing betId)
Improvements
- Client passed in AccountBalance event
- PublishTime added to order (MarketBook)
- GH Actions fixed
Improvements
- #178 Client order stream disable/enable
- #179 Info properties
Bug Fixes
- #191 missing git config
Improvements
- #191 Github actions added for testing and deployment
Bug Fixes
- #195 refactor to prevent RuntimeError
Improvements
- #175 Update/Replace simulated handling
- Trade context manager added
Bug Fixes
- #163 selection exposure improvement
- BetfairExecution replace bugfix
Bug Fixes
- Sentry uses name in extra so do not override.
Improvements
- #186 Error handling when calling strategy functions
- Start delay bumped on workers and name changed
- Minor typos / cleanups
Improvements
- Missing Middleware inheritance
- get_sp added
Bug Fixes
- MarketCatalogue missing from Market when logged
Bug Fixes
- Market close bug
Improvements
- Market properties added
Bug Fixes
- Memory leak in historical stream fixed (queue)
- process_closed_market bug fix in process logic
Bug Fixes
- pypi bug?
Improvements
- Worker refactor to make init simpler when adding custom workers
Improvements
- Logging control added and integrated
- PriceRecorder example added
- Balance polling added
- Cleared Orders/Market polling added
- Trade.notes added
- Middleware moved to flumine level
- SimulatedMiddleware refactored to handle all logic
- Context added to worker functionality
Improvements
- Simulated execution created (place/cancel only)
- Backtest simulation created and integrated
- patching added, major speed improvements
Bug Fixes
- Handicap missing from order
- Client update account details added
- Replace/Update update_data fix (now cleared)
Libraries
- betfairlightweight upgraded to 2.3.1
Improvements
- BetfairExecution now live (place/cancel/update/replace)
- Trading and Client controls now live
- Trade/Order logic created and integrated
- OrderPackage created for execution
- Market class created
- process.py created to handle order/trade logic and linking
- Market catalogue worker added
- Blotter created with some initial functions (selection_exposure)
- Strategy runner_context added to handle selection investment
- OrderStream created and integrated
Bug Fixes
- Error handling on keep_alive worker added
Libraries
- requests added as dependency
Improvements
- Backtest added and HistoricalStream refactor (single threaded)
- Flumine clients created and integrated
- MarketCatalogue polling worker added
Libraries
- betfairlightweight upgraded to 2.3.0
Improvements
- context added to strategy
- .start / .add refactored to make more sense
- HistoricalStream added and working but will change in the future to not use threads (example added)
Libraries
- betfairlightweight upgraded to 2.1.0
Improvements
- Refactor to trading framework / engine
- Remove recorder/storage engine and replace with 'strategies'
- Market and data streams added
- Background worker class added
- Add docs
- exampleone added
Libraries
- betfairlightweight upgraded to 2.0.1
- Add tenacity 5.0.3
- Add python-json-logger 0.1.11
Improvements
- py3.7/3.8 testing and Black fmt
- main.py update to remove flumine hardcoding
- Remove docker and change to 'main.py' example
- Refactor to local_dir so that it can be overwritten
Bug Fixes
- File only loaded if < than 1 line
- FLUMINE_DATA updated to /tmp to prevent permission issues
Libraries
- betfairlightweight upgraded to 1.10.4
- Add py3.8 support
Improvements
- logging improvements (exc_info)
- Python 3.4 removed and 3.7 support added
Libraries
- betfairlightweight upgraded to 1.10.3
Improvements
- black fmt
- _async renamed to async_ to match bflw
- py3.7 added to travis
- #28 readme update
Libraries
- betfairlightweight upgraded to 1.10.2