Lucas Robidou
email: lucas.robidou@inria.fr

Pierre Peterlongo
email: pierre.peterlongo@inria.fr

fimpera: drastic improvement of Approximate Membership Query data-structures with counts

Keywords: drastic improvement of Approximate Membership Query data-structures with counts Lucas Robidou, Pierre data structure, indexation, k-mers, counting Bloom filters, sequence data, abundance, AMQ

de niveau recherche, publiés ou non, émanant des établissements d'enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Introduction

Public data banks providing sequencing data or assembled genome sequences are growing at an exponential rate [START_REF] Cummins | The european nucleotide archive in 2021[END_REF], faster than computational power. Searching a sequence of interest among datasets is a fundamental need. For instance it enables to better understand genetic changes in the tumour, offering precious information about the diagnosis and treatment of cancer [START_REF] Tomczak | Review the cancer genome atlas (tcga): an immeasurable source of knowledge[END_REF], or it enables to study at a large scale the distribution and adaptation of life in oceans [START_REF] Sunagawa | Tara oceans: towards global ocean ecosystems biology[END_REF]). However no method scales to the dozens of petabytes of data already available today. Thus, new computational methods are required to perform a search against datasets.

Querying datasets can be done precisely by aligning genome sequences (e.g. using Blast-like [START_REF] Stephen F Altschul | Basic local alignment search tool[END_REF] algorithms), however aligning sequences is computationalresources intensive. Thus queries on large scale datasets are usually done through k-mers presence / absence. Basically, datasets are represented as their set of kmers and queries are represented as their sequence of k-mers.

Methodological developments have thus been made to index every k-mers of a dataset. Some methods use Approximate Membership Query data structures (AMQ), e.g. bloom filters, to store presence / absence of k-mers, as SBT [START_REF] Solomon | Fast search of thousands of short-read sequencing experiments[END_REF] or HowDe-SBT [START_REF] Robert | Improved representation of sequence bloom trees[END_REF]; see [START_REF] Marchet | Data structures based on k-mers for querying large collections of sequencing data sets[END_REF] for a survey of approaches to index large dataset. However, very few methods tackle the issue of recording the abundance of the indexed k-mers. The abundance information is however crucial for many biological applications such as transcriptomics or metagenomics. Storing abundance is costly with regard to space consumption. Conversely, adding abundance information in an AMQ, turning it into a counting AMQ, without allocating more space increases drastically its false positive rate. As an example, BIGSI [START_REF] Bradley | Ultrafast search of all deposited bacterial and viral genomic data[END_REF] relies on Bloom filters with a high false-positive rate, e.g. 25% false-positive rate per kmer query. At constant memory usage, adding the abundance information would yield an extremely high false-positive rate. As such, methods storing abundances mostly rely on compression by clustering abundance with neighbouring k-mers or across datasets, as Reindeer [START_REF] Marchet | Reindeer: efficient indexing of k-mer presence and abundance in sequencing datasets[END_REF] or Counting de Bruijn graphs [6]. These methods do not rely on counting AMQ, but rather on exact data structures.

In this paper, we do not propose a novel counting AMQ, but rather a wrapper to improve any existing counting AMQ, like a counting Bloom Filter. The method we introduce is called fimpera. It generalises one of our previous contribution [START_REF] Robidou | findere: fast and precise approximate membership query[END_REF]. In short, fimpera splits every k-mer into s-mers (with k ≥ s > 0) and then associates the abundance of a k-mer to its constituent s-mers in a counting AMQ. This allows us to retrieve the abundance of a k-mer at query time via its s-mers count. Compared to the original counting AMQ indexing k-mers, we show that fimpera improves the abundance correctness while reducing the false positives rate by an order of magnitude without generating false-negative calls nor underestimation of the abundance of a k-mer.

Additionally, the fimpera algorithmic needs led us to propose a novel algorithm for computing in O(x) time and with no memory allocation the sliding window minimums (resp. maximums). These are the minimal (resp. maximums) values of all sub-arrays of a fixed size over an array of x values. This contribution may be useful independently from the fimpera context. Its novelty is that, while being destructive for the input array, it uses no additional memory while other approaches use memory linear with the size of the intervals.

Methods

Background

Preliminary definitions

A k-mer is a word of length k over an alphabet Σ. Given a sequence S, |S| denotes the length of S.

In the current framework, we consider a dataset as composed of one sequence or a multisets of sequences. Given a dataset D, D k denotes multiset of k-mers extracted from D.

We denote the abundance of a k-mer d (the number of time d appears) in D k by abundance(D k , d). We consider that a k-mer is "present" (resp. "absent") in

D if abundance(D k , d) > 0 (resp. abundance(D k , d) = 0).
A counting AMQ data structure represents a multiset of elements D k . It can be queried with any element d; the query's response on an counting AMQ, noted n, is always either correct or overestimated, i.e. n ≥ abundance(D k , d). If n = abundance(D k , d), the counting AMQ reported the correct abundance, otherwise it reported an overestimation. Note that underestimation is not possible.

In particular, if abundance(D k , d) = 0 and n > 0, then d is found in the counting AMQ even if it is absent from D. This particular case is a false positive call. The false-positive rate of a counting AMQ, denoted by F P R cAM Q , is defined by F P R cAM Q = #F P #F P +#T N with #F P and #T N denoting respectively the number of false-positive calls and the number of true negative calls (n = 0). F P R cAM Q depends on the used counting AMQ strategy and on the amount of space used by this counting AMQ.

Overview of fimpera

In this work, we focus on decreasing the false positive rate of a counting Bloom Filter (cBF for short). However, fimpera is a generic approach that may be applied on any counting AMQ. A counting Bloom Filter is a generalization of Bloom filters: each element is inserted along with its abundance instead of its presence only. This requires a few bits per entry for storing this information. Hence, either at constant size, a counting Bloom Filter has a higher falsepositive rate than a simple Bloom filter, or are counting Bloom Filter requires more memory than a Bloom filter to achieve the same false-positive rate.

fimpera's objectives are to reduce F P R cAM Q and to improve precision on true positive calls, using a method based on splitting k-mers into smaller words called s-mers.

Indexation overview At indexation time, fimpera takes a file of counted kmers, typically extracted from a genomic sequence dataset, and splits each k-mer to be indexed into its k -s + 1 s-mers (k ≥ s). Each s-mer is then stored in a cAMQ along with its s abundance . The s abundance of a s-mer is the maximum of the abundance of the k-mers containing this s-mer. We explain this choice in the following.

In the following, we set z = k -s, hence z ≥ 0.

Query overview The query of fimpera consists of a set of sequences. For each sequence S, fimpera extract s-mers, which are then queried against the cAMQ, and the abundance of any k-mer of S is computed as the minimum of s abundance of its s-mers. By default, fimpera prints each input sequence along with the abundance of every of its consecutive k-mer. In the biological context, the input file is a fasta/fastq file (or a gzipped fasta/fastq file) containing reads. fimpera is built in a modular way. Changing the default output (e.g. storing results instead of printing, computing average abundance per sequence or printing only sequences whose average k-mer abundances is above a user-defined threshold) can be programmed via inheritance of an Abstract Class.

Overview of false positive calls of fimpera's query Let's consider a kmer d with an abundance of 0 and each of its s-mer has an s abundance of 0 as well. With fimpera, wrongly reporting d as present requires that every s-mer of that k-mer are wrongly found as present in the counting AMQ. The probability of such an event is roughly F P R z+1 cAM Q , leading to a dramatic decrease in the occurrences of false-positive calls with respect to z. For instance, with z=3 (which is a recommended and default value), a counting AMQ having a false positive rate of 25%, the probability of false-positive rate with fimpera for that setting is ≈ 0.04%.

The fimpera approach may generate a novel kind of false-positives. A queried k-mer, absent from the indexed dataset, may be composed of s-mers, all existing in this indexed set. Querying such k-mer with fimpera returns a non-zero abundance, so generating a false-positive, that we call a "construction false-positive". This new kind of false-positive call is specific to the fimpera approach.

Overview of overestimations of fimpera's query To overestimate the abundance of a queried k-mer, overestimations are required to happen on the abundance of every s-mer of that k-mer. The more s-mer per k-mer, the more s-mer abundance overestimations need to happen to overestimate a k-mer abundance. s-mer abundance overestimations come from two sources:

a collision occurs in the counting Bloom filter, leading to the overestimation of the less abundant colliding s-mer; and/or: a s-mer is shared among two different k-mers having different abundances.

This overestimates the abundance of this s-mer of the least abundant k-mer. This happens not matter the false positive rate of the counting Bloom filter. We call those overestimations "construction overestimation"; this new kind of overestimation is specific to fimpera.

Observe a case of interest: consider two k-mers a and b overlapping over k -1 characters. If b has an abundance greater than a, then the correct abundance of a is retrievable through a unique s-mer (the unique s-mer of a that does not appear in the k-mer b). In such case, a is likely to be overestimated.

Consequently, fimpera's overestimations are not uniformly distributed random events. Overestimations tend to be close to a change in abundance along queried sequences. Furthermore, overestimations tend to raise k-mer's abundance close to the abundance of their neighbor k-mers, mitigating the impact of those overestimated calls. In the results, we show that the erroneous abundance calls are closer to the ground truth with fimpera compared to those obtained with the original cBF.

We now describe in more details both indexing step and querying step of fimpera, as well as two optimisations, allowing querying in constant time and skipping unnecessary queries.

Indexing with fimpera

As stated in Section 2.2, fimpera's indexation is a two-step process:

k-mers' abundances are computed from the input dataset (e.g. using KMC [START_REF] Kokot | Kmc 3: counting and manipulating k-mer statistics[END_REF]); s-mers from these k-mers are stored in a counting AMQ together with their s abundance . The s abundance of a s-mer is formally defined as the maximal abundance of the indexed k-mers in which this s-mer occurs.

Note that the s abundance of a s-mer α is lower or equal to the abundance of α in the input dataset. For instance consider a s-mer α that occurs in two k-mers respectively with an abundance of one and two. Then, the abundance of α is three (= 1 + 2), while the s abundance of α is two (= max(1, 2)). Storing the s abundance of α instead of its abundance, enables to lower the abundance overestimations, as it avoids to accumulate the abundances of distinct k-mers it belongs to.

2.4

Querying with fimpera fimpera's query consists in querying all consecutive, overlapping k-mers from a sequence of size greater than k through their constituent s-mers. fimpera's query is a two-step process:

for every position in the query except the last s -1 ones, s-mers starting at these positions are queried in the counting AMQ and stored in a array of integers s abundances ; -The abundance any k-mer starting position p is the minimum value of the sub-array of length (z + 1) starting at the position p: s abundances [p; p + z].

This non-optimised algorithm version of fimpera's query is shown in algorithm 1, in supplementary material, Section S1.1. This approach can be improved in two ways, in one way avoiding to recompute the minimal value of an array of length z + 1 for each position p, and in an other way by skipping some unnecessary s-mer queries. The two following Sections present these two optimisations.

Optimisations Optimisation 1: sliding window minimums algorithm

The problem, independent of fimpera, is as follows: given a vector of values (integers of floats) v and an integer size window, give an array r such that ∀i ∈ [0, |v| -size window], r

[i] = min(v[i], v[i + 1], ..., v[i + size window -1]).
The naive approach is to compute every window and search for the minimum in those windows. This algorithm is in O(size window × |v|) time. We propose a solution in O(|v|) time. Note that this is a classical problem for which nonpublished solutions can be found. However, the novelty of our proposed solution is that it does not require allocating any memory from the heap (which is slow for most systems).

The main idea is to split the input vector of values in fixed, non-overlapping windows of size size window. Then, for each so called "fixed window", compute two vectors:

min left j: min lef t j[i] contains the minimum value encountered in the j-th fixed window up to the position i min right j: min right j[i] contains the minimum value from the position i up to the end of the j-th fixed window All min lef t j and min right j vectors are then concatenated into two vectors (min lef t and min right). The minimum of a sliding window starting at position i is thereupon the minimum between:

min lef t[i + size window -1] (the minimum of the left part of the next fixed window) min right[i] (the minimum of the right part of the current fixed window) An example is provided in Table 1.

i 0 1 2 3 4 5 6 7 8 9 v 5 3 7 1 4 5 3 2 2 3 j 0 1 2 3 min lef t 5 3 3 1 1 1 3 2 2 3 min right 3 3 7 1 4 5 2 2 8 3 min sliding 3 1 1 1 3 2 2 2 Table 1. Computation example of the min sliding vector, with a window of size 3. Tables min lef t and min right are represented for helping the comprehension, but are not implicitly created in practice. The j row indicates the starting positions of the fixed windows. As a example, the minimal value of the sliding window of size 3 starting position i = 1 is min sliding [START_REF] Stephen F Altschul | Basic local alignment search tool[END_REF] = 1 (bold underlined value), being equal to min(min lef t[1 + 3 -1], min right [START_REF] Stephen F Altschul | Basic local alignment search tool[END_REF]) = min(1, 3) (underlined values).

Note that, as described previously, this approach would require allocating memory for two vectors per call. This memory need may appear negligible in theory as those vectors are limited by the query size which is a few hundred to few thousands. However, in practice, allocating memory for these vectors is time consuming, and may increase significantly the practical running time. We overcame this memory need thanks to these three following tricks. 1/ we compute min lef t[i] on the fly (min lef t[i] = min(min lef t[i -1], v[i])). 2/ min right is computed directly in the queried vector. This does not impact the correctness of the algorithm, as min sliding ≤ min r ight[i] ≤ v[i]. 3/ the response (minimal value per sliding window) can be stored directly in the input queried vector as well. At the price of the vector, this allows the algorithm to be run in O(size query) time and to avoid any time consuming heap allocation.

A complete description of the optimised solution provided in supplementary materials, Section S1.2, algorithm 2.

This algorithm offers a generic solution for computing the minimal value of a sliding window in constant memory and linear time. Its usefulness is not limited to fimpera. Note also that it can be straightforwardly modified for computing the maximal value instead of the minimal value of each window.

Optimisation 2: skip unnecessary s-mers queries

Observe that knowing the absence of a s-mer allows not only to deduce the absence of the k-mer starting with it: all k-mers containing this s-mer are absents as well. This allows to infer the existence of a stretch of consecutive absent kmers.

We exploit this simple idea further. If one detects that two absents s-mers are z + 1 positions away in the query, then any k-mer starting at any position between them is also absent. In the fimpera algorithm, if a s-mer is not found during the query, an optimisation consists of searching for the abundance of the s-mer z + 1 positions further away in the query. If that s-mer is also absent, there is no need to query any s-mer in between.

Thus, fimpera only needs to query one s-mer every z + 1 position as long as the queried s-mers are absent in the counting AMQ, effectively saving time. This optimised algorithm is described in supplementary materials, algorithm 3.

Implementation of fimpera

An implementation of fimpera is available at https://github.com/lrobidou/ fimpera. This implementation is specialised for genomic data (i.e. with an alphabet consisting of A, T, C, G) and uses a counting Bloom filter as cAMQ. A template mechanism allows the use of any other cAMQ provided by the user. In the genomic context, queries consist of fasta or fastq files (gzipped or not), and an option is provided to index and query canonical k-mers only, i.e. the lexicographic minimum between each k-mer and its reverse complements. Options include the k and z values, the size of the filter, and b, the number of bits per abundance count.

As b has a major impact on the final size of the data structure, it is recommended to use low b values (say b ≤ 5). This limits the maximal stored abundance value to 2 b . In practice fimpera includes an option to use any abundance function provided by the user (identity, ⌊log 2 ⌋, ⌊log 10 ⌋, range of values, etc. . . ) to compute ranges of abundance per encoded value.

Storing abundances as their ⌊log 2 ⌋ values leads to a gain of space (for instance storing up to 64 abundances requires 8 bits, but storing up to ⌊log 2 (64)⌋ abundances requires only 3 bits). This is at the cost of a loss of precision for abundances with identical ⌊log 2 (64)⌋ values, as this is for instance the case for abundances 5 and 6.

Results

Experimental setup

To the best of our knowledge, no other tool focuses on reducing the false positive rate of existing cAMQ, thus we compare fimpera results applied on a counting Bloom filter indexing s-mers with the original counting Bloom filter results indexing k-mers. Both methods are using a single hash function. We propose results on biological marine metagenomic data. Parameters used are the default ones: k = 31, size of filter of 3.48 × 10 9 bits, as discussed in section 3.3, using b = 5 bits per abundance count, and abundances are stored as their ⌊log 2 ⌋ values. We use the default z = 3 parameter (unless otherwise stated).

A list of commands for reproducing the results is available here: https:// github.com/lrobidou/fimpera/blob/paper/paper_companion/Readme.md along with a step-by-step explanation of the output. Executions were performed on the GenOuest platform on a node with 4x8cores Xeon E5-2660 2,20 GHz with 200 Go of memory.

Metagenomic dataset

We used two fastq files from the TARA ocean metagenomic dataset to show advantages offered by fimpera on metagenomic samples. The index was computed from the 2.38 × 10 8 31 -mers present at least twice in an arctic station (accession number ERR1726642) and the query sample was the first 3×10 6 reads from a sample in another arctic station (accession number ERR4691696). Canonical k-mers were considered for this experiment.

Choice of filters parameters

We propose an experiment in which we apply the fimpera approach on top of a counting Bloom Filter designed to have 25% of false-positive calls, while using 5 bits per hash value for storing the abundance of indexed k-mers. For indexing 2.38×10 8 31-mers this structure requires 3.48×10 9 bits. Note that when storing the presence/absence of those k-mers in a Bloom filter using the optimal number of hash functions, the expected false positive rate would be 8.7%. We chose to consider a counting Bloom Filter that uses a unique hash function. Even if this choice is independent of the fimpera approach, it is motivated by the fact that major tools indexing large sets of k-mers as BIGSI [START_REF] Bradley | Ultrafast search of all deposited bacterial and viral genomic data[END_REF], COBS [START_REF] Bingmann | Cobs: a compact bit-sliced signature index[END_REF], HowDe-SBT [START_REF] Robert | Improved representation of sequence bloom trees[END_REF] as well as generic methods for preprocessing k-mers like kmtricks [START_REF] Lemane | kmtricks: Efficient construction of bloom filters for large sequencing data collections[END_REF] are based on Bloom filters using a unique hash function for performances purposes.

Hence, we propose to index k-mers along with their abundance in a cBF of 3.48 × 10 9 bits using one hash function and storing abundance on 5 bits. We compare the results of queries made against this counting Bloom Filter with results of queries made against fimpera wrapping that same counting Bloom Filter. Unless otherwise specified, all results shown were obtained using z = 3. This implies that we compare results of a cBF indexing 31-mers, with results of fimpera used on a cBF with the same sizing, but indexing s-mers of size 28 (31-3).

Used metrics

To measure the quality of the fimpera results and the cBF results, we propose three metrics:

the false positive rate, that provides the probability that the method returns an abundance call > 0 for a k-mer absent from the indexed set. the proportion of incorrect abundance, that provides the probability that the method returns the incorrect abundance for a k-mer actually in the indexed set. statistics of responses for incorrect abundances calls, that estimate the reported abundance of k-mers whose abundance are incorrectly reported. Results about false-positives obtained with the proposed experiment are shown in Fig. 1. Results about the cBF simply confirm the setup, and shows a false positive rate of 25%. When applying fimpera, the false positive rate drops to 0.56%. Among all these fimpera false positives, 4.8 % are due to the so-called "construction false positives" (see Section 2.2), thus representing 0.0027% of the total k-mer calls.

False positive rate analyses

It is important to recall that these comparative results were obtained using the exact same amount of space. Hence the fimpera approach enabled to yield about 45 times fewer false-positive calls, with no drawback and even saving query time (see Section 3.8).

Correctness of the reported abundances

In this section, we focus only on true positive calls. Hence, these results do not concern the 25% false-positive calls obtained with the original cBF, nor the 0.56 % ones using fimpera. Results comparing the proportion of calls reported with an incorrect abundance among the true positives are shown in Fig. 2. These results show that 1.54 % of true-positive calls are overestimated in the cBF, while 1.33 % of true-positive calls are overestimated with fimpera. Among the fimpera calls estimating an incorrect abundance among the true positives, 83 % are due to the so-called "reconstruction overestimation".

Distribution of errors in overestimated calls

In this section, we focus only on the wrongly estimated calls among true positives Results presented Fig. 3 show that, as stated Section 2.2, the erroneous abundance calls are closer to the ground truth with fimpera compared to those obtained with the original cBF. As seen Fig. 3-right, with fimpera, almost all (excepted a few outliers) overestimations are only one value apart from the correct range (the average difference with the correct abundance range is 1.07). With the original cBF, as seen Fig. 3-left, overestimations are more important (1.33 range in average from the ground truth).

Influence of the z parameter.

The proposed approach requires to set up a unique parameter z that defines the size of the indexed s-mers (recall that z = k -s). We propose in this section to assess the impact of this unique additional parameter needed for using fimpera. 2. Influence of the z parameter on the quality of the results and on the computation time. "constr." stands for "construction". z = 0 is equivalent to the original cBF results.

Quality of results

As shown in Table 3.8, the false positive rate decreases with regard to z and stays low for a wide range of z values (at least from 3 to 9). When using an extreme z value, for instance s = 20, the false positive rate is increased up to almost 100%. With z = 20, as we use k = 31, the size of the s-mers is s = 11. When indexing as little as few hundred millions characters, each 11-mer has a great chance to appears by chance in the indexed dataset (it does not occurs with a probability of 10 -11 when indexing a hundred million characters on an alphabet of size four). This quasi-random existence of all s-mers generates a huge amount of construction false positives, as seen in the last column. This has also an impact on the running time that nearly doubles, certainly because all queried s-mers are positives, annihilating the s-mer skipping optimisation.

Query time. As mentioned Section 2.5, the fimpera approach does not increase the query running. On the contrary, it allows to slightly decrease the running time when z increases as seen Table 3.8. Default z parameter. Presented results highlight the fact that performances are little impacted by the choice of this parameter. The default z parameter is set to z = 3.

Conclusion

We presented fimpera, a novel computational method to reduce the false positive rate and increase the precision of any counting Approximate Membership Query data structure with no modification of the original data structure. This reduction is obtained without any memory overhead, with no modification of the original data structure, and even with a slight improvement over the query computation time.

Our results showed that when applied on top of a counting Bloom Filter, fimpera enabled to yields about 45 times fewer false-positive calls than when querying directly a counting Bloom Filter of identical size. Moreover, using fimpera, abundance errors were slightly less frequent on true positive calls, and finally, those abundance errors were on average 1.07 apart from the ground truth with fimpera while they are on average 1.33 apart from the ground truth with the original cBF.

Independently from parameters of the used cAMQ, fimpera requires to set up a unique parameter, z. Fortunately results are highly robust with the choice of z, unless extreme values are chosen. Future work will include a formal analysis of the theoretical limits on the choice of z usage ranges.

We provide a C++ implementation of fimpera which enabled us to validate the approach. This implementation can also be used as a stand-alone tool for indexing and querying genomic datasets, and it can be tuned with user-defined parameters and ranges of abundances. The provided github project also proposes all necessary instructions and links to genomic data to reproduce the results.

S1 Supplementary Materials

These supplementary materials propose a detailed description of the proposed algorithms.

S1.1 query algorithm

A non-optimised algorithm of fimpera's query is shown in Algorithm 1. This algorithm takes a queried sequence q, a counting AMQ indexing s-mers, and parameters k and z. It returns a vector of integers such that: ∀i ∈ [0, |response|], response[i] is the abundance of the k-mer starting at position i in the query.

Algorithm 1 fimpera's query 1: procedure query(q ∈ Σ * ; cAMQ indexing s-mers; k and z in N + (|q| ≥ k, z ≤ k)) 2:

s ← k -z ▷ may be zero 3:

smer s abundances ← emptyV ector(0) 4: # Store s abundance of all s-mers: 5:

for i in [0; |q| -s] do 6:

ab ← s abundance of the s-mer starting pos i in q (using the counting AMQ).

7:

add ab in the smer s abundances vector 8:

end for 9: # Compute all k-mers abundances from s-mer s abundances : 10:

response ← emptyV ector(|q| -k + 1) 11:

for i in [0; |q| -k] do 12:

add min j∈[i,i+z] (smer s abundances [j]) in the response vector 13:

end for 14:

return response 15: end procedure Algorithm 1 is not optimal. Line 12 it computes the minimal value of a range of z consecutive integers taken from a vector of integers. At each iteration of a for loop this range is shifted by one. An optimization, presented in the next enables to compute all these minimal values in linear time and with zero memory allocation.

S1.2 Sliding window minimums

Algorithm 2 sliding minimum window for i in [0; nbW in -2] do ▷ for every window excluding the last one

S1.3 Skip streches

In this section we show the entire algorithm of fimpera (algorithm 3), including the optimisation consisting in skipping stretches of absent k-mers. The skip optimisation occurs line 32: if a negative s-mer is called, the algorithm jumps z +1 position away in the sequence, probing for another absent s-mer. A positive answer will trigger line 18, backtracking positions backward. We keep track of the fact that we are currently skipping s-mers via the extending stretch flag.

Algorithm 3 fimpera's query 1: procedure query(q ∈ Σ * ; cAMQ indexing s-mers; k and z in N + (|q| ≥ k, z ≤ k)) 2: s ← k -z 3:

response ← emptyV ector(size -K + 1) 4:

stretchLength ← 0 5: j ← 0 ▷ Current position in the query 6:

extending stretch ← true 7:

previous answers ← emptyV ector(0) 8:

while j < |q| -k + 1 do 9:

smer ← smer starting at position j in q 10: amq answer ← s abundance of smer in cAM Q 11:

if amq answer > 0 then 12:

if extending stretch then 13:

previous answers.push back(amq answer) 14:

stretchLength ← stretchLength + 1

Fig. 1 .

 1 Fig. 1. Proportion of false positive calls without fimpera (on a classical counting Bloom Filter) and with fimpera (z = 3).

Fig. 2 .

 2 Fig. 2. Proportion of incorrect abundance calls with the original cBF, and with fimpera

Fig. 3 .

 3 Fig.3. For true-positive calls with an incorrect abundance estimation: reported abundance with respect to the correct abundance. Left: using the original cBF, right: using fimpera.

1 :

 1 procedure sliding minimum window(vector v of positive integers; length of window w (|v| ≥ w, w > 1))

	2:	nbW in ← ⌊size(v)/w⌋
	3:	nb elem last window ← |v| mod w
	4:	min lef t ← v[0]	▷ start computation of min left (See Section 2.5)
	5:	for i in [0; w -1] do
	6:	min lef t ← min(min lef t, v[i])
	7:	end for
	8:

Acknowledgements. The authors thank Eric Pelletier for his help regarding the usage of the Tara Ocean data sets. This work used HPC resources from the GenOuest bioinformatics core facility (https://www.genouest.org). The work was funded by ANR SeqDigger (ANR-19-CE45-0008).

https://github.com/lrobidou/


François-Charles Wolff

Frank Asche
email: frank.asche@ufl.edu

Transaction mode and pricing heterogeneity: Evidence from the French fish market #

Keywords: fish prices, over-the-counter sales, auction sales, hedonic equations JEL Classification : Q11, Q22

A number of food products are sold at organized markets through auctions as well as in bilateral over-the-counter transactions despite the fact that there may be differences in obtained sale prices and transaction costs. The purpose of this paper is to evaluate the effect of the sale method on fish prices using a sample of 40 million transactions corresponding to all up-streams fish sales in Atlantic France between 2010 and 2018. Estimation of hedonic price regressions controlling for fish attributes, local market, buyer and seller heterogeneity show that there is a price differential of 1.7% between the two transaction modes. This result remains robust when taking into account the endogeneity of the sale method through an exact matching of auction and over-the-counter transactions.

Introduction

In recent years, a number of studies have shown how the degree of market integration in food markets is increasing and the price determination process becoming more efficient as more information is made available for market participants, despite significant product heterogeneity. As one of the most heterogenous food sectors and a sector where there is a premium on perishable products, seafood markets have been significantly impacted by such developments. For instance, [START_REF] Jensen | The digital provide: Information (technology), market performance, and welfare in the South Indian fisheries sector[END_REF] shows that introduction of mobile phone service in India reduced price dispersions and led to near-perfect adherence to the Law of One Price (LOP). Guillotreau and Jimenez-Toribo (2011) demonstrate how linking regional markets electronically not only increased market integration, but also increased average prices due to better product allocation.

The main mechanism for explaining these improvements in market efficiency is that new technologies reduce transaction costs by making information more available. However, this also suggests that there can be other barriers to fully integrated markets. These can include remaining transaction costs as well as the large number of quality attributes that may influence the price of food products. There is a significant literature showing that there are global markets with common price determination processes for most larger seafood species groups [START_REF] Anderson | Globalization and commoditization: The transformation of the seafood market[END_REF].

However, there are significant premiums segmenting this larger market associated with different physical product attributes such as size and quality (McConnel and Strand, 2000;Carrol et al., 2001;[START_REF] Lee | Hedonic pricing of Atlantic Cod: Effects of size, freshness, and gear[END_REF][START_REF] Pettersen | Hedonic price analysis of ex-vessel cod markets in Norway[END_REF] or attributes that can be associated with either quality or transaction cost such as producer (skipper) characteristics, buyer characteristics or market location [START_REF] Kristofersson | Efficient estimation of hedonic inverse input demand systems[END_REF][START_REF] Wolff | The firm's management in production: Management, firm, and time effects in an Indian Ocean tuna fishery[END_REF][START_REF] Gobillon | Evaluating the law of one price using micro panel data: The case of the French fish market[END_REF][START_REF] Cojocaru | Where are the fish landed? An analysis of landing plants in Norway[END_REF][START_REF] Oglend | Futures market hedging efficiency in a new futures exchange: Effects of trade partner diversification[END_REF]Straume et al., 2020a;), or attributes associated with the sustainability of the harvesting process such as gear or vessel type and ecolabels [START_REF] Asche | Economic incentives to target species and fish size: Prices and fine scale product attributes in Norwegian fisheries[END_REF][START_REF] Blomquist | Price premiums for providing eco-labelled seafood : Evidence from MSC-certified cod in Sweden[END_REF][START_REF] Blomquist | Price premiums for eco-labelled seafood: Effects of the MSC certification suspension in the Baltic Sea cod fishery[END_REF].

These are challenges for auction markets that require standardization to work (Martinez- Garmendia and Anderson, 1999). If the premiums have a stable relationship to the listed price, this creates the opportunity for cross-hedging (Girma and Paulsson, 1999) and can facilitate highly efficient markets even when bilateral transactions are important [START_REF] Oglend | Estimating pricing rigidities in bilateral transactions markets[END_REF]. Also, if the premiums associated to attributes are stable, then a reference price for the product potentially operates more efficiently to guide production/marketing decisions and hedging because adjustments to the reference price can easily be made to make it conform to heterogeneity.

Over-the-counter transactions (OTC) between buyers and sellers, where the price is set in bilateral negotiations between the buyer and seller, appear to be the most common sales mechanism for seafood [START_REF] Anderson | Globalization and commoditization: The transformation of the seafood market[END_REF][START_REF] Oglend | Estimating pricing rigidities in bilateral transactions markets[END_REF], but there are also a significant number of auctions at different levels in the supply chain from the landings level [START_REF] Kristofersson | Efficient estimation of hedonic inverse input demand systems[END_REF][START_REF] Gobillon | The effect of buyers and sellers on fish market prices[END_REF] to down-stream wholesale markets [START_REF] Graddy | Markets: The Fulton fish market[END_REF][START_REF] Asche | The importance of fishing method, gear and origin: The Spanish hake market[END_REF]. While it is mandatory to use these auctions in some cases [START_REF] Sogn-Grundvåg | Large buyers at a fish auction: The case of the Norwegian pelagic auction[END_REF], in most cases market participants can chose between these transaction forms if an auction exists, although this is a feature that has not received attention in the literature. In many settings, an auction will be the most efficient transaction mechanism if products can be sufficiently standardized. However, it limits the degree of coordination that can be obtained between buyers and sellers and prevents relation specific investments [START_REF] Kvaløy | Cost structure and vertical integration between farming and processing[END_REF], suggesting that for some supply chains other transaction mechanisms may be more efficient. [START_REF] Asche | Perish or prosper: Trade patterns for highly perishable seafood products[END_REF] indicate that this may be the case for fresh seafood due to its high degree of perishability.

The ex. vessel seafood market in Atlantic France is highly integrated, but segmented from the Mediterranean market [START_REF] Gobillon | Evaluating the law of one price using micro panel data: The case of the French fish market[END_REF]. The market handles only domestic fish that is sold as fresh never frozen, a product form that in general is the most valuable (Straume et al., 2020b), but also highly perishable. Hence, the market is segmented from, but not independent of imports of similar species. Electronic auctions facilitate a common price determination process for various species across locations, but there is also large heterogeneity in terms of species, sizes and other product attributes as well as various types of sellers (vessels) and buyers. In addition, the auction is complemented by an OTC market.

In our data set, 21.1% of the quantity and 12.4% of the total transaction value are over-thecounter. Hence, the OTC transaction is a far from trivial quantity and it seems to be strongly correlated with unit value. The OTC share varies significantly by species from 55% for pilchard to 0.3% for Norway Lobster, and the share is increasing over time for most species.

The purpose of this paper is to investigate the influence of transaction mode on fish prices. Specifically, we analyze price differences between OTC and auction markets using unique data on fish transactions in France and estimation of hedonic price equations. This is of empirical interest since the theory does not provide any guidance with respect to the impact of the transaction mode on the potential premium [START_REF] Kvaløy | Cost structure and vertical integration between farming and processing[END_REF][START_REF] Mignot | An agent based model of switching: The case of Boulogne sur Mer fish market[END_REF]. Where in the supply chain coordination advantages or scale economies exist is likely to be important if there is any premium associated with transaction mode, as a shift of transaction mode has to be beneficial to both parties to occur for voluntary transactions. A main feature of our empirical analysis is that contrary to previous studies we are able to account for a rich set of attributes such as fish characteristics, size of the market lot, market locations, buyer and seller heterogeneity when investigating the impact of transaction form.

Following previous studies [START_REF] Mcconnell | Hedonic prices for fish: Tuna prices in Hawaii[END_REF]Kristofersson andRickertsen, 2004, 2007;[START_REF] Asche | The importance of fishing method, gear and origin: The Spanish hake market[END_REF][START_REF] Lee | Hedonic pricing of Atlantic Cod: Effects of size, freshness, and gear[END_REF][START_REF] Hukom | A hedonic price study on warm-and cold-water shrimp in danish retail sale[END_REF], we rely on hedonic price regressions to investigate the influence of the various attributes. According to the seminal contribution of [START_REF] Rosen | Hedonic prices and implicit markets: Product differentiation in pure competition[END_REF], each product is characterized by a set of attributes that determines the unit price. In equilibrium, the marginal price of each attribute can be evaluated by regressing the unit price on the set of attributes. The transaction method is one such attribute. As different products may be sold at auction and OTC, a central issue is to account for those composition effects related to fish species as well as different combinations of size, presentation and quality for each species. Furthermore, it is important to account for heterogeneity of buyers and sellers. For instance, sellers can differ in their marginal cost and buyers can differ in their willingness to pay for different products. Finally, fish prices may also be influenced by local conditions in supply and demand. Contrary to most previous studies which have analyzed the formation of fish prices on a specific location [START_REF] Graddy | Testing for imperfect competition at the Fulton fish market[END_REF][START_REF] Härdle | Nonclassical demand: A model-free examination of price quantity relations in the Marseille fish market[END_REF][START_REF] Gallegati | What's that got to do with the price of fish ? Buyers behavior on the Ancona fish market[END_REF][START_REF] Vignes | Price formation on the Marseille fish market: Evidence from a network analysis[END_REF], we consider a unique exhaustive dataset comprising all fish transactions achieved on the Atlantic coast in France between 2010 and 2018. Our sample includes nearly 40 million transactions for 29 different regional markets. In our regressions, we control for fish characteristics using a flexible specification such that each combination of fish species, presentation, size and quality defines a unique fish product. We also control for quantity of the fish lot, day of the week, a monthly time trend and local fish market effects. Furthermore, we account for time-invariant unobserved heterogeneity of both buyers and sellers using a fixed effect framework. Our high-order fixed effect model is estimated using an iterative demeaning process [START_REF] Rios-Avila | Feasible fitting of linear models with N fixed effects[END_REF].

Our results show that the price differential between OTC and auction transactions is limited, albeit statistically significant, once composition effects are controlled for. Selling through OTC gives rise to a lower price on the market compared to selling at auctions (-1.7%). As the choice of the transaction method may be endogenous, we investigate the possibility that selection issues do not bias our results. In the context of fish markets, we argue that the existence of unobservable variables remains unlikely once we account for fish product, local market, buyer and seller fixed effects. All this information is known and buyers have the detailed characteristics of the fish products before their purchase. Still, these are not the same products which are sold either through OTC or at auction, in particulars with respect to the size of the fish lots. We thus turn to an exact matching procedure and obtain a matched sample of around 1.4 million transactions. We find a very low price gap as the price is 1.8% lower on average for OTC sales with perfectly comparable product characteristics and quantity for OTC and auction transactions.

Given the large sample size and the fact that we control for a rich set of both observed attributes and unobserved characteristics related to local markets, buyers and sellers, we are confident that our results rule out the possibility of no difference between OTC and auction fish prices. We argue that the two sale methods co-exist for fish markets precisely because the price differential is very small, but that each transaction mode provides different transaction services to different needs. The OTC versus auction decision is thus not a factor leading to deviation from a common price determination process. Our contribution provides new results on an issue which has not been investigated so far. Three studies have focused on the case of the French fish market of Boulogne-sur-Mer where buyers and sellers can either choose to exchange through auctions or through bilateral transactions. [START_REF] Mignot | An agent based model of switching: The case of Boulogne sur Mer fish market[END_REF] and [START_REF] Mignot | Enchérir ou négocier : quelle forme préférable de marché ?[END_REF] simulate an agent-based model with limited rationality to explain the frequent switching of agents from one market to the other. Drawing on the literature about mutualistic ecosystems, [START_REF] Hernandez | Trust or robustness? An ecological approach to the study of auction and bilateral markets[END_REF] investigate the role of social interactions on auction versus bilateral markets.

The rest of this article is organized as follows. In Section 2, we present the transaction data and comment summary statistics for both sale prices, fish species sold and quantities by type of sale method. Section 3 describes our econometric strategy which relies on the estimation of hedonic price functions with fixed effects for both the fish products sold and the agents involved in the transactions, both buyers and sellers. Section 4 discusses the econometric results both for all transactions and for the main species sold. Further, it shows the robustness of the results obtained when controlling for the endogeneity of the sale method using an exact matching procedure. Finally, section 5 proposes an interpretation of the results and concludes.

Data and descriptive statistics

Our empirical analysis is based on transaction data collected by FranceAgriMer in the framework of the so-called Réseau Inter Criées (the network of French fish markets, RIC hereafter) on the Atlantic coast 1 . The data are exhaustive since each transaction, whether over-the-counter (OTC) or by auction, is recorded by the RIC. As such, the data covers the landings by all vessels from small coastal vessels fishing with hand and line to large trawlers, 2 as well as all types of buyers from small independent restaurants and fish mongers to large wholesalers and industrial buyers. We use the data from 2010 to 2018, as it is only from 2010 onwards that the data includes both buyer and seller identifiers. The data include the following variables for each lot: quantity and value from which we calculate the price per kilo, date of sale (at the daily level), place of sale (fish market), seller (vessel) and buyer 1 FranceAgriMer is a paying agency, recognized by the public authorities, local authorities and professionals in the agricultural, agri-food and fisheries sectors, for the management of both European and national aid. See https://www.franceagrimer.fr/. 2 The French Atlantic fishing fleet consist of a large variety of vessels from a large number small coastal vessels to a handful of large trawlers of more than 40m. They fish a large number of species, where the most important ones are regulated with a quota. identifiers, along with detailed characteristics of the fish sold in the lot: species, size, presentation (gutted, whole, etc.) and quality (with three different grades).

The complete sample of transactions over the whole period comprises 40.2 million transactions. The following selections were applied to this sample. First, we excluded lots for which the identity of the buyer was not known (about 113,000 observations). Second, we eliminated data from five fish markets which closed over the period: relatively few lots sold were sold in these markets before they closed (about 168,000 transactions deleted). Third, in order to avoid outliers on prices, we eliminated the 0.01% of the transactions with the lowest and highest prices per kilo, respectively (nearly 8,000 transactions deleted).

We provide an overview of the number of transactions by year and transaction mode in Table 1. Over the period 2010-2018, the number of transactions amounted to nearly 40 million lots sold either by auction or over-the-counter, for a total value of 5 billion euros and a total quantity fished of 1.54 billion tonnes. This corresponds to an average price per kilo of 3.3 euros. A comparison of the two sales methods reveals several important differences.

While OTC sales represent a very small proportion of transactions over the period (3.8%), they account for 12.4% of the total value sold (631.4 million euros) and 21.1% of the total volume (323.8 million tonnes). Due to these differences in value and quantity, the average price per kilo is therefore very different on the two types of markets: 2.0 euros for OTC and 3.7 euros for auctions (corresponding to a gap of +185.0%).

Insert Table 1 here

The respective contributions of OTC and auction sales have changed over the period. On the one hand, the proportion of OTC transactions in the fish market remained relatively stable over the whole period, ranging between 3.1% (in 2014) and 4.4% (in 2015). On the other hand, OTC transactions have become increasingly important in the market both in terms of value and volume. For example, OTC sales accounted for around 8% of the total value of sales from 2010 to 2013, compared with around 17% from 2015, and the volume of sales which was around 14% in 2010 rose to 30.5% in 2018. By comparison, the ratio of average prices of OTC and auction sales changed relatively little over the period, with a minimum of 173.7% in 2012 and a maximum of 222.1% in 2018 (but also 211.8% in 2014).

Table 2 shows large differences in the relative importance of sales types by fish markets (ranked in descending order of sales value). Among the five most important fish markets in terms of value over the period, OTC sales are most important in two: Boulogne (BL) where 52.9% is OTC sales and Lorient (LO) with 24.8%. Conversely, Le Guilvinec (GV), Les Sables (LS) and Erquy (EQ) are fish markets where OTC sales represent less than 5% of sales. The average difference in price per kilo between auctions and OTC sales, which is +1.7 euros for all the transactions, varies substantially depending on the location of sale. It is relatively lower in the largest fish markets in terms of value (+0.7 euro in Le Guilvinec, same price in Boulogne, +1 euro in Lorient) 3 . The correlation between the OTC versus auction price gap and the relative importance of OTC transactions is also negative, equal to -0.37. In some fish markets, the price differential exceeds 3 euros, for example in Audierne (AD, +4.1 euros), Quiberon (QB, +3.7 euros) or Concarneau (CC, +3.4 euros).

Insert Table 2 here Over the entire period, more than one half of total sales (51.0%) involved seven species.

These species are monkfish (11.3%), sole (10.8%), seabass (6.6%), Norway lobster (6.3%), scallops (5.6%), hake (5.6%) and squid (4.9%). According to Table 3, the price differential between auctions and over-the-counter sales varies quite significantly depending on the fish species. For instance, it exceeds 2 euros for some high-value species like sole (+2.1 euros per kilo), sea bass (+2.3 euros), Norway lobster (+2.1 euros) or turbot (+3 euros). Conversely, the price differential is almost zero for hake or scallops and even negative for squid (-0.4 euro), haddock (-0.2 euro) and megrim (-0.4 euro).

Insert Table 3 here 3 The coefficient of correlation between the sales value and the price gap between OTC and auction transactions is equal to -0.545 (statistically significant at the one percent level).

Several variables are expected to explain the average price differential per kilo in general as well as between auction and OTC sales. When considering all fish species, species composition will play an important role. For OTC sales, the five most important species by value are hake (15.3%), scallops (9.3%), sole (7.0%), monkfish (6.8%) and pilchard (6.0%). For auction sales, the five most important species by value are monkfish (11.9%), sole (11.3%), seabass (7.2%), Norway lobster (7.2%) and scallops (5.1%). Since auction sales concern fish characterized by a higher price per kilo on average, then the overall average price will be significantly higher for this type of sale. In order to account for such composition effect, we calculate a corrected average price for OTC sales by using quantities per species sold at auction as weights. The average price per kilo obtained is then equal to 3.3 euros. This means that a large part of the difference between the average auction price (3.7 euros) and the average OTC price (2.0 euros) observed in Table 2 is due to the fact that a larger share of the higher priced species is sold at the auction.

Another variable that may explain the difference in average prices between OTC and auction sales is the size of lots sold. According to the data, the quantity per lot is much higher for OTC sales than for auction sales (211.4 kilos per fish lot against 31.7 kilos). Figure 1 shows the distribution of quantities per lot. For lots sold at auction, 44.5% concern lots whose weight does not exceed 10 kilos and 31.3% lots whose weight ranges between 10 and 25 kilos. By comparison, approximately 20% of OTC transactions are below 10 kilos and 20% are between 10 and 25 kilos. At the same time, lots weighting more than 500 kilos represent 9.1% of OTC transactions and 0.4% for auction transactions. These differences in the size of the lots contribute to explain the lower average price observed for OTC sales, given the expected decreasing relationship between the quantity of the lot and the price per kilo.

Insert Figure 1 here Overall, these descriptive statistics reveal that prices are about -1.7 euro per kilo lower in OTC transactions compared to auction transactions. This difference appears largely to be due to the fact that sales on the two markets do not concern fish species in the same proportions and that the quantities of the lots differ. It is also likely that other characteristics of the fish lots sold such as size, quality or presentation may have an influence. Furthermore, different buyers and sellers may operate in the two markets. In the next section, we present an empirical framework which allows us to control for the influence of those different variables when explaining fish prices.

Econometric framework

We rely on an econometric framework to assess whether there exists any difference in price between fish sold either through auction markets or over-the-counter. Over the last years, a number of studies have estimated hedonic price equations à la [START_REF] Rosen | Hedonic prices and implicit markets: Product differentiation in pure competition[END_REF] to show how different product attributes influence fish prices4 . In such studies, the fish price is explained as a function of fish observable characteristics like presentation, size or quality as well as heterogeneity terms associated to buyers and/or sellers using fixed effect models. In this paper, we follow a similar approach by estimating hedonic price equations but explain why the estimation of fixed effect models through the standard within transformation is not suitable in our context due to the dimensionality of our data.

For the formal presentation, let be the log of the price of a fish lot . Each lot includes fish corresponding to a unique combination of species, presentation, size and quality. We define the dummy variable such that = 1 for a transaction sold over-the-counter and = 0 for a transaction sold at auction. We are interested in assessing the effect of on the dependent variable . Without any control variables, the difference in means between ln and ln corresponds to the coefficient of the linear regression = * + where is an error term with = 0.

In general, one would expect agents to be indifferent with transaction mode, but chose the one which give the highest price [START_REF] Mignot | An agent based model of switching: The case of Boulogne sur Mer fish market[END_REF]. Hence, if there are price differences due to transaction mode, there have to be advantages that are not otherwise observed in the data that occur to at least one of the parties, and in most cases will be shared between them as in the case of relationship specific investments [START_REF] Kvaløy | Cost structure and vertical integration between farming and processing[END_REF]. If the auction price is higher than the OTC price, one would therefore expect that the advantage with using the OTC market will occur up-streams and vice versa. We account for the following explanatory variables when turning to the data.

First, we consider a very flexible specification for the fish characteristics. Contrary to previous studies which account for presentation, size, and quality as separate covariates (see for instance [START_REF] Gobillon | The effect of buyers and sellers on fish market prices[END_REF], we treat each combination of fish species, presentation, size and quality as a unique fish product denoted by , with 1, … , ℱ#. In doing so, we allow for different effects of the presentation-size-quality combination on prices by fish species. A second covariate relates to the quantity of the fish lot ln $ . Here, we treat quantity of the lot as exogenous as it is pre-determined by the catch: it depends on the characteristics and quantity of each species caught.

Second, we account for the role of time in two ways. On the one hand, we include a set of dummy variables related to the day of the week % as it may pick up some influence of preferences for fish consumption, with % 1, … , &#. For instance, fish prices may be higher in the second part of the week if consumers tend to purchase and consume more fish on

Friday or during the week-end [START_REF] Bell | The Pope and the price of fish[END_REF]). On the other hand, prices may vary over time because of changes in supply and demand. In particular, we expect fish prices to decrease for species fished more intensively during specific seasons (higher supply), but at the same time a lower stock of fish due to an excessive fishing effort should give rise to higher prices.

Also, the demand for high-quality fish is expected to increase during periods like Easter or Christmas holidays. Again, we rely on a very flexible specification by adding a monthly time trend, with the time unit ' corresponding to a year-month combination5 .

Third, we control for the location where the transaction (auction or OTC) takes place. Each fish market is denoted by (, with ( 1, … , ℳ#. On the one hand, the market fixed effects are expected to pick up spatial frictions dues to distance [START_REF] Gobillon | Evaluating the law of one price using micro panel data: The case of the French fish market[END_REF]. While buyers have access to both nearby markets and more distant markets through remote bidding, they have to target a subset of markets where they buy fish in order to avoid excessive transportation costs. On the other hand, the heterogeneity term ( controls for potential differences in transaction costs between markets (under the assumption that those transactions costs are time-invariant). This will concern difference in auction fees, for instance, whose rate may vary by location.

Fourth, we assume that the characteristics of buyers and sellers affect fish prices. For instance, prices may vary depending on where vessels catch fish (either near or far from the coasts) or according to the type of fish engine even after controlling for fish quality. In the same vein, the purchase behaviors are expected to differ between local and more distant buyers as well as between small fishermen and wholesalers. We denote by * and + the buyer and the seller involved in a given transaction, with * 1, … , ℬ# and -1, … , .#. As we only know the identifiers of buyers and sellers in our dataset, we account for time-invariant unobserved heterogeneity of both agents using a fixed effect framework. A first specification is to account for both * and + using the additive form * + +. A second specification is to consider the matched heterogeneity *+ for each buyer-seller combination /*, +0. As discussed in [START_REF] Gobillon | The effect of buyers and sellers on fish market prices[END_REF], the term *+ may be seen as the sum of a buyer effect, a seller effect and a pure matched effect corresponding to the specific buyer-seller association.

With distinct buyer and seller fixed effects (meaning that there is no potential influence of the matched interaction), the model we seek to estimate is 6 :

ln = * + 1 ln $ + + % + ' + ( + * + + + (1)
where , % , ' , ( , * and + are fixed effects associated to fish product, day of the week, year-month combination, fish market, buyer and seller, and 1 are parameters to estimate, and is the residual with = 0. Stated differently, each transaction can be expressed as a function of the form / , %, ', (, *, +0 and equation (1) defines a panel data model with six different fixed effects. It is well known that a fixed effect model may be estimated either by adding dummy variables for each fixed effect or using a within transformation 6 With matched fixed effects, the model is ln = * + 1 ln $ + + % + ' + ( + *+ + . [START_REF] Wooldridge | Econometric analysis of cross section and panel data[END_REF]. Let us briefly investigate the relevance of those approaches in our context.

Adding dummy variables for the days of the week or the fish markets is straightforward to implement due to the small number of values for % (6 dummies as there is no sale on Sunday) or ( (29 fish markets). However, the least squares estimation with dummy variables is problematic for either fish products (2274 combinations), buyers * (N=2231)

or sellers + (N=3775). Estimating a model with nearly 40 million observations and more than 8,000 covariates is clearly not tractable. On the other hand, the within transformation is not always possible when there are multiple high-order fixed effects. This is in particular due to the lack of patterning between fixed effect units [START_REF] Abowd | High wage workers and high wage firms[END_REF][START_REF] Andrews | Practical fixed-effects estimation methods for the three-way error-components model[END_REF].

For instance, in our setting buyer dummies are un-patterned when the data are sorted by sellers and seller dummies are un-patterned when the data are sorted by buyers, so that all the fixed effects can never be simultaneously swept out using the within transformation.

Recently, empirical strategies have been suggested to estimate such high-order fixed effect models [START_REF] Guimarães | A simple feasible procedure to fit models with highdimensional fixed effects[END_REF][START_REF] Gaure | OLS with multiple high dimensional category variables[END_REF]. Here, we rely on the iterative approach described in Rios-Avila (2015) which is based on an iterative demeaning process7 .

We briefly explain how it applies to models with many high-dimension fixed effects. For that purpose, we rewrite equation (1) as:

ln = 23 + ∑ ℋ 6 6 + (2)
with ℋ 6 a set of distinct fixed effects and 7 1, … , 8#. In (2), both ln and 2 are measured as deviations from their sample means. For each 7, we calculate the means with respect to each fixed effect ℋ 6 such that /ln 0

In ( 3), the main result is that the fixed effects ℋ 6 which cannot be estimated due the dimensionality issue have been eliminated. However, there is still some heterogeneity coming from the averaged fixed effects @ ?,6• . The key issue here is that the variation of heterogeneity due to the terms ℋ ?,6• is lower than the variation of heterogeneity due to the fixed effects ℋ ?,6• (see Rios-Avila, 2015, Appendix A). Thus the next step is to repeat the previous transformation by calculating /ln -∑ /ln 0 6• 6 0 6• , so that each heterogeneity term will be demeaned one again. By repeating this demeaning process, the influence of the averaged fixed effects converges progressively to zero and this is also the case for their variance. It follows that even with high-dimension fixed effects, the model ( 2) can be estimated by Ordinary Least Squares to obtain an unbiased vector of coefficient for 3, although the computational time is important.

In such fixed effect models, identification depends on mobility of agents between groups [START_REF] Abowd | High wage workers and high wage firms[END_REF][START_REF] Andrews | Practical fixed-effects estimation methods for the three-way error-components model[END_REF][START_REF] Rios-Avila | Feasible fitting of linear models with N fixed effects[END_REF]. In the context of fish markets, vessels are well interconnected with buyers as the latter purchase fish from different sellers (see [START_REF] Gobillon | Evaluating the law of one price using micro panel data: The case of the French fish market[END_REF], for further evidence). A final concern is about standard errors, without any consensus in the literature on hedonic equations explaining fish prices.

For instance, Fluvia et al. ( 2012) and [START_REF] Gobillon | The effect of buyers and sellers on fish market prices[END_REF] consider uncorrected standard errors from fixed effect regressions, while [START_REF] Gobillon | Evaluating the law of one price using micro panel data: The case of the French fish market[END_REF] report standard errors clustered by fish market and month. In our analysis, we turn to a conservative approach and decide to cluster standard errors at the day-fish market level.

Empirical results

In Table 4, we report the results of linear regressions for the whole sample pooling all fish species. In column 1, only the variable indicating the sale mode (OTC versus auction) is included as covariate. The results show a negative correlation between the average price and the OTC sale. On average, the price is (exp(-0.474)-1)*100=-37.7% lower for OTC sales.

The size of lots sold plays an important role in explaining fish prices. As shown in column 2, higher prices per kilo are observed for smaller lots. Also, we find that controlling for lot size strongly reduces the marginal effect of OTC sales (the OTC coefficient is divided by around three). The fact that the characteristics of the fish sold on the two markets may differ is taken into account in the estimates reported in column 3. The heterogeneity of the fish sold is controlled for at the finest possible level which corresponds to the species-sizepresentation-quality combinations. The price differential between the two modes of sales is then reduced very sharply since it is now equal to -1.1%. The explanatory power of the regression increases sharply since 81.6% of the price variations are explained by the characteristics of the fish, time effects and local market effects. The price paid may also be affected by the intensity of the relationship between buyers and sellers. In column 4, we introduce the number of days with interactions before the current purchase which can be seen as a proxy for long-term relationship. There is a positive correlation between this indicator and the logarithm of fish price, but this additional control has no impact on the magnitude of the OTC coefficient.

Insert Table 4 here

Another potentially important dimension of heterogeneity is that buyers and sellers involved in OTCT and auction transactions may have different characteristics. For instance, if there are more buyers with strong willingness to pay in auction markets, such as wholesalers who have to supply restaurants with the best quality and most valuable species, then prices should be higher on average for auction sales than for OTC sales. To account for this composition effect, the estimates reported in columns 5 and 6 include separate fixed effects for buyers and sellers and matched buyer-seller fixed effects, respectively. As expected, the R² of the model with matched buyer-seller fixed effects is slightly higher than that of the model with two series of fixed effects (0.847 instead of 0.838). In both cases, selling through OTC gives rise to a lower price in the market compared to selling through auctions.

Nevertheless, the price differential remains of small magnitude: -1.4% with separate buyer and seller fixed effects and -1.7% with matched buyer-seller effects.

Table 5 measures the extent to which the effect of OTC sales varies by species. In each regression, we include the quantity of the fish lot and the number of days with interactions before purchase. In Panel A, only fixed effects corresponding to time, fish characteristics and local markets are included in the regressions. While the coefficient associated with OTC sales is always significant, its value varies widely depending on the species: it is negative for six species (monkfish, Norway lobsters, scallops, squid, cuttlefish, whiting), positive for three species (seabass, hake, John Dory) and insignificant for sole. In panel B, matched buyer-seller fixed effects are introduced. The results show the importance of taking into account the heterogeneity of buyers and sellers since the effect of OTC sales is now negative for 9 out of 10 species (hake being the only exception). The marginal effect of OTC varies from -4.4% for Norway lobster to -0.7% for monkfish and seabass. However, it is difficult to find any correlation between the effect of OTC sales and the average price of species. For example, sole, seabass, Norway lobster and John Dory are all sold on average between 10 and 12 euros per kilo, but the effect of OTC sales varies widely for those four fish species (ranging between -4.4% and -0.7%).

Insert Table 5 At this stage, our results show that fish lots are slightly less valued when sales are made over the counter rather than by auction. Nevertheless, the difference between the two types of sales remains low and does not exceed 2% when all species are taken into account. A central point in the above estimates is that the choice of selling method is assumed to be exogenous. However, this assumption may not be verified if some vessels systematically prefer to negotiate the sale of their lots with certain buyers, for example to secure a certain level of revenue. In other words, there is the question of possible endogenous selection in the choice of one or other sale method, which would bias (either upwards or downwards) the coefficient associated with OTC sales.

A first source of selection is related to the fact that the characteristics of the lots sold on the two markets are not identical. While our previous regressions precisely control for fish species, size, presentation, quality and quantity, it is possible that the effect of OTC sales is biased by very different lot sizes, for instance because some very large OTC lots are never offered on auction markets. This selection based on observables can be taken into account using matching methods that we will detail below. A second source of selection is related to the existence of unobservable variables (confounders).

In our context, two sets of variables are likely to influence the choice of whether to sell either over-the-counter or by auction. The first one concerns the actual characteristics of the sale: location, date and characteristics of the good sold. All this information is known and registered in our dataset, including the detailed characteristics of the fish that are officially recorded in the RIC dataset 8 . The second one concerns the characteristics of the buyers and sellers. Here, heterogeneity related to buyers and sellers is controlled for in a general way using fixed effects (either using an additive specification or using a matched buyer-seller fixed effect). This means that there is no bias in omitted variables that would come from agents' strategic behavior. Furthermore, information on fish offered for sale is known. This is important as it allows buyers to position themselves on the specific lots they wish to buy.

In order to measure the effect of OTC versus auction sales on comparable lots of fish, we turn to an exact matching procedure. For each OTC transaction, we investigate whether there is one transaction sold at auction with exactly the same observable characteristics. In such matching procedure, the choice of variables under consideration to match control and treated units is crucial. For example, if we try to find for each OTC transaction a transaction involving the same agents at the same date with the same good sold (defined as a specific species-size-presentation-quality combination) and the same quantity, then it will be almost impossible to find such counterfactual transactions. The procedure we use is therefore as follows.

First, we select the subsample of OTC transactions (treated group) which includes 1,531,645 observations. Each transaction is characterized by three variables: calendar day of sale, type of fish sold defined as a species-size-presentation-quality combination, and quantity which 8 Across fish markets, there are specific forms specifying the size categories for each species. The same applies to quality, for which there are directories allowing quality to be assessed on the basis of objective criteria with photographic illustrations. See for example http://www.normandiefraicheurmer.fr/media/repertoire_qualite_nfm__005957700_0830_08012013.pdf.

we discretize into ten categories9 . Second, the same variables are constructed for auction transactions (control group) and this subsample includes 38,284,488 observations. Third, transactions from the treated and control groups are matched on the basis of the three previous variables (calendar day, type of fish, quantity of the lot in categories). The matching procedure leads to a sample comprising 1,370,153 observations. Of the 1,531,645 OTC transactions, 746,103 of them (54.5%) have at least one counterfactual transaction10 . When there are multiple counterfactuals for a given OTC transaction, a weight corresponding to the inverse of the number of counterfactuals is assigned to each counterfactual.

The regression results on the matched OTC-auction sample are presented in Table 6. We estimate four sets of regressions, based on the matching criterion for the quantity differential between OTC and counterfactual auction transactions: matching on the ten quantity categories (panel A), matching on quantity categories and exclusion of matches with a difference exceeding 25 kilos (panel B), exclusion of matches with a difference exceeding 5 kilos (panel C), and perfect matching on the continuous quantity (panel D) 11 . As shown in Table 6, the more restrictive the conditions imposed for matching, the lower the number of matched transactions becomes: from 1,352,153 transactions for matching on ordered categories of quantity to 136,089 transactions for exact matching on continuous quantity. For each regression, we introduce as control variable the exact quantity of the lot and account for unobserved heterogeneity at the buyer-seller level by including fixed effects.

For all species, OTC sales result in a lower average price for fish on average. While the effect is highly significant, the estimated coefficient for OTC sales is nevertheless very low. It is around -0.8% when matching is based on ordered categories of quality (panel A). Defining different levels for the gap in quantity between treated and control lots has little impact (panels B and C). When there is exact matching on continuous quantity, then the effect is twice as high and the price is 1.8% lower on average for OTC sales (panel D). Interestingly, this is exactly the order of magnitude which was previously obtained for the linear regression without matching (column 4, Table 4). For the fish-specific regressions, the results are more heterogeneous. The effect of OTC is negative mainly for monkfish, Norway lobster, scallops, squid, cuttlefish and whiting. With perfect matching on quantity, the effect of OTC sales (panel D) remains limited and varies between -3.9% (cuttlefish) and 2.7% (hake).

Insert Table 6

Concluding remarks

Most food markets are characterized by significant heterogeneity as product characteristics, buyers, sellers and market arenas vary. A number of food products are sold at competing market places from organized markets to different types of bilateral OTC transactions. This is true despite the fact that there may be differences in obtained sales prices and transaction costs associated with the different market channels, suggesting that heterogeneity associated with the good itself, with buyers or sellers can make different sales methods preferable under various circumstances. In this paper, we investigated the effect of the sales mode on fish prices net of the influence of various sources of heterogeneity using a sample of 40 million transactions completed in Atlantic France between 2010 and 2018.

A comparison of average prices without controlling for any heterogeneity shows that the average price per kilo is 3.7 euros for auctions and 2.0 euros for over-the-counter sales, i.e. there is a price gap of 185%. When controlling for heterogeneity related to species, lot size, time, buyers and sellers, this difference is reduced to 1.7% and it is further reduced to about 0.8% with exact matching. Albeit of small magnitude, the discount is always statistically significant. As we are able to control for all fish attributes and unobserved heterogeneity both at the local market, buyer and seller level, we are confident that our findings allow us to reject the null assumption of no difference between OTC and auction prices. Our results suggest that there are cost advantages up-streams that some fishers are willing to share with the buyers. One possible explanation is the costs associated with participating at the auction. Buyers and sellers have to pay fees which are proportional to either the quantity or the sale value through the auction, while the fee is most often fixed with a bilateral transaction.

The fact that some species on average obtain a higher price when sold OTC suggest that there are also other factors that are important. There is no clear association between price level for a species and the share of their sales that is sold OTC, but lot size is important.

While a higher share of large lots is sold OTC, virtually all small lots are sold at the auction.

This may be explained by the scale element in transaction costs that favors OTC sales, and additionally sellers may prefer to secure the transaction with specific buyers (presumably risk adverse) to avoid uncertainty related to the auction mechanism. Conversely, small volumes of fish sold through auctions can concern either poor catches as well as nontargeted species for which it is harder to attract buyers, or high quality and rare seafood products that will be purchased by high class restaurants and affluent consumers in small quantities.

Overall, the results are interesting in that they show that there is on average a positive price premium associated with sales at the auctions, but that the premium largely disappears (although remaining statistically significant) when different types of heterogeneity are accounted for. This may not be too surprising given that the two types of sales co-exist. Only one type of transactions should have remained if fish was much higher valued by either auction or OTC. As they stand, our results indicate that there is heterogeneity by product, buyer or seller attributes that systematically influences which transaction method gives lowest transaction costs. This suggests that more than one transaction method may increase value creation by better allocating products between buyers and sellers. Note: Estimates from fixed effect regressions. Standard errors clustered at the day-fish market level are in parentheses. Significance levels are 1% (***), 5% (**) and 10% (*). OTCT = over-the-counter transactions. Note: Estimates from fixed effect regressions. Standard errors clustered at the day-fish market level are in parentheses. Significance levels are 1% (***), 5% (**) and 10% (*). Each regression also includes the number of days with interactions before purchase. OTCT = over-the-counter transactions; MNZ = Monkfish ; SOL = Sole; BSS = Seabass; NEP = Norway lobster ; SCE = Great Atlantic scallop ; HKE = Hake ; SQZ = Squid; CTC = Cuttlefish ; WHG = Whiting ; JOD = John dory. Note: OTCT = over-the-counter transactions, Estimates from fixed effect regressions. Standard errors clustered at the day-fish market level are in parentheses. Significance levels are 1% (***), 5% (**) and 10% (*). Each regression also includes the number of days with interactions before purchase. MNZ = monkfish ; SOL = sole ; BSS = seabass ; NEP = Norway lobster ; HKE = hake ; SCE = scallop ; SQZ = squid ; CTC = cuttlefish ; WHG = whiting ; JOD = John Dory. The nine categories of fish quantity are : [0; 1[, [1;5[, [5;10[, [10;25[, [25-50[, [50;100[, [100;500[, [500;1000[, [1000+[.

Figure 1 .

 1 Figure 1. Distribution of quantities of fish lots (2010-2018)

Table 1 . Description of transactions (2010-2018)

 1

	Year	Number of transactions		Value (in million euros)		Quantity (in million tons)		Average price per kilo (in euros)
		All	OTCT	AMT	All	OTCT	AMT	All	OTCT	AMT	All	OTCT	AMT
	2010	4,175,459	163,765	4,011,694	498.0

Table 2 . Description of transactions, by fish market (2010-2018)

 2

	Fish market	Number of	Value (in	% of OTC in	Average price per kilo (in euros)
		transactions	million euros)	total value

Table 3 . Description of transactions, by fish species (top 20 2010-2018)

 3

	Fish species	Number of	Value (in	% of OTC in	Average price per kilo (in euros)
		transactions	million euros)	total value	All	OTCT	AMT

Table 4 . Estimates of the log fish price

 4

	Variables

Table 5 . Estimates of the log fish price, by fish species

 5

	Variables	(0) All	(1) MNZ	(2) SOL	(3) BSS	(4) NEP	(5) SCE	(6) HKE	(7) SQZ	(8) CTC	(9) WHG	(10) JOD
	Panel A. Without buyer-seller fixed
	effect
	OTCT	-0.012***	-0.025***	0.003	0.030***	-0.071***	-0.045***	0.141***	-0.029***	-0.020***	-0.012**	0.019***
		(0.002)	(0.003)	(0.003)	(0.005)	(0.013)	(0.003)	(0.008)	(0.004)	(0.005)	(0.006)	(0.005)
	Lot size (ln)	-0.067***	-0.008***	-0.018***	-0.027***	-0.111***	-0.076***	-0.123***	-0.052***	-0.013***	-0.042***	-0.018***
		(0.000)	(0.000)	(0.000)	(0.001)	(0.002)	(0.002)	(0.001)	(0.001)	(0.001)	(0.001)	(0.001)
	Fish product fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Fish market fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Time fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Buyer-seller fixed effect	NO	NO	NO	NO	NO	NO	NO	NO	NO	NO	NO
	Number of fish products	2274	60	34	18	23	3	38	30	52	28	24
	Number of fish markets	29	29	29	29	28	28	29	29	29	29	29
	Number of observations	39,816,133 2,322,729	3,250,370	2,350,058	2,247,476	576,231	2,984,725	1,332,551	1,240,218	1,707,130	791,780
	R²	0.816	0.722	0.644	0.696	0.679	0.605	0.451	0.629	0.541	0.557	0.573
	Panel B. With buyer-seller fixed effect
	OTCT	-0.017***	-0.007**	-0.011***	-0.007*	-0.045***	-0.038***	0.100***	-0.025***	-0.028***	-0.028***	-0.021***
		(0.002	(0.003)	(0.003)	(0.004)	(0.013)	(0.003)	(0.009)	(0.003)	(0.004)	(0.006)	(0.005)
	Lot size (ln)	-0.049***	-0.001**	-0.020***	-0.027***	-0.116***	-0.064***	-0.064***	-0.049***	-0.015***	-0.044***	-0.009***
		(0.000)	(0.001)	(0.000)	(0.001)	(0.002)	(0.001)	(0.001)	(0.001)	(0.001)	(0.001)	(0.001)
	Fish product fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Fish market fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Time fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Buyer-seller fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Number of fish products	2274	60	34	18	23	3	38	30	52	28	24
	Number of fish markets	29	29	29	29	28	28	29	29	29	29	29
	Number of buyer-seller pairs	373,301	373,117	373,134	373,064	372,641	373,299	372,722	373,134	373,060	373,064	373,063
	Number of observations	39,816,133 2,322,729	3,250,370	2,350,058	2,247,476	576,231	2,984,725	1,332,551	1,240,218	1,707,130	791,780
	R²	0.847	0.782	0.716	0.795	0.737	0.739	0.627	0.737	0.686	0.717	0.717
	Source: author's calculations, RIC data 1994-2017.

Table 6 . Estimates of the log fish price after exact matching, by fish species

 6 Exact matching on day of sale, fish characteristics, fish market, quantity category -gap in quantity : ≤ 5 kilos

	Variables	(0) All	(1) MNZ	(2) SOL	(3) BSS	(4) NEP	(5) SCE	(6) HKE	(7) SQZ	(8) CTC	(9) WHG	(10) JOD
	Panel A. Exact matching on day of sale, fish characteristics, fish market, quantity category
	OTCT	-0.008***	-0.027***	0.009***	0.007***	-0.053***	-0.036***	0.061***	-0.013***	-0.019***	-0.018***	-0.008
		(0.001)	(0.003)	(0.001)	(0.002)	(0.016)	(0.003)	(0.008)	(0.002)	(0.003)	(0.002)	(0.007)
	Lot size (ln)	-0.228***	0.012***	-0.066***	-0.080***	-0.141***	-0.042***	-0.042***	-0.063***	-0.031***	-0.145***	0.002
		(0.003)	(0.003)	(0.003)	(0.003)	(0.033)	(0.003)	(0.007)	(0.004)	(0.003)	(0.004)	(0.008)
	Buyer-seller fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Number of observations	2,740,306	185,410	207,224	111,028	50,680	218,500	99,170	123,408	40,596	179,108	24,446
	R²	0.411	0.327	0.350	0.595	0.729	0.527	0.623	0.278	0.508	0.378	0.648
	Panel B. Exact matching on day of sale, fish characteristics, fish market, quantity category -gap in quantity : ≤ 25 kilos
	OTCT	-0.009***	-0.038***	0.010***	0.007***	-0.053***	-0.023***	0.057***	-0.015***	-0.024***	-0.015***	-0.008
		(0.001)	(0.003)	(0.001)	(0.002)	(0.016)	(0.003)	(0.009)	(0.002)	(0.003)	(0.003)	(0.007)
	Lot size (ln)	-0.247***	0.014***	-0.060***	-0.073***	-0.140***	-0.046***	-0.046***	-0.054***	-0.033***	-0.124***	0.002
		(0.003)	(0.004)	(0.003)	(0.004)	(0.034)	(0.003)	(0.008)	(0.004)	(0.004)	(0.005)	(0.008)
	Buyer-seller fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Number of observations	2,081,228	143,288	199,612	108,118	50,454	68,712	82,316	93,802	28,562	102,618	24,422
	R²	0.399	0.349	0.343	0.590	0.727	0.555	0.670	0.292	0.521	0.381	0.648
	Panel C. OTCT	-0.008***	-0.047***	0.011***	0.009***	-0.056***	-0.017***	0.087***	-0.019***	-0.030***	-0.010**	-0.007
		(0.001)	(0.004)	(0.001)	(0.003)	(0.017)	(0.002)	(0.010)	(0.002)	(0.004)	(0.004)	(0.007)
	Lot size (ln)	-0.270***	0.017***	-0.048***	-0.062***	-0.159***	-0.044***	-0.035***	-0.051***	-0.031***	-0.131***	0.005
		(0.003)	(0.005)	(0.003)	(0.004)	(0.037)	(0.004)	(0.009)	(0.004)	(0.005)	(0.006)	(0.009)
	Buyer-seller fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Number of observations	1,342,016	80,420	137,758	86,604	44,252	32,848	58,944	59,388	15,402	60,380	19,322
	R²	0.426	0.382	0.366	0.602	0.739	0.557	0.697	0.331	0.574	0.468	0.654
	Panel D. Exact matching on day of sale, fish characteristics, fish market, quantity category -gap in quantity : 0 kilo
	OTCT	-0.018***	0.016**	0.013***	-0.013***	-0.021	-0.014***	0.027**	-0.011***	-0.039***	-0.032***	0.025
		(0.002)	(0.007)	(0.003)	(0.004)	(0.017)	(0.003)	(0.013)	(0.002)	(0.007)	(0.004)	(0.023)
	Lot size (ln)	-0.243***	0.059***	-0.036***	-0.102***	-0.001	-0.042***	0.029	-0.055***	-0.021*	-0.148***	0.104
		(0.004)	(0.018)	(0.005)	(0.009)	(0.095)	(0.006)	(0.028)	(0.005)	(0.013)	(0.008)	(0.063)
	Buyer-seller fixed effect	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES	YES
	Number of observations	272,718	3,508	15,746	8,844	2,014	11,498	3,162	21,842	3,180	29,898	1,478
	R²	0.447	0.760	0.463	0.670	0.580	0.461	0.653	0.352	0.679	0.410	0.767
	Source: author's calculations, RIC data 1994-2017.

Some examples areMcConnel and Strand (2000),Carrol et al. (2001), Rickertsen and[START_REF] Kristofersson | Efficient estimation of hedonic inverse input demand systems[END_REF],[START_REF] Wolff | The firm's management in production: Management, firm, and time effects in an Indian Ocean tuna fishery[END_REF],[START_REF] Lee | Hedonic pricing of Atlantic Cod: Effects of size, freshness, and gear[END_REF],[START_REF] Asche | Economic incentives to target species and fish size: Prices and fine scale product attributes in Norwegian fisheries[END_REF],[START_REF] Blomquist | Price premiums for providing eco-labelled seafood : Evidence from MSC-certified cod in Sweden[END_REF] 2020),[START_REF] Gobillon | The effect of buyers and sellers on fish market prices[END_REF] and[START_REF] Pettersen | Hedonic price analysis of ex-vessel cod markets in Norway[END_REF].

The first month of the period is the reference category, so that the time trend obtained at the year-month level also includes the influence of seasonality over the calendar year.

[START_REF] Guimarães | A simple feasible procedure to fit models with highdimensional fixed effects[END_REF] propose an iterative procedure to solve the normal equations associated to the least squares estimator.

The categories are less than 1 kilo (1.1%), from 1 to less than 5 kilos (9.7%), from 5 to less than

kilos (10.7%), from 10 to less than 25 kilos (21.9%), from 25 to less than 50 kilos (13.3%), from 50 to less than 100 kilos (11.4%), from 100 to less than 200 kilos (10.2%), from 200 to less than 500 kilos (13.1%), from 500 to less than 1000 kilos (5.5%), and 1000 kilos and more (3.3%). Our results remain robust to the number of categories. 10 Of the 746,103 OTC transactions with at least one similarly processed transaction, 83.2% have exactly one counterfactual, 5.5% have two, 3.2% have 3, and 2.0% have 10 or more.

In each regression, we also include the number of days with interactions before purchase as control.