Skip to content

Commit a8d9704

Browse files
committed
commit
1 parent e9f07c3 commit a8d9704

11 files changed

Lines changed: 236 additions & 12 deletions

File tree

cmd/ibctl/internal/command/category/categorylist/categorylist.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ const (
3131
realtimeFlagName = "realtime"
3232
// excludeSymbolFlagName is the shared flag name for excluding symbols from output.
3333
excludeSymbolFlagName = ibctlcmd.ExcludeSymbolFlagName
34+
// excludeCategoryFlagName is the shared flag name for excluding asset categories from output.
35+
excludeCategoryFlagName = ibctlcmd.ExcludeCategoryFlagName
36+
// excludeTypeFlagName is the shared flag name for excluding asset types from output.
37+
excludeTypeFlagName = ibctlcmd.ExcludeTypeFlagName
38+
// excludeGeoFlagName is the shared flag name for excluding geographic classifications from output.
39+
excludeGeoFlagName = ibctlcmd.ExcludeGeoFlagName
3440
)
3541

3642
// NewCommand returns a new category list command.
@@ -74,6 +80,12 @@ type flags struct {
7480
Realtime bool
7581
// ExcludeSymbols excludes these symbols from all computations and output.
7682
ExcludeSymbols []string
83+
// ExcludeCategories excludes these asset categories from all computations and output.
84+
ExcludeCategories []string
85+
// ExcludeTypes excludes these asset types from all computations and output.
86+
ExcludeTypes []string
87+
// ExcludeGeos excludes these geographic classifications from all computations and output.
88+
ExcludeGeos []string
7789
}
7890

7991
func newFlags() *flags {
@@ -88,6 +100,9 @@ func (f *flags) Bind(flagSet *pflag.FlagSet) {
88100
flagSet.StringVar(&f.BaseCurrency, baseCurrencyFlagName, "USD", "Base currency for value conversion (e.g., USD, CAD)")
89101
flagSet.BoolVar(&f.Realtime, realtimeFlagName, false, "Fetch real-time quotes and FX rates from Yahoo Finance")
90102
flagSet.StringSliceVar(&f.ExcludeSymbols, excludeSymbolFlagName, nil, "Exclude symbol from all computations and output (repeatable)")
103+
flagSet.StringSliceVar(&f.ExcludeCategories, excludeCategoryFlagName, nil, "Exclude asset category from all computations and output (repeatable, e.g., EQUITY)")
104+
flagSet.StringSliceVar(&f.ExcludeTypes, excludeTypeFlagName, nil, "Exclude asset type from all computations and output (repeatable, e.g., BOND)")
105+
flagSet.StringSliceVar(&f.ExcludeGeos, excludeGeoFlagName, nil, "Exclude geographic classification from all computations and output (repeatable, e.g., US)")
91106
}
92107

93108
func run(ctx context.Context, container appext.Container, flags *flags) error {
@@ -96,7 +111,7 @@ func run(ctx context.Context, container appext.Container, flags *flags) error {
96111
return appcmd.NewInvalidArgumentError(err.Error())
97112
}
98113
// Load data through the common pipeline (config, merge, FX, optional download/realtime).
99-
data, err := ibctlcmd.LoadHoldingsData(ctx, container, flags.Download, flags.Realtime, flags.BaseCurrency, flags.ExcludeSymbols)
114+
data, err := ibctlcmd.LoadHoldingsData(ctx, container, flags.Download, flags.Realtime, flags.BaseCurrency, flags.ExcludeSymbols, flags.ExcludeCategories, flags.ExcludeTypes, flags.ExcludeGeos)
100115
if err != nil {
101116
return err
102117
}

cmd/ibctl/internal/command/coveredcall/coveredcalllist/coveredcalllist.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@ import (
3232
"github.com/spf13/pflag"
3333
)
3434

35+
const (
36+
// excludeSymbolFlagName is the shared flag name for excluding symbols from output.
37+
excludeSymbolFlagName = ibctlcmd.ExcludeSymbolFlagName
38+
// excludeCategoryFlagName is the shared flag name for excluding asset categories from output.
39+
excludeCategoryFlagName = ibctlcmd.ExcludeCategoryFlagName
40+
// excludeTypeFlagName is the shared flag name for excluding asset types from output.
41+
excludeTypeFlagName = ibctlcmd.ExcludeTypeFlagName
42+
// excludeGeoFlagName is the shared flag name for excluding geographic classifications from output.
43+
excludeGeoFlagName = ibctlcmd.ExcludeGeoFlagName
44+
)
45+
3546
// NewCommand returns a new covered call list command.
3647
func NewCommand(name string, builder appext.SubCommandBuilder) *appcmd.Command {
3748
flags := newFlags()
@@ -109,6 +120,12 @@ type flags struct {
109120
Sort string
110121
// ExcludeSymbols excludes these symbols from all computations and output.
111122
ExcludeSymbols []string
123+
// ExcludeCategories excludes these asset categories from all computations and output.
124+
ExcludeCategories []string
125+
// ExcludeTypes excludes these asset types from all computations and output.
126+
ExcludeTypes []string
127+
// ExcludeGeos excludes these geographic classifications from all computations and output.
128+
ExcludeGeos []string
112129
}
113130

114131
func newFlags() *flags {
@@ -128,7 +145,10 @@ func (f *flags) Bind(flagSet *pflag.FlagSet) {
128145
flagSet.Int64Var(&f.MinOpenInterest, "min-open-interest", 10, "Minimum open interest (liquidity filter)")
129146
flagSet.StringVar(&f.Symbol, "symbol", "", "Filter to a specific symbol")
130147
flagSet.StringVar(&f.Sort, "sort", "yield", "Sort by: yield, premium, otm, expiry")
131-
flagSet.StringSliceVar(&f.ExcludeSymbols, ibctlcmd.ExcludeSymbolFlagName, nil, "Exclude symbol from all computations and output (repeatable)")
148+
flagSet.StringSliceVar(&f.ExcludeSymbols, excludeSymbolFlagName, nil, "Exclude symbol from all computations and output (repeatable)")
149+
flagSet.StringSliceVar(&f.ExcludeCategories, excludeCategoryFlagName, nil, "Exclude asset category from all computations and output (repeatable, e.g., EQUITY)")
150+
flagSet.StringSliceVar(&f.ExcludeTypes, excludeTypeFlagName, nil, "Exclude asset type from all computations and output (repeatable, e.g., BOND)")
151+
flagSet.StringSliceVar(&f.ExcludeGeos, excludeGeoFlagName, nil, "Exclude geographic classification from all computations and output (repeatable, e.g., US)")
132152
}
133153

134154
func run(ctx context.Context, container appext.Container, flags *flags) error {
@@ -189,7 +209,7 @@ func run(ctx context.Context, container appext.Container, flags *flags) error {
189209
return err
190210
}
191211
// Filter out excluded symbols before FIFO computation.
192-
ibctlcmd.FilterExcludedSymbols(mergedData, ibctlcmd.NormalizeExcludeSymbols(flags.ExcludeSymbols))
212+
ibctlcmd.FilterExcludedSymbols(mergedData, ibctlcmd.BuildExcludeSet(config.SymbolConfigs, flags.ExcludeSymbols, flags.ExcludeCategories, flags.ExcludeTypes, flags.ExcludeGeos))
193213
// Load FX rates for base currency conversion.
194214
fxStore := ibctlfxrates.NewStore(ibctlpath.CacheFXDirPath(config.DirPath))
195215
// Override market prices and FX rates with real-time data from Yahoo Finance.

cmd/ibctl/internal/command/geo/geolist/geolist.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ const (
3131
realtimeFlagName = "realtime"
3232
// excludeSymbolFlagName is the shared flag name for excluding symbols from output.
3333
excludeSymbolFlagName = ibctlcmd.ExcludeSymbolFlagName
34+
// excludeCategoryFlagName is the shared flag name for excluding asset categories from output.
35+
excludeCategoryFlagName = ibctlcmd.ExcludeCategoryFlagName
36+
// excludeTypeFlagName is the shared flag name for excluding asset types from output.
37+
excludeTypeFlagName = ibctlcmd.ExcludeTypeFlagName
38+
// excludeGeoFlagName is the shared flag name for excluding geographic classifications from output.
39+
excludeGeoFlagName = ibctlcmd.ExcludeGeoFlagName
3440
)
3541

3642
// NewCommand returns a new geo list command.
@@ -75,6 +81,12 @@ type flags struct {
7581
Realtime bool
7682
// ExcludeSymbols excludes these symbols from all computations and output.
7783
ExcludeSymbols []string
84+
// ExcludeCategories excludes these asset categories from all computations and output.
85+
ExcludeCategories []string
86+
// ExcludeTypes excludes these asset types from all computations and output.
87+
ExcludeTypes []string
88+
// ExcludeGeos excludes these geographic classifications from all computations and output.
89+
ExcludeGeos []string
7890
}
7991

8092
func newFlags() *flags {
@@ -89,6 +101,9 @@ func (f *flags) Bind(flagSet *pflag.FlagSet) {
89101
flagSet.StringVar(&f.BaseCurrency, baseCurrencyFlagName, "USD", "Base currency for value conversion (e.g., USD, CAD)")
90102
flagSet.BoolVar(&f.Realtime, realtimeFlagName, false, "Fetch real-time quotes and FX rates from Yahoo Finance")
91103
flagSet.StringSliceVar(&f.ExcludeSymbols, excludeSymbolFlagName, nil, "Exclude symbol from all computations and output (repeatable)")
104+
flagSet.StringSliceVar(&f.ExcludeCategories, excludeCategoryFlagName, nil, "Exclude asset category from all computations and output (repeatable, e.g., EQUITY)")
105+
flagSet.StringSliceVar(&f.ExcludeTypes, excludeTypeFlagName, nil, "Exclude asset type from all computations and output (repeatable, e.g., BOND)")
106+
flagSet.StringSliceVar(&f.ExcludeGeos, excludeGeoFlagName, nil, "Exclude geographic classification from all computations and output (repeatable, e.g., US)")
92107
}
93108

94109
func run(ctx context.Context, container appext.Container, flags *flags) error {
@@ -97,7 +112,7 @@ func run(ctx context.Context, container appext.Container, flags *flags) error {
97112
return appcmd.NewInvalidArgumentError(err.Error())
98113
}
99114
// Load data through the common pipeline (config, merge, FX, optional download/realtime).
100-
data, err := ibctlcmd.LoadHoldingsData(ctx, container, flags.Download, flags.Realtime, flags.BaseCurrency, flags.ExcludeSymbols)
115+
data, err := ibctlcmd.LoadHoldingsData(ctx, container, flags.Download, flags.Realtime, flags.BaseCurrency, flags.ExcludeSymbols, flags.ExcludeCategories, flags.ExcludeTypes, flags.ExcludeGeos)
101116
if err != nil {
102117
return err
103118
}

cmd/ibctl/internal/command/holding/holdinglist/holdinglist.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ const (
2828
realtimeFlagName = "realtime"
2929
// excludeSymbolFlagName is the shared flag name for excluding symbols from output.
3030
excludeSymbolFlagName = ibctlcmd.ExcludeSymbolFlagName
31+
// excludeCategoryFlagName is the shared flag name for excluding asset categories from output.
32+
excludeCategoryFlagName = ibctlcmd.ExcludeCategoryFlagName
33+
// excludeTypeFlagName is the shared flag name for excluding asset types from output.
34+
excludeTypeFlagName = ibctlcmd.ExcludeTypeFlagName
35+
// excludeGeoFlagName is the shared flag name for excluding geographic classifications from output.
36+
excludeGeoFlagName = ibctlcmd.ExcludeGeoFlagName
3137
)
3238

3339
// NewCommand returns a new holdings overview command.
@@ -102,6 +108,12 @@ type flags struct {
102108
Realtime bool
103109
// ExcludeSymbols excludes these symbols from all computations and output.
104110
ExcludeSymbols []string
111+
// ExcludeCategories excludes these asset categories from all computations and output.
112+
ExcludeCategories []string
113+
// ExcludeTypes excludes these asset types from all computations and output.
114+
ExcludeTypes []string
115+
// ExcludeGeos excludes these geographic classifications from all computations and output.
116+
ExcludeGeos []string
105117
}
106118

107119
func newFlags() *flags {
@@ -115,6 +127,9 @@ func (f *flags) Bind(flagSet *pflag.FlagSet) {
115127
flagSet.StringVar(&f.BaseCurrency, baseCurrencyFlagName, "USD", "Base currency for value conversion (e.g., USD, CAD)")
116128
flagSet.BoolVar(&f.Realtime, realtimeFlagName, false, "Fetch real-time quotes and FX rates from Yahoo Finance")
117129
flagSet.StringSliceVar(&f.ExcludeSymbols, excludeSymbolFlagName, nil, "Exclude symbol from all computations and output (repeatable)")
130+
flagSet.StringSliceVar(&f.ExcludeCategories, excludeCategoryFlagName, nil, "Exclude asset category from all computations and output (repeatable, e.g., EQUITY)")
131+
flagSet.StringSliceVar(&f.ExcludeTypes, excludeTypeFlagName, nil, "Exclude asset type from all computations and output (repeatable, e.g., BOND)")
132+
flagSet.StringSliceVar(&f.ExcludeGeos, excludeGeoFlagName, nil, "Exclude geographic classification from all computations and output (repeatable, e.g., US)")
118133
}
119134

120135
func run(ctx context.Context, container appext.Container, flags *flags) error {
@@ -123,7 +138,7 @@ func run(ctx context.Context, container appext.Container, flags *flags) error {
123138
return appcmd.NewInvalidArgumentError(err.Error())
124139
}
125140
// Load data through the common pipeline (config, merge, FX, optional download/realtime).
126-
data, err := ibctlcmd.LoadHoldingsData(ctx, container, flags.Download, flags.Realtime, flags.BaseCurrency, flags.ExcludeSymbols)
141+
data, err := ibctlcmd.LoadHoldingsData(ctx, container, flags.Download, flags.Realtime, flags.BaseCurrency, flags.ExcludeSymbols, flags.ExcludeCategories, flags.ExcludeTypes, flags.ExcludeGeos)
127142
if err != nil {
128143
return err
129144
}

cmd/ibctl/internal/command/lot/lotlist/lotlist.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ const (
3939
realtimeFlagName = "realtime"
4040
// excludeSymbolFlagName is the shared flag name for excluding symbols from output.
4141
excludeSymbolFlagName = ibctlcmd.ExcludeSymbolFlagName
42+
// excludeCategoryFlagName is the shared flag name for excluding asset categories from output.
43+
excludeCategoryFlagName = ibctlcmd.ExcludeCategoryFlagName
44+
// excludeTypeFlagName is the shared flag name for excluding asset types from output.
45+
excludeTypeFlagName = ibctlcmd.ExcludeTypeFlagName
46+
// excludeGeoFlagName is the shared flag name for excluding geographic classifications from output.
47+
excludeGeoFlagName = ibctlcmd.ExcludeGeoFlagName
4248
)
4349

4450
// NewCommand returns a new lot list command.
@@ -90,6 +96,12 @@ type flags struct {
9096
Realtime bool
9197
// ExcludeSymbols excludes these symbols from all computations and output.
9298
ExcludeSymbols []string
99+
// ExcludeCategories excludes these asset categories from all computations and output.
100+
ExcludeCategories []string
101+
// ExcludeTypes excludes these asset types from all computations and output.
102+
ExcludeTypes []string
103+
// ExcludeGeos excludes these geographic classifications from all computations and output.
104+
ExcludeGeos []string
93105
}
94106

95107
func newFlags() *flags {
@@ -104,6 +116,9 @@ func (f *flags) Bind(flagSet *pflag.FlagSet) {
104116
flagSet.StringVar(&f.BaseCurrency, baseCurrencyFlagName, "USD", "Base currency for value conversion (e.g., USD, CAD)")
105117
flagSet.BoolVar(&f.Realtime, realtimeFlagName, false, "Fetch real-time quotes and FX rates from Yahoo Finance")
106118
flagSet.StringSliceVar(&f.ExcludeSymbols, excludeSymbolFlagName, nil, "Exclude symbol from all computations and output (repeatable)")
119+
flagSet.StringSliceVar(&f.ExcludeCategories, excludeCategoryFlagName, nil, "Exclude asset category from all computations and output (repeatable, e.g., EQUITY)")
120+
flagSet.StringSliceVar(&f.ExcludeTypes, excludeTypeFlagName, nil, "Exclude asset type from all computations and output (repeatable, e.g., BOND)")
121+
flagSet.StringSliceVar(&f.ExcludeGeos, excludeGeoFlagName, nil, "Exclude geographic classification from all computations and output (repeatable, e.g., US)")
107122
}
108123

109124
func run(ctx context.Context, container appext.Container, flags *flags) error {
@@ -149,7 +164,7 @@ func run(ctx context.Context, container appext.Container, flags *flags) error {
149164
return err
150165
}
151166
// Filter out excluded symbols before FIFO computation.
152-
ibctlcmd.FilterExcludedSymbols(mergedData, ibctlcmd.NormalizeExcludeSymbols(flags.ExcludeSymbols))
167+
ibctlcmd.FilterExcludedSymbols(mergedData, ibctlcmd.BuildExcludeSet(config.SymbolConfigs, flags.ExcludeSymbols, flags.ExcludeCategories, flags.ExcludeTypes, flags.ExcludeGeos))
153168
// Load FX rates for base currency conversion.
154169
fxStore := ibctlfxrates.NewStore(ibctlpath.CacheFXDirPath(config.DirPath))
155170
// Override market prices and FX rates with real-time data from Yahoo Finance.

cmd/ibctl/internal/command/overview/holdingoverview.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ const (
3232
realtimeFlagName = "realtime"
3333
// excludeSymbolFlagName is the shared flag name for excluding symbols from output.
3434
excludeSymbolFlagName = ibctlcmd.ExcludeSymbolFlagName
35+
// excludeCategoryFlagName is the shared flag name for excluding asset categories from output.
36+
excludeCategoryFlagName = ibctlcmd.ExcludeCategoryFlagName
37+
// excludeTypeFlagName is the shared flag name for excluding asset types from output.
38+
excludeTypeFlagName = ibctlcmd.ExcludeTypeFlagName
39+
// excludeGeoFlagName is the shared flag name for excluding geographic classifications from output.
40+
excludeGeoFlagName = ibctlcmd.ExcludeGeoFlagName
3541
)
3642

3743
// NewCommand returns a new holding overview command.
@@ -67,6 +73,12 @@ type flags struct {
6773
Realtime bool
6874
// ExcludeSymbols excludes these symbols from all computations and output.
6975
ExcludeSymbols []string
76+
// ExcludeCategories excludes these asset categories from all computations and output.
77+
ExcludeCategories []string
78+
// ExcludeTypes excludes these asset types from all computations and output.
79+
ExcludeTypes []string
80+
// ExcludeGeos excludes these geographic classifications from all computations and output.
81+
ExcludeGeos []string
7082
}
7183

7284
func newFlags() *flags {
@@ -80,6 +92,9 @@ func (f *flags) Bind(flagSet *pflag.FlagSet) {
8092
flagSet.StringVar(&f.BaseCurrency, baseCurrencyFlagName, "USD", "Base currency for value conversion (e.g., USD, CAD)")
8193
flagSet.BoolVar(&f.Realtime, realtimeFlagName, false, "Fetch real-time quotes and FX rates from Yahoo Finance")
8294
flagSet.StringSliceVar(&f.ExcludeSymbols, excludeSymbolFlagName, nil, "Exclude symbol from all computations and output (repeatable)")
95+
flagSet.StringSliceVar(&f.ExcludeCategories, excludeCategoryFlagName, nil, "Exclude asset category from all computations and output (repeatable, e.g., EQUITY)")
96+
flagSet.StringSliceVar(&f.ExcludeTypes, excludeTypeFlagName, nil, "Exclude asset type from all computations and output (repeatable, e.g., BOND)")
97+
flagSet.StringSliceVar(&f.ExcludeGeos, excludeGeoFlagName, nil, "Exclude geographic classification from all computations and output (repeatable, e.g., US)")
8398
}
8499

85100
// overviewJSON is the combined JSON output for the overview command.
@@ -158,7 +173,7 @@ func run(ctx context.Context, container appext.Container, flags *flags) error {
158173
return appcmd.NewInvalidArgumentError(err.Error())
159174
}
160175
// Load data through the common pipeline (config, merge, FX, optional download/realtime).
161-
data, err := ibctlcmd.LoadHoldingsData(ctx, container, flags.Download, flags.Realtime, flags.BaseCurrency, flags.ExcludeSymbols)
176+
data, err := ibctlcmd.LoadHoldingsData(ctx, container, flags.Download, flags.Realtime, flags.BaseCurrency, flags.ExcludeSymbols, flags.ExcludeCategories, flags.ExcludeTypes, flags.ExcludeGeos)
162177
if err != nil {
163178
return err
164179
}

cmd/ibctl/internal/command/possiblesale/possiblesalelist/possiblesalelist.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ const (
4848
unsafeFlagName = "unsafe"
4949
// excludeSymbolFlagName is the shared flag name for excluding symbols from output.
5050
excludeSymbolFlagName = ibctlcmd.ExcludeSymbolFlagName
51+
// excludeCategoryFlagName is the shared flag name for excluding asset categories from output.
52+
excludeCategoryFlagName = ibctlcmd.ExcludeCategoryFlagName
53+
// excludeTypeFlagName is the shared flag name for excluding asset types from output.
54+
excludeTypeFlagName = ibctlcmd.ExcludeTypeFlagName
55+
// excludeGeoFlagName is the shared flag name for excluding geographic classifications from output.
56+
excludeGeoFlagName = ibctlcmd.ExcludeGeoFlagName
5157
)
5258

5359
// safeSellWithCategory wraps PossibleSaleOverview to add a sale_category field for JSON output.
@@ -168,6 +174,12 @@ type flags struct {
168174
Unsafe bool
169175
// ExcludeSymbols excludes these symbols from all computations and output.
170176
ExcludeSymbols []string
177+
// ExcludeCategories excludes these asset categories from all computations and output.
178+
ExcludeCategories []string
179+
// ExcludeTypes excludes these asset types from all computations and output.
180+
ExcludeTypes []string
181+
// ExcludeGeos excludes these geographic classifications from all computations and output.
182+
ExcludeGeos []string
171183
}
172184

173185
func newFlags() *flags {
@@ -185,6 +197,9 @@ func (f *flags) Bind(flagSet *pflag.FlagSet) {
185197
flagSet.BoolVar(&f.SafeExcluded, safeExcludedFlagName, false, "Show only the Safe Excluded section (excluded positions)")
186198
flagSet.BoolVar(&f.Unsafe, unsafeFlagName, false, "Show only the Unsafe section (short-term capital gains)")
187199
flagSet.StringSliceVar(&f.ExcludeSymbols, excludeSymbolFlagName, nil, "Exclude symbol from all computations and output (repeatable)")
200+
flagSet.StringSliceVar(&f.ExcludeCategories, excludeCategoryFlagName, nil, "Exclude asset category from all computations and output (repeatable, e.g., EQUITY)")
201+
flagSet.StringSliceVar(&f.ExcludeTypes, excludeTypeFlagName, nil, "Exclude asset type from all computations and output (repeatable, e.g., BOND)")
202+
flagSet.StringSliceVar(&f.ExcludeGeos, excludeGeoFlagName, nil, "Exclude geographic classification from all computations and output (repeatable, e.g., US)")
188203
}
189204

190205
func run(ctx context.Context, container appext.Container, flags *flags) error {
@@ -244,7 +259,7 @@ func run(ctx context.Context, container appext.Container, flags *flags) error {
244259
return err
245260
}
246261
// Filter out excluded symbols before FIFO computation.
247-
ibctlcmd.FilterExcludedSymbols(mergedData, ibctlcmd.NormalizeExcludeSymbols(flags.ExcludeSymbols))
262+
ibctlcmd.FilterExcludedSymbols(mergedData, ibctlcmd.BuildExcludeSet(config.SymbolConfigs, flags.ExcludeSymbols, flags.ExcludeCategories, flags.ExcludeTypes, flags.ExcludeGeos))
248263
// Load FX rates for base currency conversion.
249264
fxStore := ibctlfxrates.NewStore(ibctlpath.CacheFXDirPath(config.DirPath))
250265
// Override market prices and FX rates with real-time data from Yahoo Finance.

0 commit comments

Comments
 (0)