One can schedule a 'rebalance' for many times a day. This could be done with a simple 'for loop':
period_in_minutes = 5
for minutes_offset in range(1, 390, period_in_minutes):
# 390 minutes in a full trading day (6.5 x 60)
schedule_function(
my_rebalance,
date_rules.every_day(),
time_rules.market_open(minutes=minutes_offset),
half_days = True)
There is certainly variability in volume and pricing thoughout a day, but depending upon your algorithm, this variability may not impact your total results much. Try running your algorithm at different times and see how much of an impact it has.
One BIG reason you may wish to trade/rebalance once a day is that it greatly simplifies your order logic. If you are trying to trade multiple times a day then you will need to look at any outstanding orders and if there are any orders that have been partially filled. You may also need to cancel some existing orders and then wait and see that they were actually canceled. This is all doable but also adds a lot of complexity. Verify this complexity has a payoff. At least you may want to start simple and add this later.
A simple effective way to capitalize on intra-day price movements is to use limit orders. If you expect price to vary during the day, then simply put in a single limit order, at the beginning of the day, at the extremes of that variance. I would generally ALWAYS trade using limit orders as best practices anyway.