Add synthetic print and structure features
- Export synthetic market types - Track special print conditions and derived cluster features - Add same-size leg symmetry to structure packets
This commit is contained in:
parent
8dcbcd2201
commit
9076d3b395
4 changed files with 103 additions and 0 deletions
|
|
@ -46,6 +46,7 @@ export type StructurePacketPlan = {
|
|||
nbboAggressiveBuyRatio: number;
|
||||
nbboAggressiveSellRatio: number;
|
||||
nbboAggressiveRatio: number;
|
||||
sameSizeLegSymmetry: number;
|
||||
source_ts: number;
|
||||
ingest_ts: number;
|
||||
seq: number;
|
||||
|
|
@ -132,6 +133,19 @@ const dayDiff = (from: string | null, to: string | null): number | null => {
|
|||
return Math.round(diffMs / 86_400_000);
|
||||
};
|
||||
|
||||
const sameSizeLegSymmetry = (legs: LegEvidence[]): number => {
|
||||
const sizes = legs.map((leg) => leg.totalSize).filter((value) => Number.isFinite(value) && value > 0);
|
||||
if (sizes.length < 2) {
|
||||
return 0;
|
||||
}
|
||||
const min = Math.min(...sizes);
|
||||
const max = Math.max(...sizes);
|
||||
if (!Number.isFinite(min) || !Number.isFinite(max) || max <= 0) {
|
||||
return 0;
|
||||
}
|
||||
return min / max;
|
||||
};
|
||||
|
||||
export const shouldEmitStructurePacket = (legs: LegEvidence[], currentLegContractId: string): boolean => {
|
||||
if (legs.length < 2) {
|
||||
return false;
|
||||
|
|
@ -250,6 +264,7 @@ export const planStructurePacket = (
|
|||
nbboAggressiveBuyRatio,
|
||||
nbboAggressiveSellRatio,
|
||||
nbboAggressiveRatio,
|
||||
sameSizeLegSymmetry: roundTo(sameSizeLegSymmetry(legs)),
|
||||
source_ts: Number.isFinite(source_ts) ? source_ts : 0,
|
||||
ingest_ts,
|
||||
seq
|
||||
|
|
@ -320,6 +335,7 @@ export const buildStructureFlowPacket = (
|
|||
features.nbbo_aggressive_buy_ratio = roundTo(plan.nbboAggressiveBuyRatio);
|
||||
features.nbbo_aggressive_sell_ratio = roundTo(plan.nbboAggressiveSellRatio);
|
||||
features.nbbo_aggressive_ratio = roundTo(plan.nbboAggressiveRatio);
|
||||
features.same_size_leg_symmetry = roundTo(plan.sameSizeLegSymmetry);
|
||||
|
||||
const join_quality: Record<string, number> = {
|
||||
nbbo_coverage_ratio: roundTo(plan.nbboCoverageRatio)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue