Damiano
08/01/2020, 9:20 AMselect max(profit) from transcript group by strategy_id
?Xiang Fu
Xiang Fu
Xiang Fu
CombinePlanNode
Xiang Fu
GroupByCombineOperator
is the old PQL implementation which will sort results by the aggregated values. You can think of this is operator always append the clause ORDER BY max(profit) DESC
into your query.Xiang Fu
Damiano
08/01/2020, 9:52 AMXiang Fu
GroupByOrderByCombineOperator
Damiano
08/01/2020, 10:04 AMDamiano
08/01/2020, 10:05 AMXiang Fu
Damiano
08/01/2020, 10:05 AMXiang Fu
Xiang Fu
Damiano
08/01/2020, 10:06 AMXiang Fu
Damiano
08/01/2020, 10:07 AMXiang Fu
InstanceResponseOperator
Xiang Fu
Xiang Fu
Xiang Fu
Xiang Fu
Damiano
08/01/2020, 10:11 AMDamiano
08/01/2020, 10:13 AMXiang Fu
Xiang Fu
Xiang Fu
Damiano
08/01/2020, 10:20 AMDamiano
08/01/2020, 10:20 AMXiang Fu
Xiang Fu
Damiano
08/01/2020, 10:22 AMDamiano
08/01/2020, 10:23 AMextractFinalResult()
^^ there?Damiano
08/01/2020, 10:23 AMXiang Fu
Xiang Fu
extractFinalResult
Xiang Fu
extractFinalResult
will be called in brokerXiang Fu
Damiano
08/01/2020, 10:24 AMDamiano
08/01/2020, 10:24 AMDamiano
08/01/2020, 10:25 AMDamiano
08/01/2020, 10:26 AMgroup by
)Damiano
08/01/2020, 10:26 AMXiang Fu
Xiang Fu
Xiang Fu
Damiano
08/01/2020, 10:29 AMXiang Fu
Damiano
08/01/2020, 10:29 AMXiang Fu
Damiano
08/01/2020, 10:29 AMXiang Fu
Damiano
08/01/2020, 10:30 AMexplain analyze
WITH t2 AS (SELECT strategy_id, MAX(profit) OVER (PARTITION BY strategy_id ORDER BY id RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - profit as drawdown
FROM trades)
SELECT strategy_id, MAX(drawdown) max_drawdown
FROM t2
GROUP BY strategy_id
ORDER BY max_drawdown;
Xiang Fu
Damiano
08/01/2020, 10:30 AMDamiano
08/01/2020, 10:30 AMCREATE TABLE trades (
id Serial,
strategy_id Integer,
profit Integer,
PRIMARY KEY (strategy_id, id)
);
Damiano
08/01/2020, 10:31 AMDamiano
08/01/2020, 10:31 AMXiang Fu
Xiang Fu
select strategy_id, max(profit) group by strategy_id
firstXiang Fu
SELECT strategy_id, MAX(max_profit - profit) as max_drawdown
FROM t2
GROUP BY strategy_id
Xiang Fu
max_profit
values are different per strategy_id
Damiano
08/01/2020, 10:35 AMDamiano
08/01/2020, 10:36 AMXiang Fu
strategy_id
?Xiang Fu
Damiano
08/01/2020, 10:37 AMXiang Fu
Damiano
08/01/2020, 10:37 AMXiang Fu
Xiang Fu
Xiang Fu
Xiang Fu
Xiang Fu
strategy_id
🙂Damiano
08/01/2020, 10:40 AMXiang Fu
Xiang Fu
Xiang Fu
Damiano
08/01/2020, 10:41 AMXiang Fu
Damiano
08/01/2020, 10:41 AMDamiano
08/01/2020, 10:41 AMDamiano
08/01/2020, 10:41 AMXiang Fu
Damiano
08/01/2020, 10:42 AMDamiano
08/01/2020, 10:42 AMXiang Fu
Damiano
08/01/2020, 10:43 AMDamiano
08/01/2020, 10:43 AMXiang Fu
Damiano
08/01/2020, 10:43 AMXiang Fu
Damiano
08/01/2020, 10:44 AMDamiano
08/01/2020, 10:44 AMDamiano
08/01/2020, 10:44 AMXiang Fu
Xiang Fu
/**
* Extracts the intermediate result from the aggregation result holder (aggregation only).
* TODO: Support serializing/deserializing null values in DataTable and use null as the empty intermediate result
*/
IntermediateResult extractAggregationResult(AggregationResultHolder aggregationResultHolder);
Xiang Fu
AggregationFunction
Xiang Fu
Xiang Fu
Xiang Fu
extractAggregationResult
you do the scan twiceXiang Fu
Xiang Fu
AggregationResultHolder
is a tuple of (Double maxProfit, List<Double> profit)Damiano
08/01/2020, 10:51 AMXiang Fu
Xiang Fu
Xiang Fu
Xiang Fu
Damiano
08/01/2020, 10:52 AMDamiano
08/01/2020, 10:52 AMDamiano
08/01/2020, 10:53 AMXiang Fu
Xiang Fu
Xiang Fu
AggregationResultHolder
Xiang Fu
Damiano
08/01/2020, 10:54 AMDamiano
08/01/2020, 10:55 AMXiang Fu
Xiang Fu
Damiano
08/01/2020, 10:56 AMXiang Fu
Damiano
08/01/2020, 10:56 AMDamiano
08/01/2020, 10:56 AMXiang Fu
Xiang Fu
Damiano
08/01/2020, 10:58 AMDamiano
08/01/2020, 10:58 AMDamiano
08/01/2020, 10:59 AMDamiano
08/01/2020, 11:00 AMXiang Fu
Xiang Fu
Damiano
08/01/2020, 11:39 AMDamiano
08/01/2020, 11:39 AMDamiano
08/01/2020, 11:39 AMDamiano
08/01/2020, 12:31 PMXiang Fu
Jackie
08/01/2020, 11:48 PMDamiano
08/02/2020, 3:53 PMJackie
08/02/2020, 6:37 PMDamiano
08/02/2020, 9:00 PMJackie
08/02/2020, 9:13 PMDamiano
08/02/2020, 9:55 PMJackie
08/02/2020, 10:46 PMDamiano
08/02/2020, 11:23 PMJackie
08/03/2020, 12:11 AMJackie
08/03/2020, 12:13 AMDamiano
08/03/2020, 2:37 AMJackie
08/03/2020, 4:31 AMDamiano
08/03/2020, 7:03 AMJackie
08/03/2020, 6:10 PMDamiano
08/03/2020, 6:16 PM